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 0000000000..1c93679e43 --- /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 60bee30af5..fd977f5a55 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 0000000000..93860cf5b2 --- /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 e7a72c47f6..6935cad7b0 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 f6ae2c0b92..c7d5b9e452 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 b00b442362..52d25b2434 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 66bf4580a0..43d9e208cc 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 c7ddf1ea6b..31f973eedb 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 0000000000..59a917f20d --- /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 0000000000..c4e3c693dc --- /dev/null +++ b/PC/icons/launcher.ico diff --git a/PC/icons/launcher.svg b/PC/icons/launcher.svg new file mode 100644 index 0000000000..0590b0d2d0 --- /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 0000000000..2dc4e296f8 --- /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 0000000000..1d8a79bfb3 --- /dev/null +++ b/PC/icons/py.ico diff --git a/PC/icons/py.svg b/PC/icons/py.svg new file mode 100644 index 0000000000..0924e83fbc --- /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 0000000000..50da9a1615 --- /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 0000000000..74dde81b64 --- /dev/null +++ b/PC/icons/pyc.ico diff --git a/PC/icons/pyc.svg b/PC/icons/pyc.svg new file mode 100644 index 0000000000..5c3e9e7920 --- /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 0000000000..5d3d24ee25 --- /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 0000000000..9f6cb601af --- /dev/null +++ b/PC/icons/pyd.ico diff --git a/PC/icons/pyd.svg b/PC/icons/pyd.svg new file mode 100644 index 0000000000..17eff6a307 --- /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 0000000000..fc53e02f4a --- /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 0000000000..b8a38ef159 --- /dev/null +++ b/PC/icons/python.ico diff --git a/PC/icons/python.svg b/PC/icons/python.svg new file mode 100644 index 0000000000..e23e5a3f63 --- /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 0000000000..9354cf870a --- /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 0000000000..6195d43347 --- /dev/null +++ b/PC/icons/pythonw.ico diff --git a/PC/icons/pythonw.svg b/PC/icons/pythonw.svg new file mode 100644 index 0000000000..7cb2607474 --- /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 0000000000..6f0e6b01a0 --- /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 0000000000..e54364b3af --- /dev/null +++ b/PC/icons/setup.ico diff --git a/PC/icons/setup.svg b/PC/icons/setup.svg new file mode 100644 index 0000000000..06138568f2 --- /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 40d4cb5474..d11df437b9 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 dad7d572ce..0000000000 --- a/PC/launcher.ico +++ /dev/null diff --git a/PC/msvcrtmodule.c b/PC/msvcrtmodule.c index b0739d0167..c9d1e6cec6 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 3357aef148..0000000000 --- a/PC/py.ico +++ /dev/null diff --git a/PC/pyc.ico b/PC/pyc.ico Binary files differdeleted file mode 100644 index f7bd2b1cc2..0000000000 --- a/PC/pyc.ico +++ /dev/null diff --git a/PC/pycon.ico b/PC/pycon.ico Binary files differdeleted file mode 100644 index 1ab629eff2..0000000000 --- a/PC/pycon.ico +++ /dev/null diff --git a/PC/pyconfig.h b/PC/pyconfig.h index ac4f8f25e0..64e7aecb69 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 a8db0a842f..3da3445f5f 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 d6e4bbadb6..4e73d60df2 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 88c0742d3c..e8d2d8c7e5 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 91785a1e06..ae0b029b80 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 0000000000..88bf3592e1 --- /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 4ef3d4f793..709f35c452 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 f08d9a47ff..9524838c08 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 6b79d238ed..7feebcbcf4 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;  }  | 
