diff options
Diffstat (limited to 'PC')
-rw-r--r-- | PC/_msi.c | 12 | ||||
-rw-r--r-- | PC/_testconsole.c | 131 | ||||
-rw-r--r-- | PC/bdist_wininst/install.c | 18 | ||||
-rw-r--r-- | PC/clinic/_testconsole.c.h | 82 | ||||
-rw-r--r-- | PC/clinic/msvcrtmodule.c.h | 67 | ||||
-rw-r--r-- | PC/clinic/winreg.c.h | 135 | ||||
-rw-r--r-- | PC/clinic/winsound.c.h | 51 | ||||
-rw-r--r-- | PC/config.c | 4 | ||||
-rw-r--r-- | PC/getpathp.c | 265 | ||||
-rw-r--r-- | PC/icons/launcher.icns | bin | 0 -> 264476 bytes | |||
-rw-r--r-- | PC/icons/launcher.ico | bin | 0 -> 87263 bytes | |||
-rw-r--r-- | PC/icons/launcher.svg | 1 | ||||
-rw-r--r-- | PC/icons/py.icns | bin | 0 -> 195977 bytes | |||
-rw-r--r-- | PC/icons/py.ico | bin | 0 -> 75809 bytes | |||
-rw-r--r-- | PC/icons/py.svg | 1 | ||||
-rw-r--r-- | PC/icons/pyc.icns | bin | 0 -> 212125 bytes | |||
-rw-r--r-- | PC/icons/pyc.ico | bin | 0 -> 78396 bytes | |||
-rw-r--r-- | PC/icons/pyc.svg | 1 | ||||
-rw-r--r-- | PC/icons/pyd.icns | bin | 0 -> 223199 bytes | |||
-rw-r--r-- | PC/icons/pyd.ico | bin | 0 -> 83351 bytes | |||
-rw-r--r-- | PC/icons/pyd.svg | 1 | ||||
-rw-r--r-- | PC/icons/python.icns | bin | 0 -> 201868 bytes | |||
-rw-r--r-- | PC/icons/python.ico | bin | 0 -> 77671 bytes | |||
-rw-r--r-- | PC/icons/python.svg | 1 | ||||
-rw-r--r-- | PC/icons/pythonw.icns | bin | 0 -> 193222 bytes | |||
-rw-r--r-- | PC/icons/pythonw.ico | bin | 0 -> 76102 bytes | |||
-rw-r--r-- | PC/icons/pythonw.svg | 1 | ||||
-rw-r--r-- | PC/icons/setup.icns | bin | 0 -> 220699 bytes | |||
-rw-r--r-- | PC/icons/setup.ico | bin | 0 -> 78328 bytes | |||
-rw-r--r-- | PC/icons/setup.svg | 1 | ||||
-rw-r--r-- | PC/launcher.c | 33 | ||||
-rw-r--r-- | PC/launcher.ico | bin | 19790 -> 0 bytes | |||
-rw-r--r-- | PC/msvcrtmodule.c | 34 | ||||
-rw-r--r-- | PC/py.ico | bin | 19790 -> 0 bytes | |||
-rw-r--r-- | PC/pyc.ico | bin | 19790 -> 0 bytes | |||
-rw-r--r-- | PC/pycon.ico | bin | 19790 -> 0 bytes | |||
-rw-r--r-- | PC/pyconfig.h | 92 | ||||
-rw-r--r-- | PC/pylauncher.rc | 10 | ||||
-rw-r--r-- | PC/python.manifest | 7 | ||||
-rw-r--r-- | PC/python3.def | 1419 | ||||
-rw-r--r-- | PC/python_exe.rc | 2 | ||||
-rw-r--r-- | PC/pythonw_exe.rc | 49 | ||||
-rw-r--r-- | PC/testpy.py | 4 | ||||
-rw-r--r-- | PC/winreg.c | 40 | ||||
-rw-r--r-- | PC/winsound.c | 74 |
45 files changed, 1488 insertions, 1048 deletions
@@ -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 Binary files differnew file mode 100644 index 0000000..59a917f --- /dev/null +++ b/PC/icons/launcher.icns diff --git a/PC/icons/launcher.ico b/PC/icons/launcher.ico Binary files differnew file mode 100644 index 0000000..c4e3c69 --- /dev/null +++ b/PC/icons/launcher.ico 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 Binary files differnew file mode 100644 index 0000000..2dc4e29 --- /dev/null +++ b/PC/icons/py.icns diff --git a/PC/icons/py.ico b/PC/icons/py.ico Binary files differnew file mode 100644 index 0000000..1d8a79b --- /dev/null +++ b/PC/icons/py.ico 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 Binary files differnew file mode 100644 index 0000000..50da9a1 --- /dev/null +++ b/PC/icons/pyc.icns diff --git a/PC/icons/pyc.ico b/PC/icons/pyc.ico Binary files differnew file mode 100644 index 0000000..74dde81 --- /dev/null +++ b/PC/icons/pyc.ico 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 Binary files differnew file mode 100644 index 0000000..5d3d24e --- /dev/null +++ b/PC/icons/pyd.icns diff --git a/PC/icons/pyd.ico b/PC/icons/pyd.ico Binary files differnew file mode 100644 index 0000000..9f6cb60 --- /dev/null +++ b/PC/icons/pyd.ico 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 Binary files differnew file mode 100644 index 0000000..fc53e02 --- /dev/null +++ b/PC/icons/python.icns diff --git a/PC/icons/python.ico b/PC/icons/python.ico Binary files differnew file mode 100644 index 0000000..b8a38ef --- /dev/null +++ b/PC/icons/python.ico 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 Binary files differnew file mode 100644 index 0000000..9354cf8 --- /dev/null +++ b/PC/icons/pythonw.icns diff --git a/PC/icons/pythonw.ico b/PC/icons/pythonw.ico Binary files differnew file mode 100644 index 0000000..6195d43 --- /dev/null +++ b/PC/icons/pythonw.ico 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 Binary files differnew file mode 100644 index 0000000..6f0e6b0 --- /dev/null +++ b/PC/icons/setup.icns diff --git a/PC/icons/setup.ico b/PC/icons/setup.ico Binary files differnew file mode 100644 index 0000000..e54364b --- /dev/null +++ b/PC/icons/setup.ico 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 Binary files differdeleted file mode 100644 index dad7d57..0000000 --- a/PC/launcher.ico +++ /dev/null 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 Binary files differdeleted file mode 100644 index 3357aef..0000000 --- a/PC/py.ico +++ /dev/null diff --git a/PC/pyc.ico b/PC/pyc.ico Binary files differdeleted file mode 100644 index f7bd2b1..0000000 --- a/PC/pyc.ico +++ /dev/null diff --git a/PC/pycon.ico b/PC/pycon.ico Binary files differdeleted file mode 100644 index 1ab629e..0000000 --- a/PC/pycon.ico +++ /dev/null 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; } |