#include #include "Python.h" #include "uv.h" #ifndef EWOULDBLOCK #define EWOULDBLOCK EAGAIN #endif #ifdef __APPLE__ #define PLATFORM_IS_APPLE 1 #else #define PLATFORM_IS_APPLE 0 #endif #ifdef __linux__ # define PLATFORM_IS_LINUX 1 # include #else # define PLATFORM_IS_LINUX 0 # define EPOLL_CTL_DEL 2 struct epoll_event {}; int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event) {}; #endif #if PY_VERSION_HEX < 0x03070000 PyObject * Context_CopyCurrent(void) { PyErr_SetString(PyExc_NotImplementedError, "\"contextvars\" support requires Python 3.7+"); return NULL; }; int Context_Enter(PyObject *ctx) { PyErr_SetString(PyExc_NotImplementedError, "\"contextvars\" support requires Python 3.7+"); return -1; } int Context_Exit(PyObject *ctx) { PyErr_SetString(PyExc_NotImplementedError, "\"contextvars\" support requires Python 3.7+"); return -1; } #elif PY_VERSION_HEX < 0x03070100 PyObject * Context_CopyCurrent(void) { return (PyObject *)PyContext_CopyCurrent(); }; int Context_Enter(PyObject *ctx) { return PyContext_Enter((PyContext *)ctx); } int Context_Exit(PyObject *ctx) { return PyContext_Exit((PyContext *)ctx); } #else PyObject * Context_CopyCurrent(void) { return PyContext_CopyCurrent(); }; int Context_Enter(PyObject *ctx) { return PyContext_Enter(ctx); } int Context_Exit(PyObject *ctx) { return PyContext_Exit(ctx); } #endif #if PY_VERSION_HEX < 0x03070000 void PyOS_BeforeFork(void) { _PyImport_AcquireLock(); } void PyOS_AfterFork_Parent(void) { if (_PyImport_ReleaseLock() <= 0) { Py_FatalError("failed releasing import lock after fork"); } } void PyOS_AfterFork_Child(void) { PyOS_AfterFork(); } #endif