From 09f1efd376182f919b5796b064e92a74f28ab3ea Mon Sep 17 00:00:00 2001 From: milek7 Date: Sat, 19 Jan 2019 00:06:48 +0100 Subject: [PATCH] modify and cleanup python headers and libs --- ref/python/include/Python.h | 3 + ref/python/include/abstract.h | 28 ++++---- ref/python/include/cStringIO.h | 4 +- ref/python/include/ceval.h | 3 +- ref/python/include/code.h | 11 ++- ref/python/include/codecs.h | 49 ++++++++++++- ref/python/include/datetime.h | 2 +- ref/python/include/dictobject.h | 4 ++ ref/python/include/errcode.h | 1 + ref/python/include/fileobject.h | 4 +- ref/python/include/frameobject.h | 4 +- ref/python/include/grammar.h | 1 + ref/python/include/import.h | 4 +- ref/python/include/intobject.h | 8 ++- ref/python/include/listobject.h | 4 +- ref/python/include/longobject.h | 3 +- ref/python/include/memoryobject.h | 2 +- ref/python/include/node.h | 1 + ref/python/include/object.h | 72 ++++++++++++++++--- ref/python/include/objimpl.h | 19 ++++- ref/python/include/opcode.h | 9 +++ ref/python/include/osdefs.h | 8 +++ ref/python/include/patchlevel.h | 6 +- ref/python/include/pgenheaders.h | 1 + ref/python/include/py_curses.h | 33 ++++----- ref/python/include/pyconfig.h | 35 ++++----- ref/python/include/pyerrors.h | 3 +- ref/python/include/pyexpat.h | 4 +- ref/python/include/pyfpe.h | 44 ++++++------ ref/python/include/pymacconfig.h | 6 +- ref/python/include/pymactoolbox.h | 63 +++++++++------- ref/python/include/pymath.h | 36 ++++++++-- ref/python/include/pymem.h | 4 +- ref/python/include/pyport.h | 91 ++++++++++++++++++++---- ref/python/include/pystate.h | 3 + ref/python/include/pythonrun.h | 8 +-- ref/python/include/sliceobject.h | 6 ++ ref/python/include/stringobject.h | 6 +- ref/python/include/sysmodule.h | 5 +- ref/python/include/timefuncs.h | 3 + ref/python/include/unicodeobject.h | 14 ++-- ref/python/include/weakrefobject.h | 15 ++-- ref/python/lib/x64/_bsddb.lib | Bin 1884 -> 0 bytes ref/python/lib/x64/_ctypes.lib | Bin 1716 -> 0 bytes ref/python/lib/x64/_ctypes_test.lib | Bin 21828 -> 0 bytes ref/python/lib/x64/_elementtree.lib | Bin 1880 -> 0 bytes ref/python/lib/x64/_hashlib.lib | Bin 1734 -> 0 bytes ref/python/lib/x64/_msi.lib | Bin 1666 -> 0 bytes ref/python/lib/x64/_multiprocessing.lib | Bin 1952 -> 0 bytes ref/python/lib/x64/_socket.lib | Bin 1916 -> 0 bytes ref/python/lib/x64/_sqlite3.lib | Bin 1734 -> 0 bytes ref/python/lib/x64/_ssl.lib | Bin 1666 -> 0 bytes ref/python/lib/x64/_testcapi.lib | Bin 1750 -> 0 bytes ref/python/lib/x64/_tkinter.lib | Bin 1734 -> 0 bytes ref/python/lib/x64/bz2.lib | Bin 1648 -> 0 bytes ref/python/lib/x64/pyexpat.lib | Bin 1716 -> 0 bytes ref/python/lib/x64/python27.lib | Bin 230512 -> 230512 bytes ref/python/lib/x64/select.lib | Bin 1700 -> 0 bytes ref/python/lib/x64/unicodedata.lib | Bin 1784 -> 0 bytes ref/python/lib/x64/winsound.lib | Bin 1734 -> 0 bytes ref/python/lib/x86/_bsddb.lib | Bin 1888 -> 0 bytes ref/python/lib/x86/_ctypes.lib | Bin 1714 -> 0 bytes ref/python/lib/x86/_ctypes_test.lib | Bin 21680 -> 0 bytes ref/python/lib/x86/_elementtree.lib | Bin 1878 -> 0 bytes ref/python/lib/x86/_hashlib.lib | Bin 1732 -> 0 bytes ref/python/lib/x86/_msi.lib | Bin 1664 -> 0 bytes ref/python/lib/x86/_multiprocessing.lib | Bin 1950 -> 0 bytes ref/python/lib/x86/_socket.lib | Bin 1920 -> 0 bytes ref/python/lib/x86/_sqlite3.lib | Bin 1732 -> 0 bytes ref/python/lib/x86/_ssl.lib | Bin 1664 -> 0 bytes ref/python/lib/x86/_testcapi.lib | Bin 1748 -> 0 bytes ref/python/lib/x86/_tkinter.lib | Bin 1732 -> 0 bytes ref/python/lib/x86/bz2.lib | Bin 1646 -> 0 bytes ref/python/lib/x86/pyexpat.lib | Bin 1714 -> 0 bytes ref/python/lib/x86/python27.lib | Bin 231346 -> 230512 bytes ref/python/lib/x86/select.lib | Bin 1698 -> 0 bytes ref/python/lib/x86/unicodedata.lib | Bin 1782 -> 0 bytes ref/python/lib/x86/winsound.lib | Bin 1732 -> 0 bytes 78 files changed, 454 insertions(+), 176 deletions(-) delete mode 100644 ref/python/lib/x64/_bsddb.lib delete mode 100644 ref/python/lib/x64/_ctypes.lib delete mode 100644 ref/python/lib/x64/_ctypes_test.lib delete mode 100644 ref/python/lib/x64/_elementtree.lib delete mode 100644 ref/python/lib/x64/_hashlib.lib delete mode 100644 ref/python/lib/x64/_msi.lib delete mode 100644 ref/python/lib/x64/_multiprocessing.lib delete mode 100644 ref/python/lib/x64/_socket.lib delete mode 100644 ref/python/lib/x64/_sqlite3.lib delete mode 100644 ref/python/lib/x64/_ssl.lib delete mode 100644 ref/python/lib/x64/_testcapi.lib delete mode 100644 ref/python/lib/x64/_tkinter.lib delete mode 100644 ref/python/lib/x64/bz2.lib delete mode 100644 ref/python/lib/x64/pyexpat.lib delete mode 100644 ref/python/lib/x64/select.lib delete mode 100644 ref/python/lib/x64/unicodedata.lib delete mode 100644 ref/python/lib/x64/winsound.lib delete mode 100644 ref/python/lib/x86/_bsddb.lib delete mode 100644 ref/python/lib/x86/_ctypes.lib delete mode 100644 ref/python/lib/x86/_ctypes_test.lib delete mode 100644 ref/python/lib/x86/_elementtree.lib delete mode 100644 ref/python/lib/x86/_hashlib.lib delete mode 100644 ref/python/lib/x86/_msi.lib delete mode 100644 ref/python/lib/x86/_multiprocessing.lib delete mode 100644 ref/python/lib/x86/_socket.lib delete mode 100644 ref/python/lib/x86/_sqlite3.lib delete mode 100644 ref/python/lib/x86/_ssl.lib delete mode 100644 ref/python/lib/x86/_testcapi.lib delete mode 100644 ref/python/lib/x86/_tkinter.lib delete mode 100644 ref/python/lib/x86/bz2.lib delete mode 100644 ref/python/lib/x86/pyexpat.lib delete mode 100644 ref/python/lib/x86/select.lib delete mode 100644 ref/python/lib/x86/unicodedata.lib delete mode 100644 ref/python/lib/x86/winsound.lib diff --git a/ref/python/include/Python.h b/ref/python/include/Python.h index 775412b8..a9327b02 100644 --- a/ref/python/include/Python.h +++ b/ref/python/include/Python.h @@ -43,6 +43,9 @@ #ifdef HAVE_UNISTD_H #include #endif +#ifdef HAVE_CRYPT_H +#include +#endif /* For size_t? */ #ifdef HAVE_STDDEF_H diff --git a/ref/python/include/abstract.h b/ref/python/include/abstract.h index a3774238..66b5fc54 100644 --- a/ref/python/include/abstract.h +++ b/ref/python/include/abstract.h @@ -94,7 +94,7 @@ Proposal numeric, sequence, and mapping. Each protocol consists of a collection of related operations. If an operation that is not provided by a particular type is invoked, then a standard exception, - NotImplementedError is raised with a operation name as an argument. + NotImplementedError is raised with an operation name as an argument. In addition, for convenience this interface defines a set of constructors for building objects of built-in types. This is needed so new objects can be returned from C functions that otherwise treat @@ -191,8 +191,8 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/ int PyObject_SetAttrString(PyObject *o, char *attr_name, PyObject *v); Set the value of the attribute named attr_name, for object o, - to the value, v. Returns -1 on failure. This is - the equivalent of the Python statement: o.attr_name=v. + to the value v. Raise an exception and return -1 on failure; return 0 on + success. This is the equivalent of the Python statement o.attr_name=v. */ @@ -201,8 +201,8 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/ int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v); Set the value of the attribute named attr_name, for object o, - to the value, v. Returns -1 on failure. This is - the equivalent of the Python statement: o.attr_name=v. + to the value v. Raise an exception and return -1 on failure; return 0 on + success. This is the equivalent of the Python statement o.attr_name=v. */ @@ -453,9 +453,9 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/ PyAPI_FUNC(int) PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v); /* - Map the object, key, to the value, v. Returns - -1 on failure. This is the equivalent of the Python - statement: o[key]=v. + Map the object key to the value v. Raise an exception and return -1 + on failure; return 0 on success. This is the equivalent of the Python + statement o[key]=v. */ PyAPI_FUNC(int) PyObject_DelItemString(PyObject *o, char *key); @@ -1102,10 +1102,9 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/ PyAPI_FUNC(int) PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v); /* - Assign object v to the ith element of o. Returns - -1 on failure. This is the equivalent of the Python - statement: o[i]=v. - + Assign object v to the ith element of o. Raise an exception and return + -1 on failure; return 0 on success. This is the equivalent of the + Python statement o[i]=v. */ PyAPI_FUNC(int) PySequence_DelItem(PyObject *o, Py_ssize_t i); @@ -1121,7 +1120,8 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/ /* Assign the sequence object, v, to the slice in sequence - object, o, from i1 to i2. Returns -1 on failure. This is the + object, o, from i1 to i2. Raise an exception and return + -1 on failure; return 0 on success. This is the equivalent of the Python statement: o[i1:i2]=v. */ @@ -1149,7 +1149,7 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/ PyAPI_FUNC(PyObject *) PySequence_Fast(PyObject *o, const char* m); /* - Returns the sequence, o, as a tuple, unless it's already a + Return the sequence, o, as a list, unless it's already a tuple or list. Use PySequence_Fast_GET_ITEM to access the members of this list, and PySequence_Fast_GET_SIZE to get its length. diff --git a/ref/python/include/cStringIO.h b/ref/python/include/cStringIO.h index 6ca44a83..973a4710 100644 --- a/ref/python/include/cStringIO.h +++ b/ref/python/include/cStringIO.h @@ -7,7 +7,7 @@ extern "C" { This header provides access to cStringIO objects from C. Functions are provided for calling cStringIO objects and - macros are provided for testing whether you have cStringIO + macros are provided for testing whether you have cStringIO objects. Before calling any of the functions or macros, you must initialize @@ -28,7 +28,7 @@ extern "C" { /* Basic functions to manipulate cStringIO objects from C */ static struct PycStringIO_CAPI { - + /* Read a string from an input object. If the last argument is -1, the remainder will be read. */ diff --git a/ref/python/include/ceval.h b/ref/python/include/ceval.h index 0e8bd2ab..f4616015 100644 --- a/ref/python/include/ceval.h +++ b/ref/python/include/ceval.h @@ -50,7 +50,7 @@ PyAPI_FUNC(int) Py_GetRecursionLimit(void); _Py_CheckRecursiveCall(where)) #define Py_LeaveRecursiveCall() \ (--PyThreadState_GET()->recursion_depth) -PyAPI_FUNC(int) _Py_CheckRecursiveCall(char *where); +PyAPI_FUNC(int) _Py_CheckRecursiveCall(const char *where); PyAPI_DATA(int) _Py_CheckRecursionLimit; #ifdef USE_STACKCHECK # define _Py_MakeRecCheck(x) (++(x) > --_Py_CheckRecursionLimit) @@ -145,6 +145,7 @@ PyAPI_FUNC(void) PyEval_ReInitThreads(void); #endif /* !WITH_THREAD */ PyAPI_FUNC(int) _PyEval_SliceIndex(PyObject *, Py_ssize_t *); +PyAPI_FUNC(int) _PyEval_SliceIndexNotNone(PyObject *, Py_ssize_t *); #ifdef __cplusplus diff --git a/ref/python/include/code.h b/ref/python/include/code.h index 38b29580..7456fd61 100644 --- a/ref/python/include/code.h +++ b/ref/python/include/code.h @@ -70,7 +70,7 @@ PyAPI_DATA(PyTypeObject) PyCode_Type; /* Public interface */ PyAPI_FUNC(PyCodeObject *) PyCode_New( int, int, int, int, PyObject *, PyObject *, PyObject *, PyObject *, - PyObject *, PyObject *, PyObject *, PyObject *, int, PyObject *); + PyObject *, PyObject *, PyObject *, PyObject *, int, PyObject *); /* same as struct above */ /* Creates a new empty code object with the specified source location. */ @@ -98,6 +98,15 @@ typedef struct _addr_pair { PyAPI_FUNC(int) _PyCode_CheckLineNumber(PyCodeObject* co, int lasti, PyAddrPair *bounds); +/* Create a comparable key used to compare constants taking in account the + * object type. It is used to make sure types are not coerced (e.g., float and + * complex) _and_ to distinguish 0.0 from -0.0 e.g. on IEEE platforms + * + * Return (type(obj), obj, ...): a tuple with variable size (at least 2 items) + * depending on the type and the value. The type is the first item to not + * compare bytes and str which can raise a BytesWarning exception. */ +PyAPI_FUNC(PyObject*) _PyCode_ConstantKey(PyObject *obj); + PyAPI_FUNC(PyObject*) PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names, PyObject *lineno_obj); diff --git a/ref/python/include/codecs.h b/ref/python/include/codecs.h index c038c6a9..851bc9f1 100644 --- a/ref/python/include/codecs.h +++ b/ref/python/include/codecs.h @@ -81,6 +81,51 @@ PyAPI_FUNC(PyObject *) PyCodec_Decode( const char *errors ); +/* Text codec specific encoding and decoding API. + + Checks the encoding against a list of codecs which do not + implement a unicode<->bytes encoding before attempting the + operation. + + Please note that these APIs are internal and should not + be used in Python C extensions. + + XXX (ncoghlan): should we make these, or something like them, public + in Python 3.5+? + + */ +PyAPI_FUNC(PyObject *) _PyCodec_LookupTextEncoding( + const char *encoding, + const char *alternate_command + ); + +PyAPI_FUNC(PyObject *) _PyCodec_EncodeText( + PyObject *object, + const char *encoding, + const char *errors + ); + +PyAPI_FUNC(PyObject *) _PyCodec_DecodeText( + PyObject *object, + const char *encoding, + const char *errors + ); + +/* These two aren't actually text encoding specific, but _io.TextIOWrapper + * is the only current API consumer. + */ +PyAPI_FUNC(PyObject *) _PyCodecInfo_GetIncrementalDecoder( + PyObject *codec_info, + const char *errors + ); + +PyAPI_FUNC(PyObject *) _PyCodecInfo_GetIncrementalEncoder( + PyObject *codec_info, + const char *errors + ); + + + /* --- Codec Lookup APIs -------------------------------------------------- All APIs return a codec object with incremented refcount and are @@ -101,14 +146,14 @@ PyAPI_FUNC(PyObject *) PyCodec_Decoder( const char *encoding ); -/* Get a IncrementalEncoder object for the given encoding. */ +/* Get an IncrementalEncoder object for the given encoding. */ PyAPI_FUNC(PyObject *) PyCodec_IncrementalEncoder( const char *encoding, const char *errors ); -/* Get a IncrementalDecoder object function for the given encoding. */ +/* Get an IncrementalDecoder object function for the given encoding. */ PyAPI_FUNC(PyObject *) PyCodec_IncrementalDecoder( const char *encoding, diff --git a/ref/python/include/datetime.h b/ref/python/include/datetime.h index 47abe5cb..c0e7ffd0 100644 --- a/ref/python/include/datetime.h +++ b/ref/python/include/datetime.h @@ -42,7 +42,7 @@ typedef struct typedef struct { - PyObject_HEAD /* a pure abstract base clase */ + PyObject_HEAD /* a pure abstract base class */ } PyDateTime_TZInfo; diff --git a/ref/python/include/dictobject.h b/ref/python/include/dictobject.h index ece01c64..5a1e9fee 100644 --- a/ref/python/include/dictobject.h +++ b/ref/python/include/dictobject.h @@ -108,8 +108,12 @@ PyAPI_DATA(PyTypeObject) PyDictValues_Type; PyAPI_FUNC(PyObject *) PyDict_New(void); PyAPI_FUNC(PyObject *) PyDict_GetItem(PyObject *mp, PyObject *key); +PyAPI_FUNC(PyObject *) _PyDict_GetItemWithError(PyObject *mp, PyObject *key); PyAPI_FUNC(int) PyDict_SetItem(PyObject *mp, PyObject *key, PyObject *item); PyAPI_FUNC(int) PyDict_DelItem(PyObject *mp, PyObject *key); +PyAPI_FUNC(int) _PyDict_DelItemIf(PyObject *mp, PyObject *key, + int (*predicate)(PyObject *value)); + PyAPI_FUNC(void) PyDict_Clear(PyObject *mp); PyAPI_FUNC(int) PyDict_Next( PyObject *mp, Py_ssize_t *pos, PyObject **key, PyObject **value); diff --git a/ref/python/include/errcode.h b/ref/python/include/errcode.h index becec80c..5c5a0f7f 100644 --- a/ref/python/include/errcode.h +++ b/ref/python/include/errcode.h @@ -29,6 +29,7 @@ extern "C" { #define E_EOFS 23 /* EOF in triple-quoted string */ #define E_EOLS 24 /* EOL in single-quoted string */ #define E_LINECONT 25 /* Unexpected characters after a line continuation */ +#define E_IO 26 /* I/O error */ #ifdef __cplusplus } diff --git a/ref/python/include/fileobject.h b/ref/python/include/fileobject.h index 1b540f90..15b7b4ab 100644 --- a/ref/python/include/fileobject.h +++ b/ref/python/include/fileobject.h @@ -70,14 +70,14 @@ size_t Py_UniversalNewlineFread(char *, size_t, FILE *, PyObject *); */ int _PyFile_SanitizeMode(char *mode); -#if defined _MSC_VER && _MSC_VER >= 1400 +#if defined _MSC_VER && _MSC_VER >= 1400 && _MSC_VER < 1900 /* A routine to check if a file descriptor is valid on Windows. Returns 0 * and sets errno to EBADF if it isn't. This is to avoid Assertions * from various functions in the Windows CRT beginning with * Visual Studio 2005 */ int _PyVerify_fd(int fd); -#elif defined _MSC_VER && _MSC_VER >= 1200 +#elif defined _MSC_VER && _MSC_VER >= 1200 && _MSC_VER < 1900 /* fdopen doesn't set errno EBADF and crashes for large fd on debug build */ #define _PyVerify_fd(fd) (_get_osfhandle(fd) >= 0) #else diff --git a/ref/python/include/frameobject.h b/ref/python/include/frameobject.h index 17e7679a..34603794 100644 --- a/ref/python/include/frameobject.h +++ b/ref/python/include/frameobject.h @@ -54,9 +54,9 @@ typedef struct _frame { PyAPI_DATA(PyTypeObject) PyFrame_Type; -#define PyFrame_Check(op) ((op)->ob_type == &PyFrame_Type) +#define PyFrame_Check(op) (Py_TYPE(op) == &PyFrame_Type) #define PyFrame_IsRestricted(f) \ - ((f)->f_builtins != (f)->f_tstate->interp->builtins) + ((f)->f_tstate && (f)->f_builtins != (f)->f_tstate->interp->builtins) PyAPI_FUNC(PyFrameObject *) PyFrame_New(PyThreadState *, PyCodeObject *, PyObject *, PyObject *); diff --git a/ref/python/include/grammar.h b/ref/python/include/grammar.h index 8426da30..decf2e61 100644 --- a/ref/python/include/grammar.h +++ b/ref/python/include/grammar.h @@ -69,6 +69,7 @@ typedef struct { /* FUNCTIONS */ grammar *newgrammar(int start); +void freegrammar(grammar *g); dfa *adddfa(grammar *g, int type, char *name); int addstate(dfa *d); void addarc(dfa *d, int from, int to, int lbl); diff --git a/ref/python/include/import.h b/ref/python/include/import.h index 1b7fe0a7..89f51b55 100644 --- a/ref/python/include/import.h +++ b/ref/python/include/import.h @@ -40,8 +40,8 @@ PyAPI_FUNC(struct filedescr *) _PyImport_FindModule( PyAPI_FUNC(int) _PyImport_IsScript(struct filedescr *); PyAPI_FUNC(void) _PyImport_ReInitLock(void); -PyAPI_FUNC(PyObject *)_PyImport_FindExtension(char *, char *); -PyAPI_FUNC(PyObject *)_PyImport_FixupExtension(char *, char *); +PyAPI_FUNC(PyObject *) _PyImport_FindExtension(char *, char *); +PyAPI_FUNC(PyObject *) _PyImport_FixupExtension(char *, char *); struct _inittab { char *name; diff --git a/ref/python/include/intobject.h b/ref/python/include/intobject.h index 78746a63..d1985748 100644 --- a/ref/python/include/intobject.h +++ b/ref/python/include/intobject.h @@ -28,8 +28,11 @@ typedef struct { PyAPI_DATA(PyTypeObject) PyInt_Type; #define PyInt_Check(op) \ - PyType_FastSubclass((op)->ob_type, Py_TPFLAGS_INT_SUBCLASS) -#define PyInt_CheckExact(op) ((op)->ob_type == &PyInt_Type) + PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_INT_SUBCLASS) +#define PyInt_CheckExact(op) (Py_TYPE(op) == &PyInt_Type) + +#define _PyAnyInt_Check(op) (PyInt_Check(op) || PyLong_Check(op)) +#define _PyAnyInt_CheckExact(op) (PyInt_CheckExact(op) || PyLong_CheckExact(op)) PyAPI_FUNC(PyObject *) PyInt_FromString(char*, char**, int); #ifdef Py_USING_UNICODE @@ -40,6 +43,7 @@ PyAPI_FUNC(PyObject *) PyInt_FromSize_t(size_t); PyAPI_FUNC(PyObject *) PyInt_FromSsize_t(Py_ssize_t); PyAPI_FUNC(long) PyInt_AsLong(PyObject *); PyAPI_FUNC(Py_ssize_t) PyInt_AsSsize_t(PyObject *); +PyAPI_FUNC(int) _PyInt_AsInt(PyObject *); PyAPI_FUNC(unsigned long) PyInt_AsUnsignedLongMask(PyObject *); #ifdef HAVE_LONG_LONG PyAPI_FUNC(unsigned PY_LONG_LONG) PyInt_AsUnsignedLongLongMask(PyObject *); diff --git a/ref/python/include/listobject.h b/ref/python/include/listobject.h index c4458733..f19b1c5e 100644 --- a/ref/python/include/listobject.h +++ b/ref/python/include/listobject.h @@ -2,7 +2,7 @@ /* List object interface */ /* -Another generally useful object type is an list of object pointers. +Another generally useful object type is a list of object pointers. This is a mutable type: the list items can be changed, and items can be added or removed. Out-of-range indices or non-list objects are ignored. @@ -41,7 +41,7 @@ typedef struct { PyAPI_DATA(PyTypeObject) PyList_Type; #define PyList_Check(op) \ - PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS) + PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS) #define PyList_CheckExact(op) (Py_TYPE(op) == &PyList_Type) PyAPI_FUNC(PyObject *) PyList_New(Py_ssize_t size); diff --git a/ref/python/include/longobject.h b/ref/python/include/longobject.h index 2b404612..4e33ff2b 100644 --- a/ref/python/include/longobject.h +++ b/ref/python/include/longobject.h @@ -25,6 +25,7 @@ PyAPI_FUNC(long) PyLong_AsLongAndOverflow(PyObject *, int *); PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLong(PyObject *); PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLongMask(PyObject *); PyAPI_FUNC(Py_ssize_t) PyLong_AsSsize_t(PyObject *); +PyAPI_FUNC(int) _PyLong_AsInt(PyObject *); PyAPI_FUNC(PyObject *) PyLong_GetInfo(void); /* For use by intobject.c only */ @@ -109,7 +110,7 @@ PyAPI_FUNC(PyObject *) _PyLong_FromByteArray( example, if is_signed is 0 and there are more digits in the v than fit in n; or if is_signed is 1, v < 0, and n is just 1 bit shy of being large enough to hold a sign bit. OverflowError is set in this - case, but bytes holds the least-signficant n bytes of the true value. + case, but bytes holds the least-significant n bytes of the true value. */ PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v, unsigned char* bytes, size_t n, diff --git a/ref/python/include/memoryobject.h b/ref/python/include/memoryobject.h index bf0b621a..e6a5c450 100644 --- a/ref/python/include/memoryobject.h +++ b/ref/python/include/memoryobject.h @@ -33,7 +33,7 @@ PyAPI_FUNC(PyObject *) PyMemoryView_GetContiguous(PyObject *base, original buffer if a copy must be made. If buffertype is PyBUF_WRITE and the buffer is not contiguous an error will be raised. In this circumstance, the user can use - PyBUF_SHADOW to ensure that a a writable temporary + PyBUF_SHADOW to ensure that a writable temporary contiguous buffer is returned. The contents of this contiguous buffer will be copied back into the original object after the memoryview object is deleted as long as diff --git a/ref/python/include/node.h b/ref/python/include/node.h index e23e709f..517c3dc4 100644 --- a/ref/python/include/node.h +++ b/ref/python/include/node.h @@ -20,6 +20,7 @@ PyAPI_FUNC(node *) PyNode_New(int type); PyAPI_FUNC(int) PyNode_AddChild(node *n, int type, char *str, int lineno, int col_offset); PyAPI_FUNC(void) PyNode_Free(node *n); +PyAPI_FUNC(Py_ssize_t) _PyNode_SizeOf(node *n); /* Node access functions */ #define NCH(n) ((n)->n_nchildren) diff --git a/ref/python/include/object.h b/ref/python/include/object.h index edcd3fc2..807b2418 100644 --- a/ref/python/include/object.h +++ b/ref/python/include/object.h @@ -527,7 +527,9 @@ PyAPI_DATA(_Py_HashSecret_t) _Py_HashSecret; PyAPI_DATA(int) _Py_HashSecret_Initialized; #endif -/* Helper for passing objects to printf and the like */ +/* Helper for passing objects to printf and the like. + Leaks refcounts. Don't use it! +*/ #define PyObject_REPR(obj) PyString_AS_STRING(PyObject_Repr(obj)) /* Flag bits for printing: */ @@ -776,7 +778,7 @@ PyAPI_FUNC(void) _Py_AddToAllObjects(PyObject *, int force); } while (0) /* Safely decref `op` and set `op` to NULL, especially useful in tp_clear - * and tp_dealloc implementatons. + * and tp_dealloc implementations. * * Note that "the obvious" code can be deadly: * @@ -822,6 +824,39 @@ PyAPI_FUNC(void) _Py_AddToAllObjects(PyObject *, int force); #define Py_XINCREF(op) do { if ((op) == NULL) ; else Py_INCREF(op); } while (0) #define Py_XDECREF(op) do { if ((op) == NULL) ; else Py_DECREF(op); } while (0) +/* Safely decref `op` and set `op` to `op2`. + * + * As in case of Py_CLEAR "the obvious" code can be deadly: + * + * Py_DECREF(op); + * op = op2; + * + * The safe way is: + * + * Py_SETREF(op, op2); + * + * That arranges to set `op` to `op2` _before_ decref'ing, so that any code + * triggered as a side-effect of `op` getting torn down no longer believes + * `op` points to a valid object. + * + * Py_XSETREF is a variant of Py_SETREF that uses Py_XDECREF instead of + * Py_DECREF. + */ + +#define Py_SETREF(op, op2) \ + do { \ + PyObject *_py_tmp = (PyObject *)(op); \ + (op) = (op2); \ + Py_DECREF(_py_tmp); \ + } while (0) + +#define Py_XSETREF(op, op2) \ + do { \ + PyObject *_py_tmp = (PyObject *)(op); \ + (op) = (op2); \ + Py_XDECREF(_py_tmp); \ + } while (0) + /* These are provided as conveniences to Python runtime embedders, so that they can have object code that is not dependent on Python compilation flags. @@ -971,24 +1006,39 @@ chain of N deallocations is broken into N / PyTrash_UNWIND_LEVEL pieces, with the call stack never exceeding a depth of PyTrash_UNWIND_LEVEL. */ +/* This is the old private API, invoked by the macros before 2.7.4. + Kept for binary compatibility of extensions. */ PyAPI_FUNC(void) _PyTrash_deposit_object(PyObject*); PyAPI_FUNC(void) _PyTrash_destroy_chain(void); PyAPI_DATA(int) _PyTrash_delete_nesting; PyAPI_DATA(PyObject *) _PyTrash_delete_later; +/* The new thread-safe private API, invoked by the macros below. */ +PyAPI_FUNC(void) _PyTrash_thread_deposit_object(PyObject*); +PyAPI_FUNC(void) _PyTrash_thread_destroy_chain(void); + #define PyTrash_UNWIND_LEVEL 50 +/* Note the workaround for when the thread state is NULL (issue #17703) */ #define Py_TRASHCAN_SAFE_BEGIN(op) \ - if (_PyTrash_delete_nesting < PyTrash_UNWIND_LEVEL) { \ - ++_PyTrash_delete_nesting; - /* The body of the deallocator is here. */ + do { \ + PyThreadState *_tstate = PyThreadState_GET(); \ + if (!_tstate || \ + _tstate->trash_delete_nesting < PyTrash_UNWIND_LEVEL) { \ + if (_tstate) \ + ++_tstate->trash_delete_nesting; + /* The body of the deallocator is here. */ #define Py_TRASHCAN_SAFE_END(op) \ - --_PyTrash_delete_nesting; \ - if (_PyTrash_delete_later && _PyTrash_delete_nesting <= 0) \ - _PyTrash_destroy_chain(); \ - } \ - else \ - _PyTrash_deposit_object((PyObject*)op); + if (_tstate) { \ + --_tstate->trash_delete_nesting; \ + if (_tstate->trash_delete_later \ + && _tstate->trash_delete_nesting <= 0) \ + _PyTrash_thread_destroy_chain(); \ + } \ + } \ + else \ + _PyTrash_thread_deposit_object((PyObject*)op); \ + } while (0); #ifdef __cplusplus } diff --git a/ref/python/include/objimpl.h b/ref/python/include/objimpl.h index 55e83ece..cbf6bc3f 100644 --- a/ref/python/include/objimpl.h +++ b/ref/python/include/objimpl.h @@ -56,7 +56,7 @@ must use the platform malloc heap(s), or shared memory, or C++ local storage or operator new), you must first allocate the object with your custom allocator, then pass its pointer to PyObject_{Init, InitVar} for filling in its Python- specific fields: reference count, type pointer, possibly others. You should -be aware that Python no control over these objects because they don't +be aware that Python has no control over these objects because they don't cooperate with the Python memory manager. Such objects may not be eligible for automatic garbage collection and you have to make sure that they are released accordingly whenever their destructor gets called (cf. the specific @@ -248,6 +248,20 @@ PyAPI_FUNC(PyVarObject *) _PyObject_GC_Resize(PyVarObject *, Py_ssize_t); /* for source compatibility with 2.2 */ #define _PyObject_GC_Del PyObject_GC_Del +/* + * Former over-aligned definition of PyGC_Head, used to compute the size of the + * padding for the new version below. + */ +union _gc_head; +union _gc_head_old { + struct { + union _gc_head_old *gc_next; + union _gc_head_old *gc_prev; + Py_ssize_t gc_refs; + } gc; + long double dummy; +}; + /* GC information is stored BEFORE the object structure. */ typedef union _gc_head { struct { @@ -255,7 +269,8 @@ typedef union _gc_head { union _gc_head *gc_prev; Py_ssize_t gc_refs; } gc; - long double dummy; /* force worst-case alignment */ + double dummy; /* Force at least 8-byte alignment. */ + char dummy_padding[sizeof(union _gc_head_old)]; } PyGC_Head; extern PyGC_Head *_PyGC_generation0; diff --git a/ref/python/include/opcode.h b/ref/python/include/opcode.h index 9764109a..9ed54872 100644 --- a/ref/python/include/opcode.h +++ b/ref/python/include/opcode.h @@ -37,12 +37,21 @@ extern "C" { #define SLICE 30 /* Also uses 31-33 */ +#define SLICE_1 31 +#define SLICE_2 32 +#define SLICE_3 33 #define STORE_SLICE 40 /* Also uses 41-43 */ +#define STORE_SLICE_1 41 +#define STORE_SLICE_2 42 +#define STORE_SLICE_3 43 #define DELETE_SLICE 50 /* Also uses 51-53 */ +#define DELETE_SLICE_1 51 +#define DELETE_SLICE_2 52 +#define DELETE_SLICE_3 53 #define STORE_MAP 54 #define INPLACE_ADD 55 diff --git a/ref/python/include/osdefs.h b/ref/python/include/osdefs.h index 69376593..77af9237 100644 --- a/ref/python/include/osdefs.h +++ b/ref/python/include/osdefs.h @@ -36,6 +36,14 @@ extern "C" { #endif /* Max pathname length */ +#ifdef __hpux +#include +#include +#ifndef PATH_MAX +#define PATH_MAX MAXPATHLEN +#endif +#endif + #ifndef MAXPATHLEN #if defined(PATH_MAX) && PATH_MAX > 1024 #define MAXPATHLEN PATH_MAX diff --git a/ref/python/include/patchlevel.h b/ref/python/include/patchlevel.h index 0a05696c..8a04a90f 100644 --- a/ref/python/include/patchlevel.h +++ b/ref/python/include/patchlevel.h @@ -6,7 +6,7 @@ defined(PY_MAJOR_VERSION). When the major or minor version changes, the VERSION variable in - configure.in must also be changed. + configure.ac must also be changed. There is also (independent) API version information in modsupport.h. */ @@ -22,12 +22,12 @@ /*--start constants--*/ #define PY_MAJOR_VERSION 2 #define PY_MINOR_VERSION 7 -#define PY_MICRO_VERSION 3 +#define PY_MICRO_VERSION 15 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL #define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "2.7.3" +#define PY_VERSION "2.7.15+" /*--end constants--*/ /* Subversion Revision number of this file (not of the repository). Empty diff --git a/ref/python/include/pgenheaders.h b/ref/python/include/pgenheaders.h index 2049ae32..4843de6c 100644 --- a/ref/python/include/pgenheaders.h +++ b/ref/python/include/pgenheaders.h @@ -23,6 +23,7 @@ PyAPI_FUNC(void) PySys_WriteStderr(const char *format, ...) #define delbitset _Py_delbitset #define dumptree _Py_dumptree #define findlabel _Py_findlabel +#define freegrammar _Py_freegrammar #define mergebitset _Py_mergebitset #define meta_grammar _Py_meta_grammar #define newbitset _Py_newbitset diff --git a/ref/python/include/py_curses.h b/ref/python/include/py_curses.h index 657816cb..eb77e35d 100644 --- a/ref/python/include/py_curses.h +++ b/ref/python/include/py_curses.h @@ -7,14 +7,9 @@ ** On Mac OS X 10.2 [n]curses.h and stdlib.h use different guards ** against multiple definition of wchar_t. */ -#ifdef _BSD_WCHAR_T_DEFINED_ +#ifdef _BSD_WCHAR_T_DEFINED_ #define _WCHAR_T #endif - -/* the following define is necessary for OS X 10.6; without it, the - Apple-supplied ncurses.h sets NCURSES_OPAQUE to 1, and then Python - can't get at the WINDOW flags field. */ -#define NCURSES_OPAQUE 0 #endif /* __APPLE__ */ #ifdef __FreeBSD__ @@ -22,7 +17,7 @@ ** On FreeBSD, [n]curses.h and stdlib.h/wchar.h use different guards ** against multiple definition of wchar_t and wint_t. */ -#ifdef _XOPEN_SOURCE_EXTENDED +#ifdef _XOPEN_SOURCE_EXTENDED #ifndef __FreeBSD_version #include #endif @@ -44,22 +39,28 @@ #endif #endif +#if !defined(HAVE_CURSES_IS_PAD) && defined(WINDOW_HAS_FLAGS) +/* The following definition is necessary for ncurses 5.7; without it, + some of [n]curses.h set NCURSES_OPAQUE to 1, and then Python + can't get at the WINDOW flags field. */ +#define NCURSES_OPAQUE 0 +#endif + #ifdef HAVE_NCURSES_H #include #else #include -#ifdef HAVE_TERM_H -/* for tigetstr, which is not declared in SysV curses */ -#include -#endif #endif #ifdef HAVE_NCURSES_H /* configure was checking , but we will - use , which has all these features. */ -#ifndef WINDOW_HAS_FLAGS + use , which has some or all these features. */ +#if !defined(WINDOW_HAS_FLAGS) && !(NCURSES_OPAQUE+0) #define WINDOW_HAS_FLAGS 1 #endif +#if !defined(HAVE_CURSES_IS_PAD) && NCURSES_VERSION_PATCH+0 >= 20090906 +#define HAVE_CURSES_IS_PAD 1 +#endif #ifndef MVWDELCH_IS_EXPRESSION #define MVWDELCH_IS_EXPRESSION 1 #endif @@ -74,11 +75,11 @@ extern "C" { /* Type declarations */ typedef struct { - PyObject_HEAD - WINDOW *win; + PyObject_HEAD + WINDOW *win; } PyCursesWindowObject; -#define PyCursesWindow_Check(v) (Py_TYPE(v) == &PyCursesWindow_Type) +#define PyCursesWindow_Check(v) (Py_TYPE(v) == &PyCursesWindow_Type) #define PyCurses_CAPSULE_NAME "_curses._C_API" diff --git a/ref/python/include/pyconfig.h b/ref/python/include/pyconfig.h index 1cfc59b8..92fa395e 100644 --- a/ref/python/include/pyconfig.h +++ b/ref/python/include/pyconfig.h @@ -148,7 +148,11 @@ WIN32 is still required for the locale module. #define COMPILER _Py_PASTE_VERSION("64 bit (Itanium)") #define MS_WINI64 #elif defined(_M_X64) || defined(_M_AMD64) +#ifdef __INTEL_COMPILER +#define COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 64 bit (amd64) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]") +#else #define COMPILER _Py_PASTE_VERSION("64 bit (AMD64)") +#endif /* __INTEL_COMPILER */ #define MS_WINX64 #else #define COMPILER _Py_PASTE_VERSION("64 bit (Unknown)") @@ -156,19 +160,9 @@ WIN32 is still required for the locale module. #endif /* MS_WIN64 */ /* set the version macros for the windows headers */ -#ifdef MS_WINX64 -/* 64 bit only runs on XP or greater */ -#define Py_WINVER _WIN32_WINNT_WINXP -#define Py_NTDDI NTDDI_WINXP -#else -/* Python 2.6+ requires Windows 2000 or greater */ -#ifdef _WIN32_WINNT_WIN2K -#define Py_WINVER _WIN32_WINNT_WIN2K -#else -#define Py_WINVER 0x0500 -#endif -#define Py_NTDDI NTDDI_WIN2KSP4 -#endif +/* We require at least windows vista */ +#define Py_WINVER 0x0600 /* _WIN32_WINNT_VISTA */ +#define Py_NTDDI NTDDI_VISTA /* We only set these values when building Python - we don't want to force these values on extensions, as that will affect the prototypes and @@ -204,7 +198,11 @@ typedef _W64 int ssize_t; #if defined(MS_WIN32) && !defined(MS_WIN64) #ifdef _M_IX86 +#ifdef __INTEL_COMPILER +#define COMPILER ("[ICC v." _Py_STRINGIZE(__INTEL_COMPILER) " 32 bit (Intel) with MSC v." _Py_STRINGIZE(_MSC_VER) " CRT]") +#else #define COMPILER _Py_PASTE_VERSION("32 bit (Intel)") +#endif /* __INTEL_COMPILER */ #else #define COMPILER _Py_PASTE_VERSION("32 bit (Unknown)") #endif @@ -217,7 +215,6 @@ typedef int pid_t; #define Py_IS_INFINITY(X) (!_finite(X) && !_isnan(X)) #define Py_IS_FINITE(X) _finite(X) #define copysign _copysign -#define hypot _hypot #endif /* _MSC_VER */ @@ -270,7 +267,6 @@ typedef int pid_t; #endif #define COMPILER "[gcc]" -#define hypot _hypot #define PY_LONG_LONG long long #define PY_LLONG_MIN LLONG_MIN #define PY_LLONG_MAX LLONG_MAX @@ -342,7 +338,7 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */ # define SIZEOF_FPOS_T 8 # define SIZEOF_HKEY 8 # define SIZEOF_SIZE_T 8 -/* configure.in defines HAVE_LARGEFILE_SUPPORT iff HAVE_LONG_LONG, +/* configure.ac defines HAVE_LARGEFILE_SUPPORT iff HAVE_LONG_LONG, sizeof(off_t) > sizeof(long), and sizeof(PY_LONG_LONG) >= sizeof(off_t). On Win64 the second condition is not true, but if fpos_t replaces off_t then this is true. The uses of HAVE_LARGEFILE_SUPPORT imply that Win64 @@ -356,7 +352,7 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */ # define SIZEOF_FPOS_T 8 # define SIZEOF_HKEY 4 # define SIZEOF_SIZE_T 4 - /* MS VS2005 changes time_t to an 64-bit type on all platforms */ + /* MS VS2005 changes time_t to a 64-bit type on all platforms */ # if defined(_MSC_VER) && _MSC_VER >= 1400 # define SIZEOF_TIME_T 8 # else @@ -435,6 +431,11 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */ /* Define to 1 if you have the `copysign' function. */ #define HAVE_COPYSIGN 1 +/* Define to 1 if you have the `round' function. */ +#if _MSC_VER >= 1800 +#define HAVE_ROUND 1 +#endif + /* Define to 1 if you have the `isinf' macro. */ #define HAVE_DECL_ISINF 1 diff --git a/ref/python/include/pyerrors.h b/ref/python/include/pyerrors.h index dbe3bfa5..51134ef7 100644 --- a/ref/python/include/pyerrors.h +++ b/ref/python/include/pyerrors.h @@ -91,6 +91,7 @@ PyAPI_FUNC(void) PyErr_Restore(PyObject *, PyObject *, PyObject *); PyAPI_FUNC(int) PyErr_GivenExceptionMatches(PyObject *, PyObject *); PyAPI_FUNC(int) PyErr_ExceptionMatches(PyObject *); PyAPI_FUNC(void) PyErr_NormalizeException(PyObject**, PyObject**, PyObject**); +PyAPI_FUNC(void) _PyErr_ReplaceException(PyObject *, PyObject *, PyObject *); /* */ @@ -214,7 +215,7 @@ PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErr(PyObject *, int); /* Export the old function so that the existing API remains available: */ PyAPI_FUNC(void) PyErr_BadInternalCall(void); -PyAPI_FUNC(void) _PyErr_BadInternalCall(char *filename, int lineno); +PyAPI_FUNC(void) _PyErr_BadInternalCall(const char *filename, int lineno); /* Mask the old API with a call to the new API for code compiled under Python 2.0: */ #define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__) diff --git a/ref/python/include/pyexpat.h b/ref/python/include/pyexpat.h index 5340ef5f..3fc5fa54 100644 --- a/ref/python/include/pyexpat.h +++ b/ref/python/include/pyexpat.h @@ -3,7 +3,7 @@ /* note: you must import expat.h before importing this module! */ -#define PyExpat_CAPI_MAGIC "pyexpat.expat_CAPI 1.0" +#define PyExpat_CAPI_MAGIC "pyexpat.expat_CAPI 1.1" #define PyExpat_CAPSULE_NAME "pyexpat.expat_CAPI" struct PyExpat_CAPI @@ -43,6 +43,8 @@ struct PyExpat_CAPI XML_Parser parser, XML_UnknownEncodingHandler handler, void *encodingHandlerData); void (*SetUserData)(XML_Parser parser, void *userData); + /* might be none for expat < 2.1.0 */ + int (*SetHashSalt)(XML_Parser parser, unsigned long hash_salt); /* always add new stuff to the end! */ }; diff --git a/ref/python/include/pyfpe.h b/ref/python/include/pyfpe.h index 19110ab0..f9a15e62 100644 --- a/ref/python/include/pyfpe.h +++ b/ref/python/include/pyfpe.h @@ -4,8 +4,8 @@ extern "C" { #endif /* - --------------------------------------------------------------------- - / Copyright (c) 1996. \ + --------------------------------------------------------------------- + / Copyright (c) 1996. \ | The Regents of the University of California. | | All rights reserved. | | | @@ -37,18 +37,18 @@ extern "C" { | opinions of authors expressed herein do not necessarily state or | | reflect those of the United States Government or the University | | of California, and shall not be used for advertising or product | - \ endorsement purposes. / - --------------------------------------------------------------------- + \ endorsement purposes. / + --------------------------------------------------------------------- */ /* * Define macros for handling SIGFPE. * Lee Busby, LLNL, November, 1996 * busby1@llnl.gov - * + * ********************************************* * Overview of the system for handling SIGFPE: - * + * * This file (Include/pyfpe.h) defines a couple of "wrapper" macros for * insertion into your Python C code of choice. Their proper use is * discussed below. The file Python/pyfpe.c defines a pair of global @@ -59,33 +59,33 @@ extern "C" { * named fpectl. This module is standard in every respect. It can be loaded * either statically or dynamically as you choose, and like any other * Python module, has no effect until you import it. - * + * * In the general case, there are three steps toward handling SIGFPE in any * Python code: - * + * * 1) Add the *_PROTECT macros to your C code as required to protect * dangerous floating point sections. - * + * * 2) Turn on the inclusion of the code by adding the ``--with-fpectl'' * flag at the time you run configure. If the fpectl or other modules * which use the *_PROTECT macros are to be dynamically loaded, be * sure they are compiled with WANT_SIGFPE_HANDLER defined. - * + * * 3) When python is built and running, import fpectl, and execute * fpectl.turnon_sigfpe(). This sets up the signal handler and enables * generation of SIGFPE whenever an exception occurs. From this point * on, any properly trapped SIGFPE should result in the Python * FloatingPointError exception. - * + * * Step 1 has been done already for the Python kernel code, and should be * done soon for the NumPy array package. Step 2 is usually done once at * python install time. Python's behavior with respect to SIGFPE is not * changed unless you also do step 3. Thus you can control this new * facility at compile time, or run time, or both. - * - ******************************** + * + ******************************** * Using the macros in your code: - * + * * static PyObject *foobar(PyObject *self,PyObject *args) * { * .... @@ -94,17 +94,17 @@ extern "C" { * PyFPE_END_PROTECT(result) * .... * } - * + * * If a floating point error occurs in dangerous_op, foobar returns 0 (NULL), * after setting the associated value of the FloatingPointError exception to * "Error in foobar". ``Dangerous_op'' can be a single operation, or a block * of code, function calls, or any combination, so long as no alternate * return is possible before the PyFPE_END_PROTECT macro is reached. - * + * * The macros can only be used in a function context where an error return * can be recognized as signaling a Python exception. (Generally, most * functions that return a PyObject * will qualify.) - * + * * Guido's original design suggestion for PyFPE_START_PROTECT and * PyFPE_END_PROTECT had them open and close a local block, with a locally * defined jmp_buf and jmp_buf pointer. This would allow recursive nesting @@ -112,17 +112,17 @@ extern "C" { * variables need to be declared with the "volatile" type qualifier to keep * setjmp from corrupting their values. Some current implementations seem * to be more restrictive. For example, the HPUX man page for setjmp says - * + * * Upon the return from a setjmp() call caused by a longjmp(), the * values of any non-static local variables belonging to the routine * from which setjmp() was called are undefined. Code which depends on * such values is not guaranteed to be portable. - * + * * I therefore decided on a more limited form of nesting, using a counter * variable (PyFPE_counter) to keep track of any recursion. If an exception * occurs in an ``inner'' pair of macros, the return will apparently * come from the outermost level. - * + * */ #ifdef WANT_SIGFPE_HANDLER @@ -146,14 +146,14 @@ if (!PyFPE_counter++ && setjmp(PyFPE_jbuf)) { \ * this statement so that it gets executed *before* the unsafe expression * which we're trying to protect. That pretty well messes things up, * of course. - * + * * If the expression(s) you're trying to protect don't happen to return a * value, you will need to manufacture a dummy result just to preserve the * correct ordering of statements. Note that the macro passes the address * of its argument (so you need to give it something which is addressable). * If your expression returns multiple results, pass the last such result * to PyFPE_END_PROTECT. - * + * * Note that PyFPE_dummy returns a double, which is cast to int. * This seeming insanity is to tickle the Floating Point Unit (FPU). * If an exception has occurred in a preceding floating point operation, diff --git a/ref/python/include/pymacconfig.h b/ref/python/include/pymacconfig.h index 24e7b8da..9dde11bd 100644 --- a/ref/python/include/pymacconfig.h +++ b/ref/python/include/pymacconfig.h @@ -63,10 +63,10 @@ # if defined(__LP64__) /* MacOSX 10.4 (the first release to support 64-bit code * at all) only supports 64-bit in the UNIX layer. - * Therefore surpress the toolbox-glue in 64-bit mode. + * Therefore suppress the toolbox-glue in 64-bit mode. */ - /* In 64-bit mode setpgrp always has no argments, in 32-bit + /* In 64-bit mode setpgrp always has no arguments, in 32-bit * mode that depends on the compilation environment */ # undef SETPGRP_HAVE_ARG @@ -91,7 +91,7 @@ * * Specifically: OSX 10.4 has limited supported for '%zd', while * 10.5 has full support for '%zd'. A binary built on 10.5 won't - * work properly on 10.4 unless we surpress the definition + * work properly on 10.4 unless we suppress the definition * of PY_FORMAT_SIZE_T */ #undef PY_FORMAT_SIZE_T diff --git a/ref/python/include/pymactoolbox.h b/ref/python/include/pymactoolbox.h index fd159752..6e48ca36 100644 --- a/ref/python/include/pymactoolbox.h +++ b/ref/python/include/pymactoolbox.h @@ -9,9 +9,24 @@ #include -#ifndef __LP64__ +/* +** Issue #27806: Workaround for gcc 4.x which does not have _has_include. +*/ +#ifndef __has_include +#define __has_include(x) 0 +#endif +/* Workaround */ + +#if __has_include() +#include +#define APPLE_SUPPORTS_QUICKTIME (__MAC_OS_X_VERSION_MAX_ALLOWED < 101200) && !__LP64__ +#else +#define APPLE_SUPPORTS_QUICKTIME !__LP64__ +#endif + +#if APPLE_SUPPORTS_QUICKTIME #include -#endif /* !__LP64__ */ +#endif /* APPLE_SUPPORTS_QUICKTIME */ /* ** Helper routines for error codes and such. @@ -21,10 +36,10 @@ extern PyObject *PyMac_OSErrException; /* Exception for OSErr */ PyObject *PyMac_GetOSErrException(void); /* Initialize & return it */ PyObject *PyErr_Mac(PyObject *, int); /* Exception with a mac error */ PyObject *PyMac_Error(OSErr); /* Uses PyMac_GetOSErrException */ -#ifndef __LP64__ +#if APPLE_SUPPORTS_QUICKTIME extern OSErr PyMac_GetFullPathname(FSSpec *, char *, int); /* convert fsspec->path */ -#endif /* __LP64__ */ +#endif /* APPLE_SUPPORTS_QUICKTIME */ /* ** These conversion routines are defined in mactoolboxglue.c itself. @@ -109,54 +124,54 @@ extern PyObject *CmpInstObj_New(ComponentInstance); extern int CmpInstObj_Convert(PyObject *, ComponentInstance *); /* Ctl exports */ -#ifndef __LP64__ +#if APPLE_SUPPORTS_QUICKTIME extern PyObject *CtlObj_New(ControlHandle); extern int CtlObj_Convert(PyObject *, ControlHandle *); -#endif /* !__LP64__ */ +#endif /* APPLE_SUPPORTS_QUICKTIME */ /* Dlg exports */ -#ifndef __LP64__ +#if APPLE_SUPPORTS_QUICKTIME extern PyObject *DlgObj_New(DialogPtr); extern int DlgObj_Convert(PyObject *, DialogPtr *); extern PyObject *DlgObj_WhichDialog(DialogPtr); -#endif /* !__LP64__ */ +#endif /* APPLE_SUPPORTS_QUICKTIME */ /* Drag exports */ -#ifndef __LP64__ +#if APPLE_SUPPORTS_QUICKTIME extern PyObject *DragObj_New(DragReference); extern int DragObj_Convert(PyObject *, DragReference *); -#endif /* !__LP64__ */ +#endif /* APPLE_SUPPORTS_QUICKTIME */ /* List exports */ -#ifndef __LP64__ +#if APPLE_SUPPORTS_QUICKTIME extern PyObject *ListObj_New(ListHandle); extern int ListObj_Convert(PyObject *, ListHandle *); -#endif /* !__LP64__ */ +#endif /* APPLE_SUPPORTS_QUICKTIME */ /* Menu exports */ -#ifndef __LP64__ +#if APPLE_SUPPORTS_QUICKTIME extern PyObject *MenuObj_New(MenuHandle); extern int MenuObj_Convert(PyObject *, MenuHandle *); -#endif /* !__LP64__ */ +#endif /* APPLE_SUPPORTS_QUICKTIME */ /* Qd exports */ -#ifndef __LP64__ +#if APPLE_SUPPORTS_QUICKTIME extern PyObject *GrafObj_New(GrafPtr); extern int GrafObj_Convert(PyObject *, GrafPtr *); extern PyObject *BMObj_New(BitMapPtr); extern int BMObj_Convert(PyObject *, BitMapPtr *); extern PyObject *QdRGB_New(RGBColor *); extern int QdRGB_Convert(PyObject *, RGBColor *); -#endif /* !__LP64__ */ +#endif /* APPLE_SUPPORTS_QUICKTIME */ /* Qdoffs exports */ -#ifndef __LP64__ +#if APPLE_SUPPORTS_QUICKTIME extern PyObject *GWorldObj_New(GWorldPtr); extern int GWorldObj_Convert(PyObject *, GWorldPtr *); -#endif /* !__LP64__ */ +#endif /* APPLE_SUPPORTS_QUICKTIME */ /* Qt exports */ -#ifndef __LP64__ +#if APPLE_SUPPORTS_QUICKTIME extern PyObject *TrackObj_New(Track); extern int TrackObj_Convert(PyObject *, Track *); extern PyObject *MovieObj_New(Movie); @@ -169,7 +184,7 @@ extern PyObject *UserDataObj_New(UserData); extern int UserDataObj_Convert(PyObject *, UserData *); extern PyObject *MediaObj_New(Media); extern int MediaObj_Convert(PyObject *, Media *); -#endif /* !__LP64__ */ +#endif /* APPLE_SUPPORTS_QUICKTIME */ /* Res exports */ extern PyObject *ResObj_New(Handle); @@ -178,17 +193,17 @@ extern PyObject *OptResObj_New(Handle); extern int OptResObj_Convert(PyObject *, Handle *); /* TE exports */ -#ifndef __LP64__ +#if APPLE_SUPPORTS_QUICKTIME extern PyObject *TEObj_New(TEHandle); extern int TEObj_Convert(PyObject *, TEHandle *); -#endif /* !__LP64__ */ +#endif /* APPLE_SUPPORTS_QUICKTIME */ /* Win exports */ -#ifndef __LP64__ +#if APPLE_SUPPORTS_QUICKTIME extern PyObject *WinObj_New(WindowPtr); extern int WinObj_Convert(PyObject *, WindowPtr *); extern PyObject *WinObj_WhichWindow(WindowPtr); -#endif /* !__LP64__ */ +#endif /* APPLE_SUPPORTS_QUICKTIME */ /* CF exports */ extern PyObject *CFObj_New(CFTypeRef); diff --git a/ref/python/include/pymath.h b/ref/python/include/pymath.h index f77ce930..b234f973 100644 --- a/ref/python/include/pymath.h +++ b/ref/python/include/pymath.h @@ -29,11 +29,11 @@ extern double hypot(double, double); /* extra declarations */ #ifndef _MSC_VER #ifndef __STDC__ -//extern double fmod (double, double); -//extern double frexp (double, int *); -//extern double ldexp (double, int); -//extern double modf (double, double *); -//extern double pow(double, double); +extern double fmod (double, double); +extern double frexp (double, int *); +extern double ldexp (double, int); +extern double modf (double, double *); +extern double pow(double, double); #endif /* __STDC__ */ #endif /* _MSC_VER */ @@ -43,7 +43,7 @@ extern int finite(double); extern double copysign(double, double); #endif -/* High precision defintion of pi and e (Euler) +/* High precision definition of pi and e (Euler) * The values are taken from libc6's math.h. */ #ifndef Py_MATH_PIl @@ -152,7 +152,29 @@ PyAPI_FUNC(void) _Py_set_387controlword(unsigned short); * doesn't support NaNs. */ #if !defined(Py_NAN) && !defined(Py_NO_NAN) -#define Py_NAN (Py_HUGE_VAL * 0.) +#if !defined(__INTEL_COMPILER) + #define Py_NAN (Py_HUGE_VAL * 0.) +#else /* __INTEL_COMPILER */ + #if defined(ICC_NAN_STRICT) + #pragma float_control(push) + #pragma float_control(precise, on) + #pragma float_control(except, on) + #if defined(_MSC_VER) + __declspec(noinline) + #else /* Linux */ + __attribute__((noinline)) + #endif /* _MSC_VER */ + static double __icc_nan() + { + return sqrt(-1.0); + } + #pragma float_control (pop) + #define Py_NAN __icc_nan() + #else /* ICC_NAN_RELAXED as default for Intel Compiler */ + static union { unsigned char buf[8]; double __icc_nan; } __nan_store = {0,0,0,0,0,0,0xf8,0x7f}; + #define Py_NAN (__nan_store.__icc_nan) + #endif /* ICC_NAN_STRICT */ +#endif /* __INTEL_COMPILER */ #endif /* Py_OVERFLOWED(X) diff --git a/ref/python/include/pymem.h b/ref/python/include/pymem.h index 10b5bea5..2c239df5 100644 --- a/ref/python/include/pymem.h +++ b/ref/python/include/pymem.h @@ -72,9 +72,9 @@ PyAPI_FUNC(void) PyMem_Free(void *); /* Returns NULL to indicate error if a negative size or size larger than Py_ssize_t can represent is supplied. Helps prevents security holes. */ #define PyMem_MALLOC(n) ((size_t)(n) > (size_t)PY_SSIZE_T_MAX ? NULL \ - : malloc((n) ? (n) : 1)) + : malloc(((n) != 0) ? (n) : 1)) #define PyMem_REALLOC(p, n) ((size_t)(n) > (size_t)PY_SSIZE_T_MAX ? NULL \ - : realloc((p), (n) ? (n) : 1)) + : realloc((p), ((n) != 0) ? (n) : 1)) #define PyMem_FREE free #endif /* PYMALLOC_DEBUG */ diff --git a/ref/python/include/pyport.h b/ref/python/include/pyport.h index 693d0935..6848075f 100644 --- a/ref/python/include/pyport.h +++ b/ref/python/include/pyport.h @@ -93,9 +93,12 @@ Used in: PY_LONG_LONG * uint32_t to be such a type unless stdint.h or inttypes.h defines uint32_t. * However, it doesn't set HAVE_UINT32_T, so we do that here. */ -#if (defined UINT32_MAX || defined uint32_t) -#ifndef PY_UINT32_T +#ifdef uint32_t #define HAVE_UINT32_T 1 +#endif + +#ifdef HAVE_UINT32_T +#ifndef PY_UINT32_T #define PY_UINT32_T uint32_t #endif #endif @@ -103,23 +106,33 @@ Used in: PY_LONG_LONG /* Macros for a 64-bit unsigned integer type; used for type 'twodigits' in the * long integer implementation, when 30-bit digits are enabled. */ -#if (defined UINT64_MAX || defined uint64_t) -#ifndef PY_UINT64_T +#ifdef uint64_t #define HAVE_UINT64_T 1 +#endif + +#ifdef HAVE_UINT64_T +#ifndef PY_UINT64_T #define PY_UINT64_T uint64_t #endif #endif /* Signed variants of the above */ -#if (defined INT32_MAX || defined int32_t) -#ifndef PY_INT32_T +#ifdef int32_t #define HAVE_INT32_T 1 +#endif + +#ifdef HAVE_INT32_T +#ifndef PY_INT32_T #define PY_INT32_T int32_t #endif #endif -#if (defined INT64_MAX || defined int64_t) -#ifndef PY_INT64_T + +#ifdef int64_t #define HAVE_INT64_T 1 +#endif + +#ifdef HAVE_INT64_T +#ifndef PY_INT64_T #define PY_INT64_T int64_t #endif #endif @@ -252,7 +265,7 @@ typedef Py_intptr_t Py_ssize_t; * for platforms that support that. * * If PY_LOCAL_AGGRESSIVE is defined before python.h is included, more - * "aggressive" inlining/optimizaion is enabled for the entire module. This + * "aggressive" inlining/optimization is enabled for the entire module. This * may lead to code bloat, and may slow things down for those reasons. It may * also lead to errors, if the code relies on pointer aliasing. Use with * care. @@ -272,8 +285,8 @@ typedef Py_intptr_t Py_ssize_t; /* ignore warnings if the compiler decides not to inline a function */ #pragma warning(disable: 4710) /* fastest possible local call under MSVC */ -#define Py_LOCAL(type) static type -#define Py_LOCAL_INLINE(type) static __inline type +#define Py_LOCAL(type) static type __fastcall +#define Py_LOCAL_INLINE(type) static __inline type __fastcall #elif defined(USE_INLINE) #define Py_LOCAL(type) static type #define Py_LOCAL_INLINE(type) static inline type @@ -549,6 +562,30 @@ extern "C" { _Py_set_387controlword(old_387controlword) #endif +/* get and set x87 control word for VisualStudio/x86 */ +#if defined(_MSC_VER) && !defined(_WIN64) /* x87 not supported in 64-bit */ +#define HAVE_PY_SET_53BIT_PRECISION 1 +#define _Py_SET_53BIT_PRECISION_HEADER \ + unsigned int old_387controlword, new_387controlword, out_387controlword +/* We use the __control87_2 function to set only the x87 control word. + The SSE control word is unaffected. */ +#define _Py_SET_53BIT_PRECISION_START \ + do { \ + __control87_2(0, 0, &old_387controlword, NULL); \ + new_387controlword = \ + (old_387controlword & ~(_MCW_PC | _MCW_RC)) | (_PC_53 | _RC_NEAR); \ + if (new_387controlword != old_387controlword) \ + __control87_2(new_387controlword, _MCW_PC | _MCW_RC, \ + &out_387controlword, NULL); \ + } while (0) +#define _Py_SET_53BIT_PRECISION_END \ + do { \ + if (new_387controlword != old_387controlword) \ + __control87_2(old_387controlword, _MCW_PC | _MCW_RC, \ + &out_387controlword, NULL); \ + } while (0) +#endif + /* default definitions are empty */ #ifndef HAVE_PY_SET_53BIT_PRECISION #define _Py_SET_53BIT_PRECISION_HEADER @@ -622,7 +659,7 @@ extern char * _getpty(int *, int, mode_t, int); /* On QNX 6, struct termio must be declared by including sys/termio.h if TCGETA, TCSETA, TCSETAW, or TCSETAF are used. sys/termio.h must be included before termios.h or it will generate an error. */ -#ifdef HAVE_SYS_TERMIO_H +#if defined(HAVE_SYS_TERMIO_H) && !defined(__hpux) #include #endif @@ -665,7 +702,9 @@ extern int fdatasync(int); #ifdef __FreeBSD__ #include -#if __FreeBSD_version > 500039 +#if (__FreeBSD_version >= 500040 && __FreeBSD_version < 602113) || \ + (__FreeBSD_version >= 700000 && __FreeBSD_version < 700054) || \ + (__FreeBSD_version >= 800000 && __FreeBSD_version < 800001) # define _PY_PORT_CTYPE_UTF8_ISSUE #endif #endif @@ -676,6 +715,12 @@ extern int fdatasync(int); #endif #ifdef _PY_PORT_CTYPE_UTF8_ISSUE +#ifndef __cplusplus + /* The workaround below is unsafe in C++ because + * the defines these symbols as real functions, + * with a slightly different signature. + * See issue #10910 + */ #include #include #undef isalnum @@ -693,6 +738,7 @@ extern int fdatasync(int); #undef toupper #define toupper(c) towupper(btowc(c)) #endif +#endif /* Declarations for symbol visibility. @@ -900,5 +946,24 @@ typedef struct fd_set { #ifndef Py_ULL #define Py_ULL(x) Py_LL(x##U) #endif +#ifdef Py_BUILD_CORE +/* + * Macros to protect CRT calls against instant termination when passed an + * invalid parameter (issue23524). + */ +#if defined _MSC_VER && _MSC_VER >= 1900 + +extern _invalid_parameter_handler _Py_silent_invalid_parameter_handler; +#define _Py_BEGIN_SUPPRESS_IPH { _invalid_parameter_handler _Py_old_handler = \ + _set_thread_local_invalid_parameter_handler(_Py_silent_invalid_parameter_handler); +#define _Py_END_SUPPRESS_IPH _set_thread_local_invalid_parameter_handler(_Py_old_handler); } + +#else + +#define _Py_BEGIN_SUPPRESS_IPH +#define _Py_END_SUPPRESS_IPH + +#endif /* _MSC_VER >= 1900 */ +#endif /* Py_BUILD_CORE */ #endif /* Py_PYPORT_H */ diff --git a/ref/python/include/pystate.h b/ref/python/include/pystate.h index 8d74940f..f2cfc302 100644 --- a/ref/python/include/pystate.h +++ b/ref/python/include/pystate.h @@ -95,6 +95,9 @@ typedef struct _ts { PyObject *async_exc; /* Asynchronous exception to raise */ long thread_id; /* Thread id where this tstate was created */ + int trash_delete_nesting; + PyObject *trash_delete_later; + /* XXX signal handlers should also be here */ } PyThreadState; diff --git a/ref/python/include/pythonrun.h b/ref/python/include/pythonrun.h index 6bfc1750..f0f4e382 100644 --- a/ref/python/include/pythonrun.h +++ b/ref/python/include/pythonrun.h @@ -111,11 +111,10 @@ PyAPI_FUNC(const char *) Py_GetPlatform(void); PyAPI_FUNC(const char *) Py_GetCopyright(void); PyAPI_FUNC(const char *) Py_GetCompiler(void); PyAPI_FUNC(const char *) Py_GetBuildInfo(void); -PyAPI_FUNC(const char *) _Py_svnversion(void); PyAPI_FUNC(const char *) Py_SubversionRevision(void); PyAPI_FUNC(const char *) Py_SubversionShortBranch(void); -PyAPI_FUNC(const char *) _Py_hgidentifier(void); -PyAPI_FUNC(const char *) _Py_hgversion(void); +PyAPI_FUNC(const char *) _Py_gitidentifier(void); +PyAPI_FUNC(const char *) _Py_gitversion(void); /* Internal -- various one-time initializations */ PyAPI_FUNC(PyObject *) _PyBuiltin_Init(void); @@ -145,6 +144,7 @@ PyAPI_FUNC(void) PyInt_Fini(void); PyAPI_FUNC(void) PyFloat_Fini(void); PyAPI_FUNC(void) PyOS_FiniInterrupts(void); PyAPI_FUNC(void) PyByteArray_Fini(void); +PyAPI_FUNC(void) _PyRandom_Fini(void); /* Stuff with no proper home (yet) */ PyAPI_FUNC(char *) PyOS_Readline(FILE *, FILE *, char *); @@ -154,7 +154,7 @@ PyAPI_DATA(PyThreadState*) _PyOS_ReadlineTState; /* Stack size, in "pointers" (so we get extra safety margins on 64-bit platforms). On a 32-bit platform, this translates - to a 8k margin. */ + to an 8k margin. */ #define PYOS_STACK_MARGIN 2048 #if defined(WIN32) && !defined(MS_WIN64) && defined(_MSC_VER) && _MSC_VER >= 1300 diff --git a/ref/python/include/sliceobject.h b/ref/python/include/sliceobject.h index 8ab62dd4..a10cc05f 100644 --- a/ref/python/include/sliceobject.h +++ b/ref/python/include/sliceobject.h @@ -38,6 +38,12 @@ PyAPI_FUNC(int) PySlice_GetIndicesEx(PySliceObject *r, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength); +PyAPI_FUNC(int) _PySlice_Unpack(PyObject *slice, + Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step); +PyAPI_FUNC(Py_ssize_t) _PySlice_AdjustIndices(Py_ssize_t length, + Py_ssize_t *start, Py_ssize_t *stop, + Py_ssize_t step); + #ifdef __cplusplus } #endif diff --git a/ref/python/include/stringobject.h b/ref/python/include/stringobject.h index 18b5b411..12cc093c 100644 --- a/ref/python/include/stringobject.h +++ b/ref/python/include/stringobject.h @@ -129,7 +129,7 @@ PyAPI_FUNC(PyObject*) PyString_AsEncodedObject( /* Encodes a string object and returns the result as Python string object. - If the codec returns an Unicode object, the object is converted + If the codec returns a Unicode object, the object is converted back to a string using the default encoding. DEPRECATED - use PyString_AsEncodedObject() instead. */ @@ -152,7 +152,7 @@ PyAPI_FUNC(PyObject*) PyString_AsDecodedObject( /* Decodes a string object and returns the result as Python string object. - If the codec returns an Unicode object, the object is converted + If the codec returns a Unicode object, the object is converted back to a string using the default encoding. DEPRECATED - use PyString_AsDecodedObject() instead. */ @@ -164,7 +164,7 @@ PyAPI_FUNC(PyObject*) PyString_AsDecodedString( ); /* Provides access to the internal data buffer and size of a string - object or the default encoded version of an Unicode object. Passing + object or the default encoded version of a Unicode object. Passing NULL as *len parameter will force the string buffer to be 0-terminated (passing a string with embedded NULL characters will cause an exception). */ diff --git a/ref/python/include/sysmodule.h b/ref/python/include/sysmodule.h index 16af1196..67879780 100644 --- a/ref/python/include/sysmodule.h +++ b/ref/python/include/sysmodule.h @@ -19,13 +19,12 @@ PyAPI_FUNC(void) PySys_WriteStdout(const char *format, ...) PyAPI_FUNC(void) PySys_WriteStderr(const char *format, ...) Py_GCC_ATTRIBUTE((format(printf, 1, 2))); -PyAPI_DATA(PyObject *) _PySys_TraceFunc, *_PySys_ProfileFunc; -PyAPI_DATA(int) _PySys_CheckInterval; - PyAPI_FUNC(void) PySys_ResetWarnOptions(void); PyAPI_FUNC(void) PySys_AddWarnOption(char *); PyAPI_FUNC(int) PySys_HasWarnOptions(void); +PyAPI_FUNC(size_t) _PySys_GetSizeOf(PyObject *); + #ifdef __cplusplus } #endif diff --git a/ref/python/include/timefuncs.h b/ref/python/include/timefuncs.h index 553142db..a9d26a77 100644 --- a/ref/python/include/timefuncs.h +++ b/ref/python/include/timefuncs.h @@ -16,6 +16,9 @@ extern "C" { */ PyAPI_FUNC(time_t) _PyTime_DoubleToTimet(double x); +/* Get the current time since the epoch in seconds */ +PyAPI_FUNC(double) _PyTime_FloatTime(void); + #ifdef __cplusplus } diff --git a/ref/python/include/unicodeobject.h b/ref/python/include/unicodeobject.h index 9ab724aa..7781f966 100644 --- a/ref/python/include/unicodeobject.h +++ b/ref/python/include/unicodeobject.h @@ -395,7 +395,7 @@ typedef PY_UNICODE_TYPE Py_UNICODE; #define Py_UNICODE_FILL(target, value, length) \ do {Py_ssize_t i_; Py_UNICODE *t_ = (target); Py_UNICODE v_ = (value);\ - for (i_ = 0; i_ < (length); i_++) t_[i_] = v_;\ + for (i_ = 0; i_ < (length); i_++) t_[i_] = v_;\ } while (0) /* Check if substring matches at given offset. the offset must be @@ -513,7 +513,7 @@ PyAPI_FUNC(int) PyUnicode_Resize( Py_ssize_t length /* New length */ ); -/* Coerce obj to an Unicode object and return a reference with +/* Coerce obj to a Unicode object and return a reference with *incremented* refcount. Coercion is done in the following way: @@ -536,7 +536,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_FromEncodedObject( const char *errors /* error handling */ ); -/* Coerce obj to an Unicode object and return a reference with +/* Coerce obj to a Unicode object and return a reference with *incremented* refcount. Unicode objects are passed back as-is (subclasses are converted to @@ -1138,7 +1138,7 @@ PyAPI_FUNC(int) PyUnicode_EncodeDecimal( These are capable of handling Unicode objects and strings on input (we refer to them as strings in the descriptions) and return - Unicode objects or integers as apporpriate. */ + Unicode objects or integers as appropriate. */ /* Concat two strings giving a new Unicode string. */ @@ -1288,7 +1288,7 @@ PyAPI_FUNC(int) PyUnicode_Compare( /* Rich compare two strings and return one of the following: - NULL in case an exception was raised - - Py_True or Py_False for successfuly comparisons + - Py_True or Py_False for successful comparisons - Py_NotImplemented in case the type combination is unknown Note that Py_EQ and Py_NE comparisons can cause a UnicodeWarning in @@ -1307,7 +1307,7 @@ PyAPI_FUNC(PyObject *) PyUnicode_RichCompare( int op /* Operation: Py_EQ, Py_NE, Py_GT, etc. */ ); -/* Apply a argument tuple or dictionary to a format string and return +/* Apply an argument tuple or dictionary to a format string and return the resulting Unicode string. */ PyAPI_FUNC(PyObject *) PyUnicode_Format( @@ -1318,7 +1318,7 @@ PyAPI_FUNC(PyObject *) PyUnicode_Format( /* Checks whether element is contained in container and return 1/0 accordingly. - element has to coerce to an one element Unicode string. -1 is + element has to coerce to a one element Unicode string. -1 is returned in case of an error. */ PyAPI_FUNC(int) PyUnicode_Contains( diff --git a/ref/python/include/weakrefobject.h b/ref/python/include/weakrefobject.h index f15c9d9c..e7c0eae5 100644 --- a/ref/python/include/weakrefobject.h +++ b/ref/python/include/weakrefobject.h @@ -49,9 +49,6 @@ PyAPI_DATA(PyTypeObject) _PyWeakref_CallableProxyType; ((Py_TYPE(op) == &_PyWeakref_ProxyType) || \ (Py_TYPE(op) == &_PyWeakref_CallableProxyType)) -/* This macro calls PyWeakref_CheckRef() last since that can involve a - function call; this makes it more likely that the function call - will be avoided. */ #define PyWeakref_Check(op) \ (PyWeakref_CheckRef(op) || PyWeakref_CheckProxy(op)) @@ -66,7 +63,17 @@ PyAPI_FUNC(Py_ssize_t) _PyWeakref_GetWeakrefCount(PyWeakReference *head); PyAPI_FUNC(void) _PyWeakref_ClearRef(PyWeakReference *self); -#define PyWeakref_GET_OBJECT(ref) (((PyWeakReference *)(ref))->wr_object) +/* Explanation for the Py_REFCNT() check: when a weakref's target is part + of a long chain of deallocations which triggers the trashcan mechanism, + clearing the weakrefs can be delayed long after the target's refcount + has dropped to zero. In the meantime, code accessing the weakref will + be able to "see" the target object even though it is supposed to be + unreachable. See issue #16602. */ + +#define PyWeakref_GET_OBJECT(ref) \ + (Py_REFCNT(((PyWeakReference *)(ref))->wr_object) > 0 \ + ? ((PyWeakReference *)(ref))->wr_object \ + : Py_None) #ifdef __cplusplus diff --git a/ref/python/lib/x64/_bsddb.lib b/ref/python/lib/x64/_bsddb.lib deleted file mode 100644 index 0ceefdeb6b844aea22af30cd1dce4b7738649042..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1884 zcmcIlPfrs;6#sQg!EQWMCB}osH6c+iwUpi3CWb7Ei4CPRr5rpBZC79q*am6>CvPMs zq!+(}AHs_XAHahqo`?rN1ZVNR`P1$O&|>N&Gw<*2yx+X{W*$6i?zFe&?I%ur%z8P` zE6o*irMNz)#o0npbL%#MDIjqSOc0wY0F$SB_KEg|C@J72@a`i>MTx+b(%G`LhR$UT{3ylT(Al&YX@NL)=-F@|sm=Li?tctxd#-~G!DMEIf zpoJh7NI0DY`ZNhR60ndW1J5Kycy+YrqK+tHFe8|Z{?e0@zS-`6pm6^!qi)IMcHIsR zlKB4N%WInuUn7J(vca3yyUm$ZB>_G$hepuUN9K7p44S>>Ox~ELiTO(NL@Sa+edLa` zA61JQ*NOb1d7?zQ`f!dc;%*=}|c;nK?~Qih}TR=(&CZcEc!KWPV*;fqi05547?gW}%g z-ii(%zUeL3=-Kaw5j17Lai8ueCwrInA6GTHdGk8)E5!X79Pqt$TVkAmd>Yi98ENVv ZJ6iT!lRPKB%N^P!L3e)q0UBN&zX6G)ZI}Q6 diff --git a/ref/python/lib/x64/_ctypes.lib b/ref/python/lib/x64/_ctypes.lib deleted file mode 100644 index 15c9b94bbdc3d31ea3e4378bce42bc6ef168a3d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1716 zcmcIlPfHs?6#wNneQ$Oq*`TqBv=e6DpLw(M{`}r#=2P{cw)Z(XZ}g4@D`Q!O zTs~Xq)n}BrkjpA=I|<+o5IF;4S3vw87;$(CQCizrcPnD~%jS|>+Ni9%LeyHv&H5pP zC~rB=Qv>`|7QudHWvjd@mW!1lo$&XY!vF5K^f$u%(EgiU|Kk+ESp>L>0rw<0BQhXF z5JjARF}nK|k-Y41|2TsTrJKi|4C-%{Fbla(CA@YF(XAL$(3w?w;1j;DURUjmb822pt=%t6{ytiyHiOpr9ls zQMk0e3Pyc_k_?4A5K^+1?%wUB*N#f0TuSHI#pjXY1zVjpgp{0CGEy$IpeQ5dzaU_c zx=xc5eIJ;iv-UCnq`z+If}qIHXYGalvUH-jKe@lc!-lQ<%hYNzJ7{M6 g0&>{Qnx;yu!T%xLq+Xj}uXhwBzr5l1J@jon0tL83B>(^b diff --git a/ref/python/lib/x64/_ctypes_test.lib b/ref/python/lib/x64/_ctypes_test.lib deleted file mode 100644 index 525bd2a2b6caf863a0ce4a52491ed9077af72407..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21828 zcmc&+TZmjm8vadUj4`g+sEJ06ll$a0_nyq;Iy32HGMP)}7B4a8qiCqX{aZ=fZxb;c{6SF(DQIU>()Mkr2OW4% zQ43Pgj&BrQL<%~AHkgjSEvauEk)W55f_jfgN}?^Mp06bxL;sk1&<4}7QAs^ehpF#J zNk{jhT~P0bk|qn#2Q+kD(&;uLLGL03jie=w9Ux*F{#DZG4I-xDwiPC##_!?z@zXhIou_;pFgza(Nh4BeTIpOCa*nt*Ohr>;vH$G9?`LZ6t%XC)21iFQGQ zw4GfQ-9-s7*$0v@B4~$Np9{0Sd($)FwqF2f;mdNu)&I}EeOVQsP|qT=Oe^Ch!4RK^(0X6H|*FJ`ASNEu_%D`rbxSKiAl%}$YBk{U=}+l(opOOr3m zon9*S7N>QW3`T#pG!Ed@>~tZkIvm0>(apTXW{$=(^W)jlQgN1>S1lWi(K!tGfLU42 z!6aYt@=#YKT2BmlI>}6tn%s=yW)z&1$tiBm;*Kfqn8jUC+y#p}q_{&Cx1hKMi#wpW z0~S{(f&S(#?nxzk(&El2?u^ClQ`|m_n^xSk;);PXMoW&7IZ~X@ko;GU9p`g`qeqB2 zV}hechdB#^qeq50LxQ76g*gSm(Idi~0m0Fu!JNF{=#gN~Nx{*hz?>Pu(Idc|KEcu2 zGbb%LT5~bi$}E!R7%8K$Y(klY)>k~M3_@!xc*-2K&Vr|mL2E5|$`rKTf~O2YYc6=o z47Bcor;I>rFL=rXwElvp3_y>7;OXhtv!C;lJSbX!WW`i#-BA`3t@TD(OtaP*WiiQG zUzEiZYh6(m6Rh<_Sxm3i5oIyCT0fM<)N0*O789%WLRn0!)(K@fsY;)v+4;x1WuHS`PpgJ6SrK*r;DlL zRc|_5A~P@1#8y&Fm9kjsv8jlhtbx3_*EmJhSKirpo%hmLucR>6Zdvpkk4}vC4)=~E zkN5XakW+M9no1Q4X&%c3ZvnIKx9ITYn3UJ%y?p3XlJ7jVfY&!)$ie9Rh5}XvSy)_| zu(raW#_#P5`O=Ix&pQZj*#46h>K)Aa{L<_t<0(~kq%zrJHWz~7@SUf)2RwB+BUrss zJRyDgs`tXwVj(+AK~Bz>EN7PHRSoC-np`oPWxhy#?qaE^RP6Mu-0EnxpFl$P4m$)I+a8B3EW6de$P@yuC z?~iIekM&ir4qR~RlS!=qx}FPeeFpo1Uyp)QpDGqpR|5%Ilrq88PNgq-1sr;_-1#Lw z+xbnFS2<(L0>$jKmzi5i^Lf*H(yXZP97ZSPA?E%GU%$Ou`}#`+@3MjD@9=fB7BuBFqo zh905^=>fWnmRaRt8lep3X@b)96rG`G=^QOmiIyl!&ry!1X^PI$)AS6@(A~6>CTW~f zbRUh;YPy$J&?tFykuFhzF3@EOo19XJ?={OyuUOGk1w2k)B9@<4a zsfD)F4r-#kw3`~~C`{-iouDN3(JIX=MY_MSk ztE)OlI!#Q4ZukBnD)eyY*UE#W+oC>Z+6S}{Df2)S^t0;y!);k@FJhZ;>MEWxqEB>p zaNux&!cIuxXUsb}7CVjW<4SbE3THmkIgr){rs;bGOl;$PP?U_a;FMjUL9ob_)S&~}7468&l0J^gk`5Bcl6K}q$!gMS(Q43Y&uY$SjRSXBe3F{yf_k=4VDtR7=z^#CKQN0+lkYY1ujE&DUaGDd^` ztTEqg(ri-?F3ae#<-8tR&g&uLydGH2>v2WiXvS#8XvAp4Xu@y750e|w$nx-w8xy9_O=c=gbX|s2$Ch_IImF0gOuF5PSc!+ADMKqun9XsR`OK_bHzn>`(!#LKK4M z)A5W0Z`Xg?@!XxbN3i?&4`>!<(dS)pV@u9H!bP=%lSO2kJNXlh36bB z@-i1hHk7xlmUPsr#oTw4%>~?Cy6uJ9UZTZXq{6Bya;$=}Dt4=FJ4AjRzYOEgrcm(m9!F8vPx7)iW?GZ>GP+~4hNXN zzvJkOxPl7CiU_g@+ltt(2ms5=02P7fg+d5HbIuDfXw7*kD1*2NHGm^;7DU)rMgBzy zS>7fH5g{Q2MDSQtBMi-Yl`R<2*Ltg)oeTdzy6bDLsNvc&q#NL`@^7uH=1zKW?LDaY zkEkXgcJGVphVxU!xy89$siARvSHsZ22t5Dt-x{#EH%!15xwZKBZjp1L(3`2b%k${= zy)XWge*fKk4i6Cba~Wyvdk~6Y&Wz>=Jtdlw>0lX%1Tu+$!+eA${2#Z4D2!ibtaB*+ zdEYSF7^}6OwuJih1h$xYb(yf9f1`i0-{IDiF|^^VVLgbZ$RAtJN4lU=wjOS`K2~uj zv-||mD_-7L{pPiGcb2_*{{=$S*hRc~h-S$jzq$P8nZF+D(Qh6iUh>Cs-|B)&S*|`~ zd?(|(1-*#ZJ`?_G$lpfs+nafnSGY|=-xYS8rtHXdOlc-uR6?1ODTW(_U`>-5XR@BG^i&e7~KpQtc&~U-3 z)+}Na?*^6`?5Y_{zwXW`Zp0|A1eOk*QJHa6tyRQ)-D4mL$Hi5v>iJ4k&}$p?TE%F= z(M~!5$=Wqcw1!*%lfdK{cYrB;uiAC=zrD2IfX%>LZQ&{JuC9ppS%}JitQoPh!kFTE zgVxxHI$|n4)Vdn@;8WlOWj#=Se9fqx z`q1yJMYw{(U6ZAES){-PuXc6nYzu#PaqWg%C>PrdMbwI%s4&~O6vPc!7_x}TyRfmY zkPlk8K{Uk$t$LIr-sXpFOgmiT0>`TD!xl0;Z50r5L95j^Y7bg(VFnSWnlUSkFz-Pd zEKCv7a^b2U*N8pn5gShi&1y%C*x4Vo5OoYLhMhfPJ=_?IiMU_Qns!uJ8Tf?zn1zbF ztlH5cPMwb<4q@JtxnR}4866c?`bVJI6Ts5njMs{jsIaOx0A~|M5D{1FcCVgzPf9%N z;;>e{D1WO#;psccTCoxp=8XO0&A=)PS(lk))mBpBtz*x1i$K&d@iM6D*RhCob1N*; zyphE%tvi^p;%#&Aa06U3UPpyDVLirjJL8GlWf!LE8H-r4c3{TLyNeif(qTU5y!a?| z+6gpVZpcezVc7@^ZHi6lRbbb+eZDdO$gt&r5`40XlY z<70_$4C;!t*T)jyH`EntpTyGNPSh2v$;aZ4p<{TnBJ90cVCio@T(zpU_lOmv1xV&? zWDI&mptUMA|5FuLwd&un3TNXDST)+P=Bhu2s~IOM?$i#g?3>%#M==Vo!^ewp94nkW z__UZ1c(@+L2O#c1R&9$BIGq|NSzny}8V4W3)Ki}>jf0P3>WR~>aqtOGJ#h|boU!`i z9Mm}YP^e~oBKG=2K2C^XSHBWPARYFRLQFeWq$563h;he?bks)*G4EKBdVHi11CJG{ z*GCF5@mP`ie54Q~j}_^dkCZ8Yonl2w`bhW&&wX)YMLO;y;S;~QBAxJ&@C9LAk@|fk ze4toYq?0~UED^Mb9eqF}g_vHPCx=rSC&cjL#2M5$A!ZjR&XC3lF}gT$hBZ!z$;F8? zqH#hDE>4`&5=VSx?Y=_Q;zXUmM;XWZim~=LHtLI&G2jK4>HL?HHES2~eayIp#(#HN zGg^hnSOdI^2@_3y(q1!Ogm#lAp7>h6R_9N^J#j diff --git a/ref/python/lib/x64/_elementtree.lib b/ref/python/lib/x64/_elementtree.lib deleted file mode 100644 index c4859cdc189fd7168135f1721359df1230620190..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1880 zcmcIl-D(p-6#lx2wOPCfRrE?&rJ~;Ce=G%aa*Aqbl^yV?cQgt$Vz5_(Y( zyz?!52c?f7UV7<8U!$HgJCjbDnkL0gn4fdzo6Pz7&g{LXt$urV$<8{%EiZCHEEdbf z!mvK4#JtcOO&h>9z?uV+tF$}-W{3QK^7@07PD5mzQeCkt@oSL(MRazX7cgM5R zNzA}Pl70!Y;YZ%Y=R_YAqD>)-786qD};oEkUD;+>yeS zl^XN3NYZ^8$9fme5v2@wkYW+(vu-}b&GdEJ_$jv`VX6K3^|0OVzVE(?oJaM?PPI~7 zQ~N{H4U*Uz?sT_YrD-H`FdGbB%ZS2lcRM{YJGK86Cnx4PIzTMquDy2wY5A_!NI&D- z6sE)&I)nj6oN8GAfCtt1-+?71@nqpOjhE-_1zenxJp~~Q_E?fVKctmx>-p^QR2&JmhX}!|9tAEuDrrx*@#_Sd4K4JIOpfbZcOC~9WJh1t~|53 xaCPOCw4QOlwV-CkT}_N9iSK=~;{Wnf=*P|BuNzmdf5aecm+TeDV+LR3n}m3?O$LKHUg z`KJi{P!JDbEo~H*#loyLOGli8ns5%Cx`H4e{5OZ}BZml)I1d3gVUNvbr^h4&4H5c< z>Gt=qdCTTk*h)_&YTs>U_Eto)Qz}$jF}o4Q>CdZgy~L=S2ysi;JKHCF!|R>|%+cbP z669l|7ES2a8qNKPvWOlPI3_iM z{&*KD@7yi8kmy<8ic>zS9#?nk`j_IUp3fDQ<$hr5A&D*F4vG)2;xtksa;$v5BP+_) zgBqC|J^PJ^2mcuYgYDCxSet-raYbode%?(IlVuDYLK9;=YFIzSgKYfoz*i~pq`{)` zec9B$Y)KobX8qa?&CQle*E+WG`E0Sht>);N~aC z-&%ZRb);;*+NrOrwbkY-nTMU83g3r){dP=D?Xx@ZIYmyNB!G(~a7B!r)_fE6On zg)zI2-19;hwEC^QBdP@=zR~<;1e6f?C|(-7vJr#J{F|oOvD}A!Y0-Wc8D=rZ1>&F{ z;a=`G3BGGFv^sM%zY(?%x`*Ajefx3aiCwGK*NuK;yF(m%!ISW$sT{2YGOmj`f=+LD zJ3VqUbMy(<*TeQ?2=>c@MC$|E(|wWXxS~^xO^I#jCB!z~K*I6|yqLjX2jb)qZJ|c% z^r)E)I-Jtd5IQW4jxX9PT4>yajv!LS>kv9z5i&YH3uAUh$Ly;!SKsxFtoe=ZPpvk+RN=1^~zRbv+g*Zqjy8E z*YCFX1_SSKAC6PosaF3+;zJnf0~@b)YU|G0N@In#dYzu*9eTqs6p_Y>eO$WoF-cA? zYQPBzXXI^WS~!g941z4tEkoJzjpz!;8L zrrOZd-O~gzAHTkNFa^v|EV*Ufz1^ez`E6eVUX$=iDRQ=vUd?)LYuK7Es-;;HE~x*K zh6K$v^5+s)mS)@|VTQh^aBR0>oKqTcA1PKb8|CUF+)Yz{@m)Y5psC|K8(zEL9dzFg zjmPx`qgtu0%k`1zHfek!?o<&%O4CTBVU~pWFCq)O-R<<~_^IR1xV#MRrA@>z?kWm4 zAUrrw7U8e|MTsdfhBo03#=5eweSrtr_}_t5sqv)2rSW=vj=@hwj+ksJTFVm2Y|;dq zzKPTFnWNdnegs>9O{TIlo4zPT&der`%gwPQPR8fx1pmAqC$2^_Ukb#}ug0JB1wa4M z@%v9TS~66knlF?hXB)Pv#*$j%s{f&s0Pg1E94E%~P{nv@CcXK}MHy;?Uq`NJ_mpqH OC&KS!^z#&XHT(t-(1!y6 diff --git a/ref/python/lib/x64/_socket.lib b/ref/python/lib/x64/_socket.lib deleted file mode 100644 index 67fc21e2020c0c001541855c8f570246f2b4caad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1916 zcmcIl&2G~`5dQMll9WT#a_9jhBUJ(}A#Ln5kq~mANJLHDDouqrxv3qfLB&yPq;ldG z35grefYevufYcX2;=+*wFVI&gGwa>haT`b~SY5E`|bMngYKcT|FCdh8y(9= z*)ZyrYHfAYUzXI}#(0yztqISJ=%k(P?K-Q3vPYG6o zsnOOVv^j!%mI4;DfJMg13{WKe^g{}1WRVjyLzP|ucLIQD(FouqB#KDF8{fOI>!toX zSG3@7yR6qM!(Da<89e*&_4yoOzeZSjl-%Cl+m}n*p#?NZ`KSyjO%xxMJhvNkmsZr$ z4N|_*{3RV3k|xThGOjA!xK7GBO%=y}6WVE-$TpTJg&5q4n6hH1n_;)$ z4$^`tUqo?S;^jRf#*~V3GE+V)LrP}Ke__BR`+AFt7<*|=-L+cv!uk413Bpaj zyla0rUxsQFpHDtt@nOPL=Sx?9j{BhuDLL++cX!gxjwR%@oz->OSdG6=d`R5^-(K{A iqLGcROuk^FTQROr#Cu(R7!rAIQkGOakG!_yxqbr(ynCYn diff --git a/ref/python/lib/x64/_sqlite3.lib b/ref/python/lib/x64/_sqlite3.lib deleted file mode 100644 index 25f29d99548bfeb2c1956679ffbe8ff448d14123..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1734 zcmcIlO-mb56g~NP{$h z*PTDWA0Y@?W+kp%cF{j#@11!s&Y;yaq)+C(ckesnyXW3>C$o#S{d#jL{#FZ)jFC2s z`CPuB2mNVjW^#GC`w$241PGl1k-odd#4hL&qPV%eRk6hC+RnR5aogIe2yw9Y#pyP3 z5TaZymF^<&O+h?>wO%c6h}C6lnO<>P9pQX+x(b4T@y{IeTMkhoaT)^p5s%I8gvTU= zFrxGqq1#7c^H|Ieu$7rgb&hRj_E<&q`NE(g_DKZR_lx(_#AuQT@krT?kB6Vv?nzu;x-rcgx=-QQG@QK0`qo26B@xMc0aC~7X)+XRa+*BTypLdhQ=!~J4Fu)kM9`?`jBnSU@U_n~E zgkjMyF4L8tao5U_E91tW-(hn5k|G$N bCI_Emjek?PQ|%Mhpt@+Im%~cKb7ws%(|Z ze`|5d>QGsGw^dnHE6cTIG7t7zD%cM?`t67q+2?%M=L9)@5(6&cz!foeQU`$;EF|cO z)2X9+KgiDkQBkPb*0C>9{4e8$qGNKullITz*gpTUoumjRC=wo7|HJ#kPcxe#2P_fs zMHsVt$h^)5e!WwlaYXf$h@UiXjersY54lTYH*dt?GXJJ2b}aW`Us|+3Mv7TXaDh0e zSv<)+B*8B&hE}JJCf9<-L9^Zb*s-5iU)beRW!32WwnxOV7d#11n##~hAmh52Bk1%- zbFW2irjEYi?ylFK48eX`kZ3(Xd%7zU9angYu_>?(y@bfd?Mhfa&5IfQbs$O((H6?I zj*gn~pu;J=>OqI4(eYh-MGKAl(BX%wXzf8qUWAN}Z^D?J(J}t24^vI9z`)BREyx(Q zqnu**K9G*Op%cQ|-k-C7bd)P;;*R8w>Kz_D>8OIp+3s2xv$NfJb3064r|9(Y;4oj5 Y{{{aSxGViLzNsd4d(>QstpT5 z6xR!d{~`F{VO&IcalN=C7Us%xw8z?S2IFH2;TktvpGPldWapjq`CF&`_9;! zs{!*QoGC@l1`=PAmRYr{V;QwHM8aR{x6(jCf`Qbf#7#;w`bh}Uc?!pN1KMSn<{`vb zMW2^GCiM}6i8o}ua@OErV#jZnt=eJzsJ?A$W3`MkLN7z-82DvpL{1i9kb) zeo?ypIc%P?`4P6#Q|b1x&CH&PNTE2_jfj03#h0_6pN5IiOCrQAZSQP<-kVtWC18;j zUzH$d6UoK2W7pi;L{4pu(&CExZ>eAhnaEs7+>BIXm=|=P!m(&VztCt-AVhW6*L+E0RI}Pi{d613&9e67xo-|lA zJ};a4mn}IX8^{*T%a$LWb!_9q*<$-!-7%0Yd8OoR`K|;xbGH1SEa)Y&ugHqOJ~oM9 zru0%}xw-pQc0)J#aemluk5rkVT*Xz&RTgX}OjTtCrDxnPCCHg^{r7J#zI{y=^e-p7 Y&#}(m6s}bJlwYwik7q3W*ariLKMT=Hs{jB1 diff --git a/ref/python/lib/x64/bz2.lib b/ref/python/lib/x64/bz2.lib deleted file mode 100644 index c41b4c6d58ec5d49500cd75c6809094b0ae26666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1648 zcmb_d&rcdb6#igQ3TX_nUQBATO-x!ZlpnjGiJGOgNvVhi@!)Aiwk>;52x3Be>5Zfb zH~#|vh#pJ4_SPPI=wH%`V$rX(GtiLz`u$KN^p7YD9%<+O@%hK)eNO{6XhYX9 zH7ulFrCq1dYb@uKV}Uk5X#SA~Dh4cMu4G(6n#DPPC*s&{LBEQUoI`?D#AQ;?@gx-| z{im=(coY5k9k-PkE7p{~a);#v+P$w1%cjATg3* znUOQboOT9L!HjPL6hjMUhU2;Xb%GgrWn^YtDn&|W#)IGZeeQCJ0Nnb*2wkz_>WyCd zO$T@v8(gvf^pej6?nUmU$zj1#y<{jm$Nf@@lpObj2VCCpcym^@#HPA z;7OmshgeYX1q3f1J@^W~fL8T%ClfSoB5M!b)%DZe^;K8(Onk2%)OLR)ziQoW*2ow} zA(z)P-Ezgw=CV?;kp%Doh@1kk3n2ag3|ZVAr?kAfVpp8`g|(k{X|=LqJO0sD)2}w* zIOTQAdTxMYX%Xlvi|gejXTDe|(h6_Scf5VCq4o&R2lij@_#Y<#rxD;H20RdB4GBPq zAc{DBF*^GVNM3iiCr*hj?H{=U)W2>*FXY-c;kII!{&V?jgwT8>RNT_;*5>b>$+dt3 ziZnShYwGt>K*52D%$2muOEEstcU>RbRT2v)!#?BxSq*9^HN;+cO~t cjjXP#e+&OZxJca=zg}Mi$~eOBduVSw0iDW3$p8QV diff --git a/ref/python/lib/x64/python27.lib b/ref/python/lib/x64/python27.lib index cd1a64c9d01ed5c2ce36e0d6e9c98fef0273121e..5ac773c350efbb3bb7deae3504201fa2a08fd91c 100644 GIT binary patch delta 33848 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 delta 35050 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 gKBecg>hX4Qo diff --git a/ref/python/lib/x64/unicodedata.lib b/ref/python/lib/x64/unicodedata.lib deleted file mode 100644 index 2845ffc82e7812a521544ec4bbfd0b2832dc03d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1784 zcmcIlOH1QW6#m+DbXtTdD((g%6h}d7t+`^sk@y0OwMwlE-Nf4X$UB61=!8s?nx292RD|o}rJ?Gpnx#v5NWN^B4Tt1kIjp@x}T%?4^OiUU^ zvppr%abrqK+c5xNfY2qNJ(4&CbY1YYtnA9#YN2Q?EUwQNvTMcFf^~Z2lq>eGU8K*eD&wL_8=rRO6YQPXNyXbNW zB7`s^bZO+n2bs0!d`td5*2(HGd+fbTiBzVMDZ8#=^!L?fAF=yNEO{jD-JR3@#JZ;e zizNI}id;>^=aLR5Es<7R{UqGde2@kT7EGkBC2mrh5hp>T^AwKlCiLqttpkX%if;i@ zKhPKNCi{)M3l|kV>s@im$CZ=HUQHh^jOe*+ep&7}Ej^^MGdw}*Vu_ugOp+8h31+!+ zSS6pMXMgeZ$A1I4U(mP9H493tyXkf&%h3yHx$-!?2eoBp(Ft+Ia z;qq!(II#frcPl3?RP%4g?0VR(oGaH!cJ=kjvAwOv-B&pi%E*=TPbqTc%K5a4XeY1zzY3m|j~gs)r?V>M8>tisyHdd0MsS2mX_g$;APVtsd7`|X34 z4a+K5OQpvM{FD$6V6IlnMQeG%T%aw^ZpU(3PFF$@Q2v>N_P`-RBu+!XRoG)w8}pci zpddoOFr7XOn|?k&&sK6wb$-~)tY1X5*_mEM?4vL~{<`=wPK;g=A#N#qd+Xra^roi) zizFONMa%{giz&yhck9zxx%7sFYwEv+fiK8F`cmNX!i;ei=sbyI)qr}b(40h+RmA5P!%~7qN<@M9heguPYO&L zhs&nXWlL7i__9TDv*q0Nj(vPOTWoKsH~O+ACyksfXHpR}XUqS|fnaPp#3BwQVO; zu=81GRGyJ+b~Pt=yC#4|z_7+gZ4p}mcw?>@1Dv_MmbGGKM(ga<6Il!j1$lc z14zVxA~BZ>K%XXohk*#rr zBZ{w|-&agVO(+>?I@oKzeY3nBvVcpQ4~mi0Me2FF9W;84<(xXYLz{0j&!r$r)J5h@ z>a9pIZqVi@&2uFn>cTpU5WR_{keXq2FsMhko#F)Wbv#%hd2(y3-8$+VcV73b$F(Px zS1NCc(`yUc;t%-(s$Q{6(aM=##Lx(N(CQp?$<^e^M_gSgbNmGl_ALU1*ad{Q`${6P zv7M-rIIKeg40Q5C3CkbwA_w0NtVxbZ1XWu9rOM`2B{`=s=zq_Mh${IaJY)aHS4kj_ zhKp7uwvuv{d{T_0TqXY_`_ts~KKU^5kQ?ed!teUM&f1355R%`C1O%LCl;t TCqLfKU9w})%Xsa7q*?j}^C)V` diff --git a/ref/python/lib/x86/_ctypes.lib b/ref/python/lib/x86/_ctypes.lib deleted file mode 100644 index 7cc4d0fa78d967534be6584b96c85221e6433e39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1714 zcmcIlzfaph6#i_7A2AFOurMIG5)yO?3ATYq2suEdM3@AbFq<@?B?BaaAi>1K$X1E} zp!^SPSvz#-&_95Gf)(Dg@37O7k|27K@9ur~?(Ti>zPo%_t)A2l*YpLWyJSt%%H&Kt zYj)!qVP;KB^!9ZCLx6GvXdNK&01OxS^ZnxXPT8yYo1bAJebG8Nh3}X4 zT=#DWTndkHyi(XJZTXw|N}gskj#^Y5H`>pO#EpR&SP_E+QMgfnjs`rCQ5X&=L4k?{ z{WRMB4P0Iexi{A^OX=1{J)rg4X;?XVO#8a4X!vn^RURWgqr{7flCB?oKKnYm8=63# zI@i(=t%KBhx>2vTtFw!8Xo@;N>AM#Ir3Vf&9pSemV2o4ekv{3ixC5i3Qagbpn-~+P z#-!#jnHnLC*WU2(;owwA$_|}ABZm?R$ngwKA{P4)5c${;Qsny;FR}Y&Nu2$DNkg>nn%#ag+Ea*w fX4JCf{|f(q@a1$Bezm5Fol5Uk_d6dwhtQt@uX{o3 diff --git a/ref/python/lib/x86/_ctypes_test.lib b/ref/python/lib/x86/_ctypes_test.lib deleted file mode 100644 index 2307e980d1be892a660617779938b074e7e74925..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21680 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 diff --git a/ref/python/lib/x86/_elementtree.lib b/ref/python/lib/x86/_elementtree.lib deleted file mode 100644 index 4217b7eadfd1ebfb294017fd92508a246bbd708d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1878 zcmcIlPfrs;6#wnE0^M+Ekl=}AQH*-&zwII>h7?6(VQEPzHvF4duwul`n=NTs>BK9` zPFgqR3CSkyw4_P~fCqp+4TRT;JO?JOxVvt4b1Ppcx@+&Y-xji4#eBhay+g0=9r=FC z^WeI<9mna{!f8;gtyKK5liP6DR*S2&tyXW+a8&bydgzyo?bTA(t1!7Wtpn>soRfc7 z6T(es&=ICDM0VWOztKIoJreOA2Zv_urOIZ>2!<}!{9J_*SIJd59)bZo*^QQ?h4AC+ zS$<9frYLgMv{=>K{j|Th-DZLJL|iCF&KX4C#A?;DUtUb9rCB0=QvV|bA(}HtTuQwq zDaH&DVY*N0u{;Cwl9Gl;h%k$2uba>CFgi&Kd?+_oi=51C)+(*WabwRnpBG-3PByn8 zR(l45xY)=C(B0H05v7sfK~(QmWKE?}Z<5)OlP|cwR+sWVZfvIx<$VSamLDjI@RQ99 zDM^}jNPv!x-IcKXDG##o>A;HQc+&Ba#=E0-2o}dgPs+ACFNmY*0zKb_m2B%^^i;)C zcL<=zQc_0GH^s=A(ewXMF-n%_$&!CQcVkyxYI!*jyLRRMrW@Kh9~`?|D$iEoVq|jV x1zVu<(n`*HzZ4_q`;YM`aeYj;-!CpZur&G4##QTR{IWd}eohVe%kPaw@A#w2$P z>NzGd4@t=fGOPsgmm6z1&wPB28-pB_~&J>rSk&;Kcq#KH& z-r8+bxaouMxV#jHyoZV7Ga;ypfQq;&8ikKNS)%dSh7`E6@p~H9Px7FNPY2#=i6;{w zjrXgk;Z;k)&tLU$V3?{}eyHd;#+$39p_Y0>qFP+ha}yn cqW4CZqQn0u+@XQNuh$cWZ}i$bpUfES-<}&png9R* diff --git a/ref/python/lib/x86/_msi.lib b/ref/python/lib/x86/_msi.lib deleted file mode 100644 index ca2b30f6ffc4c8907352a646711e10e62c5f63bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1664 zcmb_dPfHt75dZCN8k42apq`3_6a?E#n(S`0f=IL$8e9{J@w~>wKYNG?8bL35@#w8r zPagaTo;{WxiueKiBn6#$d6UFSXaaf5&U^El**AaQ%-fF(mBZ@(qWvZLa%5cBOV7L6 zjPnvtYc}JEV9N&Z1~AS5>k5e61JNmdgCM`QUM!V^mG2whO8ND2u@nULqYyz**!2C^ zQk=86EiC`oEUX4AOXVd}59>`L2VtxId1p1W*KXJA2)TV`09O`pPs~(Qg#iO5BJ@~f zcUb@Xd)g;53OCg}tw|jJ%ewcq>%VVU_;qtpj8Y6SiiL)es_kqa?@e#CSzwVCm%`{d zhs1I!tW{c-X-7npwD?W$qXsA?$RT~F^=35;KI*^piXP)RB=1a`-yzN{Vths%)C?vP zV+8PKJXjn*8D9&lhmE7gZY%kz^f~G03#&@{4|z*Gf5;n9O{rCaC>0uEVuGw!8}%l+ z89(`nrzbJS`aIY#6B2C>P@e7!qT*sJmLMMM5P*(Owu>F(UJeZy4MajU!{(x*CVO4KDi)!_=t)p0G1p1C?kf9ivrCZ9mx3&fVn7__6D zxz`=_Ko;6(J9I~7B~4s`+)=%wr=vW!T$vAM&IBY PYC^>oL(dJauL#)B%X210 diff --git a/ref/python/lib/x86/_multiprocessing.lib b/ref/python/lib/x86/_multiprocessing.lib deleted file mode 100644 index 4fc7827582c28c715998cf0be7b89ae1d7201a24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1950 zcmcIl&2HL25dLha0#*;GjdF=nxlz9Qyz{^w0h375G5HXQ_y>fW&IjZPxqsg^Zkj*z_~nEdGbF@lKk3Kz0`yBNBxVt371Lo*U*c(kDokbd8@t9&pKQ8~ZoAjs@9VEB zi@IGbZHW1S;W25vkUv1D!jlrz6K%*AwjD*)Xtz2Pe*E+cZf@kpyp|ist3qa>0C)%v zrNzU`J4U1>%RXelA0O-1!uCb(MB}dmt3u;JMU(pbF?tMsN^*?Jri_&rp3ElIW7Cxv zEyoqGqd8NgSm!?@pJZF%Tko}pH+ILL JDfCXzegjG~g_-~W diff --git a/ref/python/lib/x86/_socket.lib b/ref/python/lib/x86/_socket.lib deleted file mode 100644 index f795f14707c53759adc9f6d4f16892fe395c96eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1920 zcmcIl&2G~`5dQ2WO_Oqn3>OYaMydo{LK53hO9(koB%-=W<)*#5sgu%xila72<-~;} zH=Y61SK!to7Y-bF0A8ZkGGp&1&L2%GSb2YDc6N8Z*>A^ppR|sH!>9R&`e-Q|hFP)= zt6Uk?mxNeelM{P+09in}0Ma^;*#(x);+oZHO7s2N=2pXN`s**YpL?~fX2bLSlQ4MG z>BINyJFYuvfDghVo^QU~sc-n})n=7ebdP$}yzTY}n~Vr!^WpyMPCy3@Y=mNA#P$$z zh9F-kfSv|+NjO^qG>QRzP@p1>OjJ|k?KQAZgLoAxj^#MS*)fcxU+leaM`5_?woTg* z_r8~Rl@z{z{n%I`{L6%wAs5@7{dcccw__2g(%_R6MDL*Rtk`Y0`mNQ9oVrDWA5?z} zMT&X{rE_8TNT_jx2A5Q&9qS$F=PLCYax7v+uz^9{!_5NU1@Fg&Epn&YW;ZwvPr`$~ ze&2hbyS4g8G&|PtVZ4wxAWBE00=0bUStL$@6NE=S@-=t*8JFZ=d>pUf!p^CXkR2d$ z_fTpgaJ(WVH747T0s|XssA0X%jVQc3U<-*m6&|(MBHT=(K{h053vj);stN1RUgyb-OdOvpe(c%&aG0R}X62Z|s*&H)UPd%gnj? zY_40M(PGw})!e2H;0a)y0M!syzX(3pkEzxe1hP|jIHt3fA8HLwDL1E*>0M0ESL3lO>6f77p zk)WSN{vU(q;i&IHtZysb{9I>j4`s!h>)`PX3qMc4mPZKF5Md)S()FzmN1vwF+9I$> z%r_DATtI3u9o4I?>Qqja#)$bv-=$X26`_F4nYMeS)fi!h{D~cl1vqCW&7(-Nh+)Yc zgL;n9)F3JOKqfXx9zR`)Y6p$O#>bZPqB8CH#nQ4`y)g`v%p3Ut%9-L)G*a?N7k5KZ z)Ec`@3O9ND9amT4koPcgd?o~S0ZvNPnKvrwjl+sZSoxr>nC~8#HR!ETH?t> zK;z@;sejdy%V)29*f&g7Ek9Ir9OK>9QddizAyzG}Xt`QWMbI->%m1l@UNSpDQT+A6 zvE!A}OPA$l@E8(X-ue5%k>O`|agUpONSO d)uK0}OVQ!~6Yfyo;MZ$h;TyW~&c`zb`w#4;LaqP+ diff --git a/ref/python/lib/x86/_ssl.lib b/ref/python/lib/x86/_ssl.lib deleted file mode 100644 index 176c166fd4cd3b507dc1159348034a8a3da0a438..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1664 zcmb_dOG^S#6#iz$OeILNRTLNm)y8yY>;Vz>f}}~qY(1Iw5Go}NYEzq*?b^0#(NAdI zx*(z-&@Tzey?m;kAd{zSMv_19&55*ek+-1|1%H46@s)|E)c3 z5gCOWDPI&+9RFqAo^AN=Xa-&$uG3zM!AG&s&?1Gs-Lr$Str`m~(Beiha!w$)6e$*R z)!dk=M1!<=ruRbvloBKmeUf_95(XdjC%sCK@dUz8I?es?GYcP|5eGGnP_UN(-i!x} z{pSN4#r$chQrfSECo+>^Cz)Co(qE*Hc>a(#pqdh^AW4z!SI50#?J=AOHXW diff --git a/ref/python/lib/x86/_testcapi.lib b/ref/python/lib/x86/_testcapi.lib deleted file mode 100644 index ae59b09416ba16e0c8dc257ad0b92b93e6dc5f9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1748 zcmcIlOHbQC5dLgaN-Q2x;aU+85^xE5*a!qdrhwE4lb{f|nlz8%10(_?!HG+c-1raa zkLZPCZyY#~J3l0yadwk9(2$^ZEbs2jj(6vq`F1_Co~Z0Jjopv03&Bet3} zCe*kgCysRh9{{BWXmuKff#EX0j+5Hk&t!AX_RhgpHnpG2WF5yVU3i6j)rI4v4{iIU z3vOCIO^@8y!}PARy_wsjZ`{)=HD|8Zazd9nFcPzkWQd^D6ripFVZu}%_Mt(6iXnP5 zir`(C`U$)jZke@c^}0v^->Qxoi;FrP>$aldckM@Jf^dxxJ`yEbEPcEDK6lVmfh`)` zN=5V*!e63pG4JK)5^`#a1`qT;3j?JI7Gn3pZ&{czP6LJZlYVTs5V=>WpF)ULjI}Dr zpyn|d{zz6{k%fIiSD*IW!g=MQQuZPX*~N&RO7Hr!UCk)z{2?y@Die>0h0IDC1@?he zsGL?Q-q6(@8V$K2f5XB7s*tcPzz_LET6}=KlO`<&`;Y-GAG2*?`z$v?cy(Y+Xxynd zqV}Dn>OmMi0J;yxBsxxkt*Aa@e)$1%n6ERY=ufqq4#p&Dxzn`{3j;#Q{B%L z#$PX=f%CS~zCGkgd!h}RrG7ncJx-b_Q^kbjlh!F6C(V#{_Is3y=>Ktk`^o7vZQX;8 egJ#uOm46-nyYMl!6~4o`bbO0-UHO6Kq5lDp)K3-w diff --git a/ref/python/lib/x86/_tkinter.lib b/ref/python/lib/x86/_tkinter.lib deleted file mode 100644 index 6d8865d5c3c442c37db57cd1ee1a23a5f0980190..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1732 zcmcIlPfrt35dZCNMYl?a7ghJ{x``*mFd2it>K z%DV6WZGkUh(lrR)uUD4CrG;RDwnY1F8V;gZY|t;=8HLwFL1E*_08T9+MR+zw6f77p zk)oeP{_lh5_NZ?_tZysZ{@i42w`Ikf@8R(c3qOy)R>uj`C}ATqvd!(SPrK7=T@hF$ z=9>t5E+Mm+jhgkiK3$NdNn(D{_ggFIicmuCMBB}3HO84Ce`3dC3C@X0^90f?VoY+! zpq^nO^N^H$AQPLU4>H-4mLDoQj`8|xX{x2(kf;_{v|KI6BIuc`<^NQ{AentaQT+44 zv6GcDNS77nK#0nNH`T=|i3%GYO;dz{nW)ASkb_R%`WO;r-gXT6wiztp&}mHiDqC z?)(2c@r}F#Uwv`CvK%bT*XJp^v(+Q9-RX;u)g&=udx$tikoPp;zyOX&85rnKV#2;30n~<7TB<>~kK8W4j0IP^a-BGOQvklbXSJ zHcdLO#f`n0{l_bv)=u|x_ha9BR(o#w<;t?~{v(Jt;zM45s6;)DEJ@-Q&EyX7THUQ4 zVa)9R#Knc$ilezPC><(Q4-hanl|>}Q;0$GPIfe`fV~Rry+n=zIjaLVXQsY6#63N7b zi6w@alo_@=8)1ennDIw|VrcQqXbaa+M3~_yD>LJlQsl_Yxc3vk%UM1p0M|Ymi7Qr8 zZ`g*Z?$Te{U~sVU6}#asg-l@j@m-3x$X#-ko#RfGBFB5H>|LrkNt?!!FKHzm^(a~V WAHWyU*Z5_6B(fSs_-3nnYhD8Cg&CRv diff --git a/ref/python/lib/x86/pyexpat.lib b/ref/python/lib/x86/pyexpat.lib deleted file mode 100644 index 9e65bc879ca4f2d8dea1116466897de5cd61adf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1714 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 V!dgM6kRS*wwCZ7N&~{#N{Xde3{|5j7 literal 231346 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 Z^(Wy!2G^yd@q6`I_|}8q+a9Q9^EdzPI3)l8 diff --git a/ref/python/lib/x86/unicodedata.lib b/ref/python/lib/x86/unicodedata.lib deleted file mode 100644 index d6e6f64a751d5974bbf5e930207755acbdb28528..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1782 zcmcIl%}(1u5dLiQ(^yE23gTADNRencgd~n5kN}xKi3pRR5H7u#H0H+#NCZKmr(Sa8 z)_17H3vff?*lQ0QcmVFa0n9kN#5go0h_2<`nQzCQ`DSMAiMh&g^#%8fpc2`!nmP`4~aiUGPbisFsjdJVs84no9}^&j5!Yt^z+v!ZT0x}#|L^SfCbC4L`>Ck-X(?S4Pq zPi(bRV3mY(sfg7^d@1R3;Sw3SHAcc;y6*%)>4J^awXn+x7;zFb@+a*Ww_#kXw2mXj zDn3R?O=2`YOgO)j2V2F?K5h8bOvy<~NQ ioOf-?elu&CBC!Vld-%XQ3V+eq5r5MsPB?q6I0 diff --git a/ref/python/lib/x86/winsound.lib b/ref/python/lib/x86/winsound.lib deleted file mode 100644 index efa8af838b879719d4d92fc30c50367828852c4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1732 zcmcIlPfrt35dZCNLAoKN5pPDbBqYkEw%x6QF{J!4v0-URSrTqb?W*j7wt*7y#KogG z?;QCMp17J24j%jfei58`eM7hWt)xz~^WMyx_hx=?W?rY>)OQ=(^Y#m;pYpEj<>uUC z-tE`tw3v5i^=!)qFaj7yfOSgK6fnBUUl^8G*Q&K3TzjUI-RwOT5!2){Hx1gMR6sQFuKR6gG|w;M4+AglBV9!GZx3 zDf(ID|2}x`j{0WA0yEqG5;3;Bvf|D4@c4#>pT}RT6NG7uun`&A=)?Q{Pt)sN5m=H zUp)=4S_;MdMGyOisjB6NijHHvzFH!+)MJTiaYf73ax8)#xmx~D6%3NuCltkv500Iz zltH?zFe|U%mMvZOn>=*$eEq%M(q%=tDy~NEvLq$C%o9D^{SrZs!@b`@?(`{n9$qba buXHIo{C~n7>KpueJy!U}F1_=~jKTg38>dN!