Generated by Cython 3.0.0a11
Yellow lines hint at Python interaction.
Click on a line that starts with a "+
" to see the C code that Cython generated for it.
Raw output: _hub_local.c
+001: # -*- coding: utf-8 -*-
__pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_4);if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_4) < 0) __PYX_ERR(0, 1, __pyx_L1_error)__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
002: # copyright 2018 gevent. See LICENSE
003: """
004: Maintains the thread local hub.
005:
006: """
007: from __future__ import absolute_import
008: from __future__ import division
009: from __future__ import print_function
010:
011:
+012: from gevent._compat import thread_mod_name
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_2);__Pyx_INCREF(__pyx_n_s_thread_mod_name);__Pyx_GIVEREF(__pyx_n_s_thread_mod_name);PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_thread_mod_name);__pyx_t_3 = __Pyx_Import(__pyx_n_s_gevent__compat, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 12, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_3);__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;__pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_thread_mod_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_2);if (PyDict_SetItem(__pyx_d, __pyx_n_s_thread_mod_name, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error)__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
013:
+014: __all__ = [
__pyx_t_3 = PyList_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 14, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_3);__Pyx_INCREF(__pyx_n_s_get_hub);__Pyx_GIVEREF(__pyx_n_s_get_hub);PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_get_hub);__Pyx_INCREF(__pyx_n_s_get_hub_noargs);__Pyx_GIVEREF(__pyx_n_s_get_hub_noargs);PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_get_hub_noargs);__Pyx_INCREF(__pyx_n_s_get_hub_if_exists);__Pyx_GIVEREF(__pyx_n_s_get_hub_if_exists);PyList_SET_ITEM(__pyx_t_3, 2, __pyx_n_s_get_hub_if_exists);if (PyDict_SetItem(__pyx_d, __pyx_n_s_all, __pyx_t_3) < 0) __PYX_ERR(0, 14, __pyx_L1_error)__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
015: 'get_hub',
016: 'get_hub_noargs',
017: 'get_hub_if_exists',
018: ]
019:
020: # These must be the "real" native thread versions,
021: # not monkey-patched.
022: # We are imported early enough (by gevent/__init__) that
023: # we can rely on not being monkey-patched in any way yet.
+024: class _Threadlocal(__import__(thread_mod_name)._local):
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_thread_mod_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_3);__pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin___import__, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_2);__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_local); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_3);__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;__pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_2);__Pyx_GIVEREF(__pyx_t_3);PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);__pyx_t_3 = 0;__pyx_t_3 = __Pyx_PEP560_update_bases(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_3);__pyx_t_4 = __Pyx_CalculateMetaclass(NULL, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 24, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_4);__pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_4, __pyx_t_3, __pyx_n_s_Threadlocal, __pyx_n_s_Threadlocal, (PyObject *) NULL, __pyx_n_s_gevent__gevent_c_hub_local, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 24, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_5);if (__pyx_t_3 != __pyx_t_2) {if (unlikely((PyDict_SetItemString(__pyx_t_5, "__orig_bases__", __pyx_t_2) < 0))) __PYX_ERR(0, 24, __pyx_L1_error)}__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;__pyx_t_2 = __Pyx_Py3ClassCreate(__pyx_t_4, __pyx_n_s_Threadlocal, __pyx_t_3, __pyx_t_5, NULL, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_2);if (PyDict_SetItem(__pyx_d, __pyx_n_s_Threadlocal, __pyx_t_2) < 0) __PYX_ERR(0, 24, __pyx_L1_error)__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
025:
+026: def __init__(self):
/* Python wrapper */static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_12_Threadlocal_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/static PyMethodDef __pyx_mdef_6gevent_19_gevent_c_hub_local_12_Threadlocal_1__init__ = {"__init__", (PyCFunction)__pyx_pw_6gevent_19_gevent_c_hub_local_12_Threadlocal_1__init__, METH_O, 0};static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_12_Threadlocal_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self) {CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);PyObject *__pyx_r = 0;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);__pyx_r = __pyx_pf_6gevent_19_gevent_c_hub_local_12_Threadlocal___init__(__pyx_self, ((PyObject *)__pyx_v_self));/* function exit code */__Pyx_RefNannyFinishContext();return __pyx_r;}static PyObject *__pyx_pf_6gevent_19_gevent_c_hub_local_12_Threadlocal___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {PyObject *__pyx_r = NULL;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("__init__", 0);/* function exit code */__pyx_r = Py_None; __Pyx_INCREF(Py_None);goto __pyx_L0;__pyx_L1_error:;__Pyx_XDECREF(__pyx_t_1);__Pyx_XDECREF(__pyx_t_2);__Pyx_XDECREF(__pyx_t_3);__Pyx_AddTraceback("gevent._gevent_c_hub_local._Threadlocal.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);__pyx_r = NULL;__pyx_L0:;__Pyx_XGIVEREF(__pyx_r);__Pyx_RefNannyFinishContext();return __pyx_r;}__pyx_tuple__2 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 26, __pyx_L1_error)__Pyx_GOTREF(__pyx_tuple__2);__Pyx_GIVEREF(__pyx_tuple__2);__pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6gevent_19_gevent_c_hub_local_12_Threadlocal_1__init__, 0, __pyx_n_s_Threadlocal___init, NULL, __pyx_n_s_gevent__gevent_c_hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_2);if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_n_s_init, __pyx_t_2) < 0) __PYX_ERR(0, 26, __pyx_L1_error)__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;__pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_init, 26, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 26, __pyx_L1_error)
027: # Use a class with an initializer so that we can test
028: # for 'is None' instead of catching AttributeError, making
029: # the code cleaner and possibly solving some corner cases
030: # (like #687)
+031: super(_Threadlocal, self).__init__()
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Threadlocal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_2);__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_3);__Pyx_GIVEREF(__pyx_t_2);PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);__Pyx_INCREF(__pyx_v_self);__Pyx_GIVEREF(__pyx_v_self);PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self);__pyx_t_2 = 0;__pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_2);__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_3);__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;__pyx_t_2 = NULL;__pyx_t_4 = 0;if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);if (likely(__pyx_t_2)) {PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);__Pyx_INCREF(__pyx_t_2);__Pyx_INCREF(function);__Pyx_DECREF_SET(__pyx_t_3, function);__pyx_t_4 = 1;}}{PyObject *__pyx_callargs[1] = {__pyx_t_2, };__pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_1);__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;}__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+032: self.Hub = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Hub, Py_None) < 0) __PYX_ERR(0, 32, __pyx_L1_error)
+033: self.loop = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_loop, Py_None) < 0) __PYX_ERR(0, 33, __pyx_L1_error)
+034: self.hub = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_hub, Py_None) < 0) __PYX_ERR(0, 34, __pyx_L1_error)
035:
+036: _threadlocal = _Threadlocal()
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Threadlocal); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 36, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_3);__pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 36, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_4);__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;__Pyx_XGOTREF(__pyx_v_6gevent_19_gevent_c_hub_local__threadlocal);__Pyx_DECREF_SET(__pyx_v_6gevent_19_gevent_c_hub_local__threadlocal, __pyx_t_4);__Pyx_GIVEREF(__pyx_t_4);__pyx_t_4 = 0;
037:
+038: Hub = None # Set when gevent.hub is imported
if (PyDict_SetItem(__pyx_d, __pyx_n_s_Hub, Py_None) < 0) __PYX_ERR(0, 38, __pyx_L1_error)
039:
+040: def get_hub_class():
static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_1get_hub_class(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/static PyObject *__pyx_f_6gevent_19_gevent_c_hub_local_get_hub_class(CYTHON_UNUSED int __pyx_skip_dispatch) {PyObject *__pyx_v_hubtype = NULL;PyObject *__pyx_r = NULL;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("get_hub_class", 0);/* function exit code */__pyx_L1_error:;__Pyx_XDECREF(__pyx_t_1);__Pyx_AddTraceback("gevent._gevent_c_hub_local.get_hub_class", __pyx_clineno, __pyx_lineno, __pyx_filename);__pyx_r = 0;__pyx_L0:;__Pyx_XDECREF(__pyx_v_hubtype);__Pyx_XGIVEREF(__pyx_r);__Pyx_RefNannyFinishContext();return __pyx_r;}/* Python wrapper */static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_1get_hub_class(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/PyDoc_STRVAR(__pyx_doc_6gevent_19_gevent_c_hub_local_get_hub_class, "Return the type of hub to use for the current thread.\n\n If there's no type of hub for the current thread yet, 'gevent.hub.Hub' is used.\n ");static PyMethodDef __pyx_mdef_6gevent_19_gevent_c_hub_local_1get_hub_class = {"get_hub_class", (PyCFunction)__pyx_pw_6gevent_19_gevent_c_hub_local_1get_hub_class, METH_NOARGS, __pyx_doc_6gevent_19_gevent_c_hub_local_get_hub_class};static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_1get_hub_class(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);PyObject *__pyx_r = 0;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("get_hub_class (wrapper)", 0);__pyx_r = __pyx_pf_6gevent_19_gevent_c_hub_local_get_hub_class(__pyx_self);/* function exit code */__Pyx_RefNannyFinishContext();return __pyx_r;}static PyObject *__pyx_pf_6gevent_19_gevent_c_hub_local_get_hub_class(CYTHON_UNUSED PyObject *__pyx_self) {PyObject *__pyx_r = NULL;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("get_hub_class", 0);__Pyx_XDECREF(__pyx_r);__pyx_t_1 = __pyx_f_6gevent_19_gevent_c_hub_local_get_hub_class(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 40, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_1);__pyx_r = __pyx_t_1;__pyx_t_1 = 0;goto __pyx_L0;/* function exit code */__pyx_L1_error:;__Pyx_XDECREF(__pyx_t_1);__Pyx_AddTraceback("gevent._gevent_c_hub_local.get_hub_class", __pyx_clineno, __pyx_lineno, __pyx_filename);__pyx_r = NULL;__pyx_L0:;__Pyx_XGIVEREF(__pyx_r);__Pyx_RefNannyFinishContext();return __pyx_r;}__pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_6gevent_19_gevent_c_hub_local_1get_hub_class, 0, __pyx_n_s_get_hub_class, NULL, __pyx_n_s_gevent__gevent_c_hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__4)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 40, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_4);if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_hub_class, __pyx_t_4) < 0) __PYX_ERR(0, 40, __pyx_L1_error)__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;__pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_get_hub_class, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(0, 40, __pyx_L1_error)
041: """Return the type of hub to use for the current thread.
042:
043: If there's no type of hub for the current thread yet, 'gevent.hub.Hub' is used.
044: """
+045: hubtype = _threadlocal.Hub
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_19_gevent_c_hub_local__threadlocal, __pyx_n_s_Hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_1);__pyx_v_hubtype = __pyx_t_1;__pyx_t_1 = 0;
+046: if hubtype is None:
__pyx_t_2 = (__pyx_v_hubtype == Py_None);if (__pyx_t_2) {}
+047: hubtype = _threadlocal.Hub = Hub
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_1);__Pyx_INCREF(__pyx_t_1);__Pyx_DECREF_SET(__pyx_v_hubtype, __pyx_t_1);if (__Pyx_PyObject_SetAttrStr(__pyx_v_6gevent_19_gevent_c_hub_local__threadlocal, __pyx_n_s_Hub, __pyx_t_1) < 0) __PYX_ERR(0, 47, __pyx_L1_error)__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+048: return hubtype
__Pyx_XDECREF(__pyx_r);__Pyx_INCREF(__pyx_v_hubtype);__pyx_r = __pyx_v_hubtype;goto __pyx_L0;
049:
+050: def set_default_hub_class(hubtype):
/* Python wrapper */static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_3set_default_hub_class(PyObject *__pyx_self, PyObject *__pyx_v_hubtype); /*proto*/static PyMethodDef __pyx_mdef_6gevent_19_gevent_c_hub_local_3set_default_hub_class = {"set_default_hub_class", (PyCFunction)__pyx_pw_6gevent_19_gevent_c_hub_local_3set_default_hub_class, METH_O, 0};static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_3set_default_hub_class(PyObject *__pyx_self, PyObject *__pyx_v_hubtype) {CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);PyObject *__pyx_r = 0;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("set_default_hub_class (wrapper)", 0);__pyx_r = __pyx_pf_6gevent_19_gevent_c_hub_local_2set_default_hub_class(__pyx_self, ((PyObject *)__pyx_v_hubtype));/* function exit code */__Pyx_RefNannyFinishContext();return __pyx_r;}static PyObject *__pyx_pf_6gevent_19_gevent_c_hub_local_2set_default_hub_class(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_hubtype) {PyObject *__pyx_r = NULL;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("set_default_hub_class", 0);/* function exit code */__pyx_r = Py_None; __Pyx_INCREF(Py_None);goto __pyx_L0;__pyx_L1_error:;__Pyx_AddTraceback("gevent._gevent_c_hub_local.set_default_hub_class", __pyx_clineno, __pyx_lineno, __pyx_filename);__pyx_r = NULL;__pyx_L0:;__Pyx_XGIVEREF(__pyx_r);__Pyx_RefNannyFinishContext();return __pyx_r;}__pyx_tuple__5 = PyTuple_Pack(1, __pyx_n_s_hubtype); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 50, __pyx_L1_error)__Pyx_GOTREF(__pyx_tuple__5);__Pyx_GIVEREF(__pyx_tuple__5);__pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_6gevent_19_gevent_c_hub_local_3set_default_hub_class, 0, __pyx_n_s_set_default_hub_class, NULL, __pyx_n_s_gevent__gevent_c_hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 50, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_4);if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_hub_class, __pyx_t_4) < 0) __PYX_ERR(0, 50, __pyx_L1_error)__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;__pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__5, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_set_default_hub_class, 50, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(0, 50, __pyx_L1_error)
051: global Hub
+052: Hub = hubtype
if (PyDict_SetItem(__pyx_d, __pyx_n_s_Hub, __pyx_v_hubtype) < 0) __PYX_ERR(0, 52, __pyx_L1_error)
053:
+054: def get_hub(*args, **kwargs): # pylint:disable=unused-argument
/* Python wrapper */static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_5get_hub(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/PyDoc_STRVAR(__pyx_doc_6gevent_19_gevent_c_hub_local_4get_hub, "\n Return the hub for the current thread.\n\n If a hub does not exist in the current thread, a new one is\n created of the type returned by :func:`get_hub_class`.\n\n .. deprecated:: 1.3b1\n The ``*args`` and ``**kwargs`` arguments are deprecated. They were\n only used when the hub was created, and so were non-deterministic---to be\n sure they were used, *all* callers had to pass them, or they were order-dependent.\n Use ``set_hub`` instead.\n\n .. versionchanged:: 1.5a3\n The *args* and *kwargs* arguments are now completely ignored.\n ");static PyMethodDef __pyx_mdef_6gevent_19_gevent_c_hub_local_5get_hub = {"get_hub", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6gevent_19_gevent_c_hub_local_5get_hub, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6gevent_19_gevent_c_hub_local_4get_hub};static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_5get_hub(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {CYTHON_UNUSED PyObject *__pyx_v_args = 0;CYTHON_UNUSED PyObject *__pyx_v_kwargs = 0;CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);PyObject *__pyx_r = 0;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("get_hub (wrapper)", 0);if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "get_hub", 1))) return NULL;__Pyx_INCREF(__pyx_args);__pyx_v_args = __pyx_args;__pyx_r = __pyx_pf_6gevent_19_gevent_c_hub_local_4get_hub(__pyx_self, __pyx_v_args, __pyx_v_kwargs);/* function exit code */__Pyx_DECREF(__pyx_v_args);__Pyx_XDECREF(__pyx_v_kwargs);__Pyx_RefNannyFinishContext();return __pyx_r;}static PyObject *__pyx_pf_6gevent_19_gevent_c_hub_local_4get_hub(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs) {PyObject *__pyx_r = NULL;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("get_hub", 0);/* function exit code */__pyx_L1_error:;__Pyx_XDECREF(__pyx_t_1);__Pyx_AddTraceback("gevent._gevent_c_hub_local.get_hub", __pyx_clineno, __pyx_lineno, __pyx_filename);__pyx_r = NULL;__pyx_L0:;__Pyx_XGIVEREF(__pyx_r);__Pyx_RefNannyFinishContext();return __pyx_r;}__pyx_tuple__7 = PyTuple_Pack(2, __pyx_n_s_args, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 54, __pyx_L1_error)__Pyx_GOTREF(__pyx_tuple__7);__Pyx_GIVEREF(__pyx_tuple__7);__pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_6gevent_19_gevent_c_hub_local_5get_hub, 0, __pyx_n_s_get_hub, NULL, __pyx_n_s_gevent__gevent_c_hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 54, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_4);if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_hub, __pyx_t_4) < 0) __PYX_ERR(0, 54, __pyx_L1_error)__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;__pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_get_hub, 54, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) __PYX_ERR(0, 54, __pyx_L1_error)
055: """
056: Return the hub for the current thread.
057:
058: If a hub does not exist in the current thread, a new one is
059: created of the type returned by :func:`get_hub_class`.
060:
061: .. deprecated:: 1.3b1
062: The ``*args`` and ``**kwargs`` arguments are deprecated. They were
063: only used when the hub was created, and so were non-deterministic---to be
064: sure they were used, *all* callers had to pass them, or they were order-dependent.
065: Use ``set_hub`` instead.
066:
067: .. versionchanged:: 1.5a3
068: The *args* and *kwargs* arguments are now completely ignored.
069: """
070:
+071: return get_hub_noargs()
__Pyx_XDECREF(__pyx_r);__pyx_t_1 = ((PyObject *)__pyx_f_6gevent_19_gevent_c_hub_local_get_hub_noargs(0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 71, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_1);__pyx_r = __pyx_t_1;__pyx_t_1 = 0;goto __pyx_L0;
072:
+073: def get_hub_noargs():
static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_7get_hub_noargs(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/static struct __pyx_obj_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_f_6gevent_19_gevent_c_hub_local_get_hub_noargs(CYTHON_UNUSED int __pyx_skip_dispatch) {PyObject *__pyx_v_hub = NULL;PyObject *__pyx_v_hubtype = NULL;struct __pyx_obj_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_r = NULL;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("get_hub_noargs", 0);/* function exit code */__pyx_L1_error:;__Pyx_XDECREF(__pyx_t_1);__Pyx_XDECREF(__pyx_t_3);__Pyx_XDECREF(__pyx_t_4);__Pyx_AddTraceback("gevent._gevent_c_hub_local.get_hub_noargs", __pyx_clineno, __pyx_lineno, __pyx_filename);__pyx_r = 0;__pyx_L0:;__Pyx_XDECREF(__pyx_v_hub);__Pyx_XDECREF(__pyx_v_hubtype);__Pyx_XGIVEREF((PyObject *)__pyx_r);__Pyx_RefNannyFinishContext();return __pyx_r;}/* Python wrapper */static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_7get_hub_noargs(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/static PyMethodDef __pyx_mdef_6gevent_19_gevent_c_hub_local_7get_hub_noargs = {"get_hub_noargs", (PyCFunction)__pyx_pw_6gevent_19_gevent_c_hub_local_7get_hub_noargs, METH_NOARGS, 0};static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_7get_hub_noargs(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);PyObject *__pyx_r = 0;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("get_hub_noargs (wrapper)", 0);__pyx_r = __pyx_pf_6gevent_19_gevent_c_hub_local_6get_hub_noargs(__pyx_self);/* function exit code */__Pyx_RefNannyFinishContext();return __pyx_r;}static PyObject *__pyx_pf_6gevent_19_gevent_c_hub_local_6get_hub_noargs(CYTHON_UNUSED PyObject *__pyx_self) {PyObject *__pyx_r = NULL;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("get_hub_noargs", 0);__Pyx_XDECREF(__pyx_r);__pyx_t_1 = ((PyObject *)__pyx_f_6gevent_19_gevent_c_hub_local_get_hub_noargs(0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_1);__pyx_r = __pyx_t_1;__pyx_t_1 = 0;goto __pyx_L0;/* function exit code */__pyx_L1_error:;__Pyx_XDECREF(__pyx_t_1);__Pyx_AddTraceback("gevent._gevent_c_hub_local.get_hub_noargs", __pyx_clineno, __pyx_lineno, __pyx_filename);__pyx_r = NULL;__pyx_L0:;__Pyx_XGIVEREF(__pyx_r);__Pyx_RefNannyFinishContext();return __pyx_r;}__pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_6gevent_19_gevent_c_hub_local_7get_hub_noargs, 0, __pyx_n_s_get_hub_noargs, NULL, __pyx_n_s_gevent__gevent_c_hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__9)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 73, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_4);if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_hub_noargs, __pyx_t_4) < 0) __PYX_ERR(0, 73, __pyx_L1_error)__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;__pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_get_hub_noargs, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 73, __pyx_L1_error)
074: # Just like get_hub, but cheaper to call because it
075: # takes no arguments or kwargs. See also a copy in
076: # gevent/greenlet.py
+077: hub = _threadlocal.hub
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_19_gevent_c_hub_local__threadlocal, __pyx_n_s_hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_1);__pyx_v_hub = __pyx_t_1;__pyx_t_1 = 0;
+078: if hub is None:
__pyx_t_2 = (__pyx_v_hub == Py_None);if (__pyx_t_2) {}
+079: hubtype = get_hub_class()
__pyx_t_1 = __pyx_f_6gevent_19_gevent_c_hub_local_get_hub_class(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_1);__pyx_v_hubtype = __pyx_t_1;__pyx_t_1 = 0;
+080: hub = _threadlocal.hub = hubtype()
__Pyx_INCREF(__pyx_v_hubtype);__pyx_t_3 = __pyx_v_hubtype; __pyx_t_4 = NULL;__pyx_t_5 = 0;if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);if (likely(__pyx_t_4)) {PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);__Pyx_INCREF(__pyx_t_4);__Pyx_INCREF(function);__Pyx_DECREF_SET(__pyx_t_3, function);__pyx_t_5 = 1;}}{PyObject *__pyx_callargs[1] = {__pyx_t_4, };__pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_1);__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;}__Pyx_INCREF(__pyx_t_1);__Pyx_DECREF_SET(__pyx_v_hub, __pyx_t_1);if (__Pyx_PyObject_SetAttrStr(__pyx_v_6gevent_19_gevent_c_hub_local__threadlocal, __pyx_n_s_hub, __pyx_t_1) < 0) __PYX_ERR(0, 80, __pyx_L1_error)__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+081: return hub
__Pyx_XDECREF((PyObject *)__pyx_r);if (!(likely(((__pyx_v_hub) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_hub, __pyx_ptype_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop))))) __PYX_ERR(0, 81, __pyx_L1_error)__Pyx_INCREF(__pyx_v_hub);__pyx_r = ((struct __pyx_obj_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_v_hub);goto __pyx_L0;
082:
+083: def get_hub_if_exists():
static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_9get_hub_if_exists(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/static struct __pyx_obj_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_f_6gevent_19_gevent_c_hub_local_get_hub_if_exists(CYTHON_UNUSED int __pyx_skip_dispatch) {struct __pyx_obj_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_r = NULL;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("get_hub_if_exists", 0);/* function exit code */__pyx_L1_error:;__Pyx_XDECREF(__pyx_t_1);__Pyx_AddTraceback("gevent._gevent_c_hub_local.get_hub_if_exists", __pyx_clineno, __pyx_lineno, __pyx_filename);__pyx_r = 0;__pyx_L0:;__Pyx_XGIVEREF((PyObject *)__pyx_r);__Pyx_RefNannyFinishContext();return __pyx_r;}/* Python wrapper */static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_9get_hub_if_exists(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/PyDoc_STRVAR(__pyx_doc_6gevent_19_gevent_c_hub_local_8get_hub_if_exists, "Return the hub for the current thread.\n\n Return ``None`` if no hub has been created yet.\n ");static PyMethodDef __pyx_mdef_6gevent_19_gevent_c_hub_local_9get_hub_if_exists = {"get_hub_if_exists", (PyCFunction)__pyx_pw_6gevent_19_gevent_c_hub_local_9get_hub_if_exists, METH_NOARGS, __pyx_doc_6gevent_19_gevent_c_hub_local_8get_hub_if_exists};static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_9get_hub_if_exists(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);PyObject *__pyx_r = 0;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("get_hub_if_exists (wrapper)", 0);__pyx_r = __pyx_pf_6gevent_19_gevent_c_hub_local_8get_hub_if_exists(__pyx_self);/* function exit code */__Pyx_RefNannyFinishContext();return __pyx_r;}static PyObject *__pyx_pf_6gevent_19_gevent_c_hub_local_8get_hub_if_exists(CYTHON_UNUSED PyObject *__pyx_self) {PyObject *__pyx_r = NULL;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("get_hub_if_exists", 0);__Pyx_XDECREF(__pyx_r);__pyx_t_1 = ((PyObject *)__pyx_f_6gevent_19_gevent_c_hub_local_get_hub_if_exists(0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_1);__pyx_r = __pyx_t_1;__pyx_t_1 = 0;goto __pyx_L0;/* function exit code */__pyx_L1_error:;__Pyx_XDECREF(__pyx_t_1);__Pyx_AddTraceback("gevent._gevent_c_hub_local.get_hub_if_exists", __pyx_clineno, __pyx_lineno, __pyx_filename);__pyx_r = NULL;__pyx_L0:;__Pyx_XGIVEREF(__pyx_r);__Pyx_RefNannyFinishContext();return __pyx_r;}__pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_6gevent_19_gevent_c_hub_local_9get_hub_if_exists, 0, __pyx_n_s_get_hub_if_exists, NULL, __pyx_n_s_gevent__gevent_c_hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__10)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 83, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_4);if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_hub_if_exists, __pyx_t_4) < 0) __PYX_ERR(0, 83, __pyx_L1_error)__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;__pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_get_hub_if_exists, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(0, 83, __pyx_L1_error)
084: """Return the hub for the current thread.
085:
086: Return ``None`` if no hub has been created yet.
087: """
+088: return _threadlocal.hub
__Pyx_XDECREF((PyObject *)__pyx_r);__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_19_gevent_c_hub_local__threadlocal, __pyx_n_s_hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_1);if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop))))) __PYX_ERR(0, 88, __pyx_L1_error)__pyx_r = ((struct __pyx_obj_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_t_1);__pyx_t_1 = 0;goto __pyx_L0;
089:
090:
+091: def set_hub(hub):
static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_11set_hub(PyObject *__pyx_self, PyObject *__pyx_v_hub); /*proto*/static PyObject *__pyx_f_6gevent_19_gevent_c_hub_local_set_hub(struct __pyx_obj_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_hub, CYTHON_UNUSED int __pyx_skip_dispatch) {PyObject *__pyx_r = NULL;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("set_hub", 0);/* function exit code */__pyx_r = Py_None; __Pyx_INCREF(Py_None);goto __pyx_L0;__pyx_L1_error:;__Pyx_AddTraceback("gevent._gevent_c_hub_local.set_hub", __pyx_clineno, __pyx_lineno, __pyx_filename);__pyx_r = 0;__pyx_L0:;__Pyx_XGIVEREF(__pyx_r);__Pyx_RefNannyFinishContext();return __pyx_r;}/* Python wrapper */static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_11set_hub(PyObject *__pyx_self, PyObject *__pyx_v_hub); /*proto*/static PyMethodDef __pyx_mdef_6gevent_19_gevent_c_hub_local_11set_hub = {"set_hub", (PyCFunction)__pyx_pw_6gevent_19_gevent_c_hub_local_11set_hub, METH_O, 0};static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_11set_hub(PyObject *__pyx_self, PyObject *__pyx_v_hub) {CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);PyObject *__pyx_r = 0;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("set_hub (wrapper)", 0);if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_hub), __pyx_ptype_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop, 1, "hub", 0))) __PYX_ERR(0, 91, __pyx_L1_error)__pyx_r = __pyx_pf_6gevent_19_gevent_c_hub_local_10set_hub(__pyx_self, ((struct __pyx_obj_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop *)__pyx_v_hub));int __pyx_lineno = 0;const char *__pyx_filename = NULL;int __pyx_clineno = 0;/* function exit code */goto __pyx_L0;__pyx_L1_error:;__pyx_r = NULL;__pyx_L0:;__Pyx_RefNannyFinishContext();return __pyx_r;}static PyObject *__pyx_pf_6gevent_19_gevent_c_hub_local_10set_hub(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_6gevent_29_gevent_c_greenlet_primitives_SwitchOutGreenletWithLoop *__pyx_v_hub) {PyObject *__pyx_r = NULL;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("set_hub", 0);__Pyx_XDECREF(__pyx_r);__pyx_t_1 = __pyx_f_6gevent_19_gevent_c_hub_local_set_hub(__pyx_v_hub, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_1);__pyx_r = __pyx_t_1;__pyx_t_1 = 0;goto __pyx_L0;/* function exit code */__pyx_L1_error:;__Pyx_XDECREF(__pyx_t_1);__Pyx_AddTraceback("gevent._gevent_c_hub_local.set_hub", __pyx_clineno, __pyx_lineno, __pyx_filename);__pyx_r = NULL;__pyx_L0:;__Pyx_XGIVEREF(__pyx_r);__Pyx_RefNannyFinishContext();return __pyx_r;}__pyx_tuple__11 = PyTuple_Pack(1, __pyx_n_s_hub); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 91, __pyx_L1_error)__Pyx_GOTREF(__pyx_tuple__11);__Pyx_GIVEREF(__pyx_tuple__11);__pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_6gevent_19_gevent_c_hub_local_11set_hub, 0, __pyx_n_s_set_hub, NULL, __pyx_n_s_gevent__gevent_c_hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 91, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_4);if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_hub, __pyx_t_4) < 0) __PYX_ERR(0, 91, __pyx_L1_error)__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;__pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_set_hub, 91, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 91, __pyx_L1_error)
+092: _threadlocal.hub = hub
if (__Pyx_PyObject_SetAttrStr(__pyx_v_6gevent_19_gevent_c_hub_local__threadlocal, __pyx_n_s_hub, ((PyObject *)__pyx_v_hub)) < 0) __PYX_ERR(0, 92, __pyx_L1_error)
093:
+094: def get_loop():
static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_13get_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/static PyObject *__pyx_f_6gevent_19_gevent_c_hub_local_get_loop(CYTHON_UNUSED int __pyx_skip_dispatch) {PyObject *__pyx_r = NULL;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("get_loop", 0);/* function exit code */__pyx_L1_error:;__Pyx_XDECREF(__pyx_t_1);__Pyx_AddTraceback("gevent._gevent_c_hub_local.get_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);__pyx_r = 0;__pyx_L0:;__Pyx_XGIVEREF(__pyx_r);__Pyx_RefNannyFinishContext();return __pyx_r;}/* Python wrapper */static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_13get_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/static PyMethodDef __pyx_mdef_6gevent_19_gevent_c_hub_local_13get_loop = {"get_loop", (PyCFunction)__pyx_pw_6gevent_19_gevent_c_hub_local_13get_loop, METH_NOARGS, 0};static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_13get_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);PyObject *__pyx_r = 0;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("get_loop (wrapper)", 0);__pyx_r = __pyx_pf_6gevent_19_gevent_c_hub_local_12get_loop(__pyx_self);/* function exit code */__Pyx_RefNannyFinishContext();return __pyx_r;}static PyObject *__pyx_pf_6gevent_19_gevent_c_hub_local_12get_loop(CYTHON_UNUSED PyObject *__pyx_self) {PyObject *__pyx_r = NULL;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("get_loop", 0);__Pyx_XDECREF(__pyx_r);__pyx_t_1 = __pyx_f_6gevent_19_gevent_c_hub_local_get_loop(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_1);__pyx_r = __pyx_t_1;__pyx_t_1 = 0;goto __pyx_L0;/* function exit code */__pyx_L1_error:;__Pyx_XDECREF(__pyx_t_1);__Pyx_AddTraceback("gevent._gevent_c_hub_local.get_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);__pyx_r = NULL;__pyx_L0:;__Pyx_XGIVEREF(__pyx_r);__Pyx_RefNannyFinishContext();return __pyx_r;}__pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_6gevent_19_gevent_c_hub_local_13get_loop, 0, __pyx_n_s_get_loop, NULL, __pyx_n_s_gevent__gevent_c_hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 94, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_4);if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_loop, __pyx_t_4) < 0) __PYX_ERR(0, 94, __pyx_L1_error)__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;__pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gevent__hub_local_py, __pyx_n_s_get_loop, 94, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 94, __pyx_L1_error)
+095: return _threadlocal.loop
__Pyx_XDECREF(__pyx_r);__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_6gevent_19_gevent_c_hub_local__threadlocal, __pyx_n_s_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_1);__pyx_r = __pyx_t_1;__pyx_t_1 = 0;goto __pyx_L0;
096:
+097: def set_loop(loop):
static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_15set_loop(PyObject *__pyx_self, PyObject *__pyx_v_loop); /*proto*/static PyObject *__pyx_f_6gevent_19_gevent_c_hub_local_set_loop(PyObject *__pyx_v_loop, CYTHON_UNUSED int __pyx_skip_dispatch) {PyObject *__pyx_r = NULL;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("set_loop", 0);/* function exit code */__pyx_r = Py_None; __Pyx_INCREF(Py_None);goto __pyx_L0;__pyx_L1_error:;__Pyx_AddTraceback("gevent._gevent_c_hub_local.set_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);__pyx_r = 0;__pyx_L0:;__Pyx_XGIVEREF(__pyx_r);__Pyx_RefNannyFinishContext();return __pyx_r;}/* Python wrapper */static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_15set_loop(PyObject *__pyx_self, PyObject *__pyx_v_loop); /*proto*/static PyMethodDef __pyx_mdef_6gevent_19_gevent_c_hub_local_15set_loop = {"set_loop", (PyCFunction)__pyx_pw_6gevent_19_gevent_c_hub_local_15set_loop, METH_O, 0};static PyObject *__pyx_pw_6gevent_19_gevent_c_hub_local_15set_loop(PyObject *__pyx_self, PyObject *__pyx_v_loop) {CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);PyObject *__pyx_r = 0;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("set_loop (wrapper)", 0);__pyx_r = __pyx_pf_6gevent_19_gevent_c_hub_local_14set_loop(__pyx_self, ((PyObject *)__pyx_v_loop));/* function exit code */__Pyx_RefNannyFinishContext();return __pyx_r;}static PyObject *__pyx_pf_6gevent_19_gevent_c_hub_local_14set_loop(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_loop) {PyObject *__pyx_r = NULL;__Pyx_RefNannyDeclarations__Pyx_RefNannySetupContext("set_loop", 0);__Pyx_XDECREF(__pyx_r);__pyx_t_1 = __pyx_f_6gevent_19_gevent_c_hub_local_set_loop(__pyx_v_loop, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_1);__pyx_r = __pyx_t_1;__pyx_t_1 = 0;goto __pyx_L0;/* function exit code */__pyx_L1_error:;__Pyx_XDECREF(__pyx_t_1);__Pyx_AddTraceback("gevent._gevent_c_hub_local.set_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);__pyx_r = NULL;__pyx_L0:;__Pyx_XGIVEREF(__pyx_r);__Pyx_RefNannyFinishContext();return __pyx_r;}__pyx_tuple__14 = PyTuple_Pack(1, __pyx_n_s_loop); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 97, __pyx_L1_error)__Pyx_GOTREF(__pyx_tuple__14);__Pyx_GIVEREF(__pyx_tuple__14);__pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_6gevent_19_gevent_c_hub_local_15set_loop, 0, __pyx_n_s_set_loop, NULL, __pyx_n_s_gevent__gevent_c_hub_local, __pyx_d, ((PyObject *)__pyx_codeobj__15)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 97, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_4);if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_loop, __pyx_t_4) < 0) __PYX_ERR(0, 97, __pyx_L1_error)__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+098: _threadlocal.loop = loop
if (__Pyx_PyObject_SetAttrStr(__pyx_v_6gevent_19_gevent_c_hub_local__threadlocal, __pyx_n_s_loop, __pyx_v_loop) < 0) __PYX_ERR(0, 98, __pyx_L1_error)
099:
+100: from gevent._util import import_c_accel
__pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 100, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_4);__Pyx_INCREF(__pyx_n_s_import_c_accel);__Pyx_GIVEREF(__pyx_n_s_import_c_accel);PyList_SET_ITEM(__pyx_t_4, 0, __pyx_n_s_import_c_accel);__pyx_t_3 = __Pyx_Import(__pyx_n_s_gevent__util, __pyx_t_4, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_3);__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;__pyx_t_4 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 100, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_4);if (PyDict_SetItem(__pyx_d, __pyx_n_s_import_c_accel, __pyx_t_4) < 0) __PYX_ERR(0, 100, __pyx_L1_error)__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+101: import_c_accel(globals(), 'gevent.__hub_local')
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_import_c_accel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 101, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_3);__pyx_t_4 = __Pyx_Globals(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 101, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_4);__pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 101, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_5);__Pyx_GIVEREF(__pyx_t_4);PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);__Pyx_INCREF(__pyx_kp_s_gevent___hub_local);__Pyx_GIVEREF(__pyx_kp_s_gevent___hub_local);PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_kp_s_gevent___hub_local);__pyx_t_4 = 0;__pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 101, __pyx_L1_error)__Pyx_GOTREF(__pyx_t_4);__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;