Generated by Cython 3.3.1
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: token_provider.pxi
0001: ################################################################################
0002: ## ___ _ ____ ____
0003: ## / _ \ _ _ ___ ___| |_| _ \| __ )
0004: ## | | | | | | |/ _ \/ __| __| | | | _ \
0005: ## | |_| | |_| | __/\__ \ |_| |_| | |_) |
0006: ## \__\_\\__,_|\___||___/\__|____/|____/
0007: ##
0008: ## Copyright (c) 2014-2019 Appsicle
0009: ## Copyright (c) 2019-2025 QuestDB
0010: ##
0011: ## Licensed under the Apache License, Version 2.0 (the "License");
0012: ## you may not use this file except in compliance with the License.
0013: ## You may obtain a copy of the License at
0014: ##
0015: ## http://www.apache.org/licenses/LICENSE-2.0
0016: ##
0017: ## Unless required by applicable law or agreed to in writing, software
0018: ## distributed under the License is distributed on an "AS IS" BASIS,
0019: ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
0020: ## See the License for the specific language governing permissions and
0021: ## limitations under the License.
0022: ##
0023: ################################################################################
0024:
0025: # Rotating Bearer-token providers: the Python face of the native
0026: # `questdb/token_provider.h` API.
0027: #
0028: # A `RefreshingTokenProvider` is a native, proactively refreshing cache in
0029: # front of a Python token source. An application provider -- any callable
0030: # returning a token, or an object with `token()` and an optional
0031: # `on_rejected()` -- is bridged through the native function table. Either
0032: # attaches to `Sender` and `questdb.connect` with `bearer_token_provider=`.
0033: #
0034: # Native code never holds a Python reference. `_TOKEN_CALLBACKS` maps native
0035: # `user_data` ids to weak references to GC-visible handles. Each handle owns
0036: # its source/provider, and clients retain the handle's wrapper for as long as
0037: # native clones can call it. The registry must not root ownership cycles such
0038: # as a bound source method whose owner also owns the provider. Dispatch retains
0039: # the handle strongly until the callback returns. The native release callback
0040: # is deliberately empty: it can run on any thread after interpreter finalization,
0041: # so it must never enter Python (see `_oidc_user_data_release_trampoline`).
0042: # Every callback goes through the process-wide callback gate that `oidc.pxi`
0043: # drains before finalization. Once questdb's atexit hook has closed it, a
0044: # provider callback the main thread makes from inside its own native call --
0045: # an ILP/HTTP flush from `logging.shutdown()`, say -- still runs (see
0046: # `_tp_main_thread_before_finalization`).
0047:
+0048: import weakref
__pyx_t_3 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_weakref, 0, 0, NULL, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 48, __pyx_L1_error) __pyx_t_17 = __pyx_t_3; __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_weakref, __pyx_t_17) < (0)) __PYX_ERR(4, 48, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+0049: from functools import partial as _token_partial
{
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_partial};
__pyx_t_3 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_functools, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 49, __pyx_L1_error)
}
__pyx_t_17 = __pyx_t_3;
__Pyx_GOTREF(__pyx_t_17);
{
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_partial};
__pyx_t_9 = 0; {
__pyx_t_16 = __Pyx_ImportFrom(__pyx_t_17, __pyx_imported_names[__pyx_t_9]); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 49, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
switch (__pyx_t_9) {
case 0:
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_token_partial, __pyx_t_16) < (0)) __PYX_ERR(4, 49, __pyx_L1_error)
break;
default:;
}
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
}
}
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+0050: from types import MethodType as _TokenBoundMethod
{
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_MethodType};
__pyx_t_3 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_types, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 50, __pyx_L1_error)
}
__pyx_t_17 = __pyx_t_3;
__Pyx_GOTREF(__pyx_t_17);
{
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_MethodType};
__pyx_t_9 = 0; {
__pyx_t_16 = __Pyx_ImportFrom(__pyx_t_17, __pyx_imported_names[__pyx_t_9]); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 50, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
switch (__pyx_t_9) {
case 0:
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TokenBoundMethod, __pyx_t_16) < (0)) __PYX_ERR(4, 50, __pyx_L1_error)
break;
default:;
}
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
}
}
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
0051:
+0052: cdef dict _TOKEN_CALLBACKS = {}
__pyx_t_17 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS, ((PyObject*)__pyx_t_17)); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = 0;
0053: # Weak values do not root provider/client ownership cycles. Use identity keys:
0054: # application providers need not be hashable or comparable. Publish a prebuilt
0055: # weakref with dict.setdefault so GC/reentrant construction cannot replace an
0056: # already-published holder.
+0057: cdef dict _APPLICATION_TOKEN_PROVIDERS = {}
__pyx_t_17 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 57, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS, ((PyObject*)__pyx_t_17)); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = 0;
0058: # Reentrant: a wrapper collected while this thread holds the lock (a
0059: # garbage collection triggered inside a locked section) unregisters itself.
+0060: cdef object _TOKEN_CALLBACKS_LOCK = threading.RLock()
__pyx_t_16 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_threading); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_RLock); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_16, NULL}; __pyx_t_17 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); } __Pyx_XGOTREF(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_t_17); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = 0;
+0061: cdef size_t _token_callback_last_id = 0
__pyx_v_7questdb_7_client__token_callback_last_id = 0;
0062:
0063:
+0064: def _token_after_fork_in_child():
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_85_token_after_fork_in_child(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_85_token_after_fork_in_child = {"_token_after_fork_in_child", (PyCFunction)__pyx_pw_7questdb_7_client_85_token_after_fork_in_child, METH_NOARGS, 0};
static PyObject *__pyx_pw_7questdb_7_client_85_token_after_fork_in_child(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_token_after_fork_in_child (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_7questdb_7_client_84_token_after_fork_in_child(__pyx_self);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_84_token_after_fork_in_child(CYTHON_UNUSED PyObject *__pyx_self) {
PyObject *__pyx_r = NULL;
/* … */
/* 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_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client._token_after_fork_in_child", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_85_token_after_fork_in_child, 0, __pyx_mstate_global->__pyx_n_u_token_after_fork_in_child, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[123])); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 64, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17);
#endif
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_token_after_fork_in_child, __pyx_t_17) < (0)) __PYX_ERR(4, 64, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
0065: # A parent thread may have held this lock when it disappeared. Inherited
0066: # providers remain unusable, but even cleanup must not take the old lock.
0067: global _TOKEN_CALLBACKS_LOCK, _APPLICATION_TOKEN_PROVIDERS
+0068: _TOKEN_CALLBACKS_LOCK = threading.RLock()
__pyx_t_2 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_RLock); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_5 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_XGOTREF(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0;
+0069: _APPLICATION_TOKEN_PROVIDERS = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS, ((PyObject*)__pyx_t_1)); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0;
0070:
0071:
+0072: if hasattr(os, 'register_at_fork'):
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_os); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_8 = __Pyx_HasAttr(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_register_at_fork); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 72, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__pyx_t_8) { /* … */ }
+0073: os.register_at_fork(after_in_child=_token_after_fork_in_child)
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_os); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 73, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
__pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_register_at_fork); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 73, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_18);
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_token_after_fork_in_child); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 73, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
#if CYTHON_VECTORCALL
#endif
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_16};
#if CYTHON_VECTORCALL
__pyx_t_20 = __pyx_mstate_global->__pyx_tuple[60];
if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 73, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_20);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_after_in_child};
__pyx_t_20 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+1, 1);
if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 73, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_20);
}
#endif
__pyx_t_17 = __Pyx_Object_VectorcallKwds((PyObject*)__pyx_t_18, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_20);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
#if CYTHON_VECTORCALL
#endif
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 73, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
}
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
0074:
0075: # Longest token-source error message passed to native, which sanitizes and
0076: # caps it at 256 characters anyway.
+0077: cdef Py_ssize_t _TOKEN_ERROR_MSG_MAX = 1024
__pyx_v_7questdb_7_client__TOKEN_ERROR_MSG_MAX = 0x400;
0078:
0079: # Token callbacks in progress on each thread, kept as the integer value of a
0080: # native thread-specific slot: counting allocates nothing and cannot raise,
0081: # and nothing is left to free when the thread ends. A callback runs inside the
0082: # client call that needs the token -- for ILP/HTTP, the flush on the caller's
0083: # own thread -- which may still hold the sender and its buffer, so Python
0084: # running there is never the frame's own (see `Buffer._reentered_from_frame`).
0085: cdef Py_tss_t _TOKEN_CALLBACK_DEPTH_KEY
0086:
+0087: if PyThread_tss_create(&_TOKEN_CALLBACK_DEPTH_KEY) != 0:
__pyx_t_8 = (PyThread_tss_create((&__pyx_v_7questdb_7_client__TOKEN_CALLBACK_DEPTH_KEY)) != 0);
if (unlikely(__pyx_t_8)) {
/* … */
}
+0088: raise RuntimeError('Could not create the QuestDB token-callback key.')
__pyx_t_18 = NULL;
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_18, __pyx_mstate_global->__pyx_kp_u_Could_not_create_the_QuestDB_tok};
__pyx_t_17 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 88, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
}
__Pyx_Raise(__pyx_t_17, 0, 0, 0);
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
__PYX_ERR(4, 88, __pyx_L1_error)
0089:
0090:
+0091: cdef inline bint _token_callback_enter() noexcept:
static CYTHON_INLINE int __pyx_f_7questdb_7_client__token_callback_enter(void) {
uintptr_t __pyx_v_depth;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
0092: """Count a token callback on this thread. The result goes to the matching
0093: `_token_callback_exit`: False when the count could not be recorded."""
+0094: cdef uintptr_t depth = <uintptr_t>PyThread_tss_get(
__pyx_v_depth = ((uintptr_t)PyThread_tss_get((&__pyx_v_7questdb_7_client__TOKEN_CALLBACK_DEPTH_KEY)));
0095: &_TOKEN_CALLBACK_DEPTH_KEY)
+0096: return PyThread_tss_set(
{
__pyx_r = (PyThread_tss_set((&__pyx_v_7questdb_7_client__TOKEN_CALLBACK_DEPTH_KEY), ((void *)(__pyx_v_depth + 1))) == 0);
}
goto __pyx_L0;
0097: &_TOKEN_CALLBACK_DEPTH_KEY, <void*>(depth + 1)) == 0
0098:
0099:
+0100: cdef inline void _token_callback_exit(bint entered) noexcept:
static CYTHON_INLINE void __pyx_f_7questdb_7_client__token_callback_exit(int __pyx_v_entered) {
uintptr_t __pyx_v_depth;
/* … */
/* function exit code */
}
0101: cdef uintptr_t depth
+0102: if entered:
if (__pyx_v_entered) {
/* … */
}
+0103: depth = <uintptr_t>PyThread_tss_get(&_TOKEN_CALLBACK_DEPTH_KEY)
__pyx_v_depth = ((uintptr_t)PyThread_tss_get((&__pyx_v_7questdb_7_client__TOKEN_CALLBACK_DEPTH_KEY)));
+0104: PyThread_tss_set(&_TOKEN_CALLBACK_DEPTH_KEY, <void*>(depth - 1))
(void)(PyThread_tss_set((&__pyx_v_7questdb_7_client__TOKEN_CALLBACK_DEPTH_KEY), ((void *)(__pyx_v_depth - 1))));
0105:
0106:
+0107: cdef inline bint _token_callback_on_this_thread() noexcept:
static CYTHON_INLINE int __pyx_f_7questdb_7_client__token_callback_on_this_thread(void) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
+0108: return PyThread_tss_get(&_TOKEN_CALLBACK_DEPTH_KEY) != NULL
{
__pyx_r = (PyThread_tss_get((&__pyx_v_7questdb_7_client__TOKEN_CALLBACK_DEPTH_KEY)) != NULL);
}
goto __pyx_L0;
0109:
0110:
+0111: cdef bint _token_callback_in_this_context() noexcept:
static int __pyx_f_7questdb_7_client__token_callback_in_this_context(void) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
0112: """Whether the code running now is inside a token callback, telling apart
0113: the greenlets that share the main thread.
0114:
0115: `_token_callback_on_this_thread` counts per OS thread, as the frame
0116: re-entry check needs: while a greenlet's token callback is suspended
0117: inside a native call using a buffer, another greenlet that reaches that
0118: buffer must be refused too. A bounded wait concerns only the caller,
0119: though. A greenlet
0120: suspended inside a token callback -- a provider waiting on gevent I/O --
0121: must not make every other greenlet's lease wait or ``close()`` give up
0122: after two seconds as if it were inside that callback. Main-thread token
0123: callbacks enter a token region, which records the greenlet.
0124: """
+0125: if PyThread_tss_get(&_TOKEN_CALLBACK_DEPTH_KEY) == NULL:
__pyx_t_1 = (PyThread_tss_get((&__pyx_v_7questdb_7_client__TOKEN_CALLBACK_DEPTH_KEY)) == NULL);
if (__pyx_t_1) {
/* … */
}
+0126: return False
{
__pyx_r = 0;
}
goto __pyx_L0;
+0127: if questdb_thread_ident() != _OIDC_MAIN_THREAD_IDENT:
__pyx_t_1 = (PyThread_get_thread_ident() != __pyx_v_7questdb_7_client__OIDC_MAIN_THREAD_IDENT);
if (__pyx_t_1) {
/* … */
}
+0128: return True
{
__pyx_r = 1;
}
goto __pyx_L0;
+0129: return _oidc_main_region_active(_OIDC_REGION_TOKEN)
{
__pyx_r = __pyx_f_7questdb_7_client__oidc_main_region_active(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN);
}
goto __pyx_L0;
0130:
0131:
+0132: class _ConfigArgumentError(QuestDBError):
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); { PyObject* __pyx_temp[1] = {__pyx_t_17}; __pyx_t_18 = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); } __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = __pyx_t_18; __Pyx_INCREF(__pyx_t_17); __pyx_t_20 = __Pyx_PEP560_update_bases(__pyx_t_17); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = __Pyx_CalculateMetaclass(NULL, __pyx_t_20); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_16 = __Pyx_Py3MetaclassPrepare(__pyx_t_17, __pyx_t_20, __pyx_mstate_global->__pyx_n_u_ConfigArgumentError, __pyx_mstate_global->__pyx_n_u_ConfigArgumentError, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_An_invalid_argument_to_the_token); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (__pyx_t_20 != __pyx_t_18) { if (unlikely((PyDict_SetItemString(__pyx_t_16, "__orig_bases__", __pyx_t_18) < 0))) __PYX_ERR(4, 132, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_18 = PyList_New(0); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); /* … */ __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_ConfigArgumentError, __pyx_t_20, __pyx_t_16, NULL, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif if (__Pyx_CyFunction_InitClassCell(__pyx_t_18, __pyx_t_5) < (0)) __PYX_ERR(4, 132, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ConfigArgumentError, __pyx_t_5) < (0)) __PYX_ERR(4, 132, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
0133: """An invalid argument to the token-provider API, raised as one of the
0134: two subclasses below.
0135:
0136: Each is the built-in error Python code expects and also a `QuestDBError`
0137: with code `ConfigError`, as `OidcDeviceAuth` and the PG-wire adapters
0138: report a bad argument (`OidcConfigError`), so `except QuestDBError`
0139: catches a bad argument anywhere in `questdb.auth`.
0140: """
+0141: def __init__(self, msg):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_20_ConfigArgumentError_1__init__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_20_ConfigArgumentError_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_20_ConfigArgumentError_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_20_ConfigArgumentError_1__init__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_msg = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_msg,0};
PyObject* values[2] = {0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 141, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 2:
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 141, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 141, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(4, 141, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(4, 141, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 2)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 141, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 141, __pyx_L3_error)
}
__pyx_v_self = values[0];
__pyx_v_msg = values[1];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(4, 141, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client._ConfigArgumentError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_20_ConfigArgumentError___init__(__pyx_self, __pyx_v_self, __pyx_v_msg);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_20_ConfigArgumentError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_msg) {
PyObject *__pyx_r = NULL;
/* … */
/* 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_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("questdb._client._ConfigArgumentError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_20_ConfigArgumentError_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ConfigArgumentError___init, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[124])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 141, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
#endif
PyList_Append(__pyx_t_18, __pyx_t_5);
if (__Pyx_SetNameInClass(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_5) < (0)) __PYX_ERR(4, 141, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0142: super().__init__(QuestDBErrorCode.ConfigError, msg)
__pyx_t_4 = NULL; __pyx_t_5 = __Pyx_CyFunction_GetClassObj(__pyx_self); if (!__pyx_t_5) { PyErr_SetString(PyExc_RuntimeError, "super(): empty __class__ cell"); __PYX_ERR(4, 142, __pyx_L1_error) } __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 1; { PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_5, __pyx_v_self}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_4, __pyx_v_msg}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
0143:
0144:
+0145: class _ConfigTypeError(_ConfigArgumentError, TypeError):
__Pyx_GetModuleGlobalName(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_ConfigArgumentError); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); { PyObject* __pyx_temp[2] = {__pyx_t_20, ((PyObject *)(((PyTypeObject*)PyExc_TypeError)))}; __pyx_t_17 = __Pyx_PyTuple_FromArray(__pyx_temp, 2); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); } __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __pyx_t_20 = __pyx_t_17; __Pyx_INCREF(__pyx_t_20); __pyx_t_16 = __Pyx_PEP560_update_bases(__pyx_t_20); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __pyx_t_20 = __Pyx_CalculateMetaclass(NULL, __pyx_t_16); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_20, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_ConfigTypeError, __pyx_mstate_global->__pyx_n_u_ConfigTypeError, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_An_argument_of_the_wrong_type); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_16 != __pyx_t_17) { if (unlikely((PyDict_SetItemString(__pyx_t_5, "__orig_bases__", __pyx_t_17) < 0))) __PYX_ERR(4, 145, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = __Pyx_Py3ClassCreate(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_ConfigTypeError, __pyx_t_16, __pyx_t_5, NULL, 0, 0); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ConfigTypeError, __pyx_t_17) < (0)) __PYX_ERR(4, 145, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
0146: """An argument of the wrong type."""
0147:
0148:
+0149: class _ConfigValueError(_ConfigArgumentError, ValueError):
__Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_ConfigArgumentError); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); { PyObject* __pyx_temp[2] = {__pyx_t_16, ((PyObject *)(((PyTypeObject*)PyExc_ValueError)))}; __pyx_t_20 = __Pyx_PyTuple_FromArray(__pyx_temp, 2); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); } __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_16 = __pyx_t_20; __Pyx_INCREF(__pyx_t_16); __pyx_t_5 = __Pyx_PEP560_update_bases(__pyx_t_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_16 = __Pyx_CalculateMetaclass(NULL, __pyx_t_5); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = __Pyx_Py3MetaclassPrepare(__pyx_t_16, __pyx_t_5, __pyx_mstate_global->__pyx_n_u_ConfigValueError, __pyx_mstate_global->__pyx_n_u_ConfigValueError, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_An_argument_of_the_right_type_wh); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (__pyx_t_5 != __pyx_t_20) { if (unlikely((PyDict_SetItemString(__pyx_t_17, "__orig_bases__", __pyx_t_20) < 0))) __PYX_ERR(4, 149, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __pyx_t_20 = __Pyx_Py3ClassCreate(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_ConfigValueError, __pyx_t_5, __pyx_t_17, NULL, 0, 0); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_20); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ConfigValueError, __pyx_t_20) < (0)) __PYX_ERR(4, 149, __pyx_L1_error) __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
0150: """An argument of the right type whose value is not allowed."""
0151:
0152:
+0153: class ExpiringToken:
__pyx_t_5 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ExpiringToken, __pyx_mstate_global->__pyx_n_u_ExpiringToken, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_A_token_and_when_it_expires_the); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); /* … */ __pyx_t_17 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ExpiringToken, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_5, NULL, 0, 0); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ExpiringToken, __pyx_t_17) < (0)) __PYX_ERR(4, 153, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
0154: """
0155: A token and when it expires: the result of one token-source fetch.
0156:
0157: Pass ``expires_at`` and the optional ``refresh_at`` (the platform's
0158: suggested refresh time) as timezone-aware :class:`datetime.datetime`
0159: objects or epoch seconds, within Python's datetime range. Values outside
0160: that range are rejected so provider status snapshots always remain
0161: readable. For a token that does not expire, ``datetime.max`` with a UTC
0162: timezone works: an instant after 9999-12-31T23:59:59.999Z counts as that
0163: instant, the latest the client represents. The attributes hold
0164: timezone-aware UTC datetimes, as
0165: :class:`~questdb.auth.TokenProviderStatus` reports its times. If the
0166: platform reports a relative lifetime, such as OAuth's ``expires_in``, use
0167: :meth:`expires_in`, which computes the expiry from the local time of
0168: receipt.
0169:
0170: The ``repr`` never shows the token.
0171: """
+0172: __slots__ = ('token', 'expires_at', 'refresh_at')
if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_slots, __pyx_mstate_global->__pyx_tuple[64]) < (0)) __PYX_ERR(4, 172, __pyx_L1_error) /* … */ { PyObject* __pyx_temp[3] = {__pyx_mstate_global->__pyx_n_u_token, __pyx_mstate_global->__pyx_n_u_expires_at, __pyx_mstate_global->__pyx_n_u_refresh_at}; __pyx_mstate_global->__pyx_tuple[64] = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_mstate_global->__pyx_tuple[64])) __PYX_ERR(4, 172, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[64]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[64]);
0173:
+0174: def __init__(self, token, expires_at, refresh_at=None):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_13ExpiringToken_1__init__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_13ExpiringToken_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_13ExpiringToken_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_13ExpiringToken_1__init__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_token = 0;
PyObject *__pyx_v_expires_at = 0;
PyObject *__pyx_v_refresh_at = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_token,&__pyx_mstate_global->__pyx_n_u_expires_at,&__pyx_mstate_global->__pyx_n_u_refresh_at,0};
PyObject* values[4] = {0,0,0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 174, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 4:
values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 174, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 3:
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 174, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 2:
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 174, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 174, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(4, 174, __pyx_L3_error)
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, i); __PYX_ERR(4, 174, __pyx_L3_error) }
}
} else {
switch (__pyx_nargs) {
case 4:
values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 174, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 3:
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 174, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 174, __pyx_L3_error)
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 174, __pyx_L3_error)
break;
default: goto __pyx_L5_argtuple_error;
}
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
}
__pyx_v_self = values[0];
__pyx_v_token = values[1];
__pyx_v_expires_at = values[2];
__pyx_v_refresh_at = values[3];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, __pyx_nargs); __PYX_ERR(4, 174, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.ExpiringToken.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_13ExpiringToken___init__(__pyx_self, __pyx_v_self, __pyx_v_token, __pyx_v_expires_at, __pyx_v_refresh_at);
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_13ExpiringToken___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_token, PyObject *__pyx_v_expires_at, PyObject *__pyx_v_refresh_at) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client.ExpiringToken.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_16 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_13ExpiringToken_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ExpiringToken___init, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[125])); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_16);
#endif
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_16, __pyx_mstate_global->__pyx_tuple[63]);
if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_16) < (0)) __PYX_ERR(4, 174, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+0175: if not isinstance(token, str):
__pyx_t_1 = PyUnicode_Check(__pyx_v_token);
__pyx_t_2 = (!__pyx_t_1);
if (unlikely(__pyx_t_2)) {
/* … */
}
+0176: raise _ConfigTypeError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ConfigTypeError); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+0177: f'"token" must be a str, not {_fqn(type(token))}')
__pyx_t_6 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_token)))); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyUnicode_Unicode(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_token_must_be_a_str_not, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); assert(__pyx_t_4); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); __pyx_t_8 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(4, 176, __pyx_L1_error)
+0178: self.token = token
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_token, __pyx_v_token) < (0)) __PYX_ERR(4, 178, __pyx_L1_error)
+0179: self.expires_at = _tp_utc_datetime(
__pyx_t_3 = __pyx_f_7questdb_7_client__tp_utc_datetime(__pyx_v_expires_at, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_expires_at, __pyx_t_3) < (0)) __PYX_ERR(4, 179, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0180: expires_at, _tp_epoch_seconds(expires_at, 'expires_at'))
__pyx_t_9 = __pyx_f_7questdb_7_client__tp_epoch_seconds(__pyx_v_expires_at, __pyx_mstate_global->__pyx_n_u_expires_at); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_9, ((double)(-1.0))) && PyErr_Occurred())) __PYX_ERR(4, 180, __pyx_L1_error)
+0181: self.refresh_at = (
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_refresh_at, __pyx_t_3) < (0)) __PYX_ERR(4, 181, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0182: None if refresh_at is None
__pyx_t_2 = (__pyx_v_refresh_at == Py_None);
if (__pyx_t_2) {
__Pyx_INCREF(Py_None);
__pyx_t_3 = Py_None;
} else {
+0183: else _tp_utc_datetime(
__pyx_t_5 = __pyx_f_7questdb_7_client__tp_utc_datetime(__pyx_v_refresh_at, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __pyx_t_5; __pyx_t_5 = 0; }
+0184: refresh_at, _tp_epoch_seconds(refresh_at, 'refresh_at')))
__pyx_t_9 = __pyx_f_7questdb_7_client__tp_epoch_seconds(__pyx_v_refresh_at, __pyx_mstate_global->__pyx_n_u_refresh_at); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_9, ((double)(-1.0))) && PyErr_Occurred())) __PYX_ERR(4, 184, __pyx_L1_error)
0185:
+0186: @classmethod
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_13ExpiringToken_3expires_in(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_13ExpiringToken_2expires_in, "A token that expires ``lifetime`` (seconds or a\n :class:`datetime.timedelta`) from now.\n\n ``refresh_at`` is an instant, as for the constructor -- a\n timezone-aware datetime or epoch seconds -- not a delay like\n ``lifetime``: for a refresh hint given relative to now, such as a\n ``refresh_in``, pass ``time.time() + refresh_in``. A small number is\n read as an instant in 1970, which makes the provider refresh every\n ``min_refresh_interval``.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_13ExpiringToken_3expires_in = {"expires_in", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_13ExpiringToken_3expires_in, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_13ExpiringToken_2expires_in}; static PyObject *__pyx_pw_7questdb_7_client_13ExpiringToken_3expires_in(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_cls = 0; PyObject *__pyx_v_token = 0; PyObject *__pyx_v_lifetime = 0; PyObject *__pyx_v_refresh_at = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("expires_in (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_cls,&__pyx_mstate_global->__pyx_n_u_token,&__pyx_mstate_global->__pyx_n_u_lifetime,&__pyx_mstate_global->__pyx_n_u_refresh_at,0}; PyObject* values[4] = {0,0,0,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 186, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 4: values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 186, __pyx_L3_error) CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 186, __pyx_L3_error) CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 186, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 186, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "expires_in", 0) < (0)) __PYX_ERR(4, 186, __pyx_L3_error) /* … */ /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_13ExpiringToken_2expires_in(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_token, PyObject *__pyx_v_lifetime, PyObject *__pyx_v_refresh_at) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("questdb._client.ExpiringToken.expires_in", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_16 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_13ExpiringToken_3expires_in, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_mstate_global->__pyx_n_u_ExpiringToken_expires_in, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[126])); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_16); #endif __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_16, __pyx_mstate_global->__pyx_tuple[63]); __pyx_t_17 = __Pyx_Method_ClassMethod(__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_expires_in, __pyx_t_17) < (0)) __PYX_ERR(4, 186, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+0187: def expires_in(cls, token, lifetime, refresh_at=None):
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("expires_in", 0, 3, 4, i); __PYX_ERR(4, 186, __pyx_L3_error) } } } else { switch (__pyx_nargs) { case 4: values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 186, __pyx_L3_error) CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 186, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 186, __pyx_L3_error) values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 186, __pyx_L3_error) break; default: goto __pyx_L5_argtuple_error; } if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_cls = values[0]; __pyx_v_token = values[1]; __pyx_v_lifetime = values[2]; __pyx_v_refresh_at = values[3]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("expires_in", 0, 3, 4, __pyx_nargs); __PYX_ERR(4, 186, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.ExpiringToken.expires_in", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_13ExpiringToken_2expires_in(__pyx_self, __pyx_v_cls, __pyx_v_token, __pyx_v_lifetime, __pyx_v_refresh_at);
0188: """A token that expires ``lifetime`` (seconds or a
0189: :class:`datetime.timedelta`) from now.
0190:
0191: ``refresh_at`` is an instant, as for the constructor -- a
0192: timezone-aware datetime or epoch seconds -- not a delay like
0193: ``lifetime``: for a refresh hint given relative to now, such as a
0194: ``refresh_in``, pass ``time.time() + refresh_in``. A small number is
0195: read as an instant in 1970, which makes the provider refresh every
0196: ``min_refresh_interval``.
0197: """
+0198: return cls(
__pyx_t_2 = NULL;
__Pyx_INCREF(__pyx_v_cls);
__pyx_t_3 = __pyx_v_cls;
0199: token,
+0200: time.time() + _tp_seconds(lifetime, 'lifetime'),
__pyx_t_5 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); assert(__pyx_t_5); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); __pyx_t_8 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_9 = __pyx_f_7questdb_7_client__tp_seconds(__pyx_v_lifetime, __pyx_mstate_global->__pyx_n_u_lifetime); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_9, ((double)(-1.0))) && PyErr_Occurred())) __PYX_ERR(4, 200, __pyx_L1_error) __pyx_t_7 = PyFloat_FromDouble(__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyNumber_Add_object_float(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0201: refresh_at)
__pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); __pyx_t_8 = 0; } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_token, __pyx_t_5, __pyx_v_refresh_at}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_8, (4-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
0202:
+0203: def __repr__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_13ExpiringToken_5__repr__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_13ExpiringToken_5__repr__ = {"__repr__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_13ExpiringToken_5__repr__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_13ExpiringToken_5__repr__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 203, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 203, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__repr__", 0) < (0)) __PYX_ERR(4, 203, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__repr__", 1, 1, 1, i); __PYX_ERR(4, 203, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 203, __pyx_L3_error)
}
__pyx_v_self = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__repr__", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 203, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.ExpiringToken.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_13ExpiringToken_4__repr__(__pyx_self, __pyx_v_self);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_13ExpiringToken_4__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client.ExpiringToken.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_13ExpiringToken_5__repr__, 0, __pyx_mstate_global->__pyx_n_u_ExpiringToken___repr, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[127])); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 203, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17);
#endif
if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_repr, __pyx_t_17) < (0)) __PYX_ERR(4, 203, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
0204: return (
+0205: f'ExpiringToken(<redacted, {len(self.token)} chars>, '
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_token); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(4, 205, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_2, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_2 = 46; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5[3]); #endif __pyx_t_6 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_6 |= __Pyx_PyUnicode_KIND_04(__pyx_t_5[3]); #endif __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_5, 5, __pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_4; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_4 = 0; goto __pyx_L0;
+0206: f'expires_at={_tp_format_instant(self.expires_at)})')
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_expires_at); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __pyx_f_7questdb_7_client__tp_format_instant(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5[0] = __pyx_mstate_global->__pyx_kp_u_ExpiringToken_redacted; __pyx_t_5[1] = __pyx_t_1; __pyx_t_5[2] = __pyx_mstate_global->__pyx_kp_u_chars_expires_at; __pyx_t_5[3] = __pyx_t_3; __pyx_t_5[4] = __pyx_mstate_global->__pyx_kp_u__11;
0207:
0208:
+0209: class TokenUnavailableError(QuestDBError):
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); { PyObject* __pyx_temp[1] = {__pyx_t_5}; __pyx_t_17 = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_t_17; __Pyx_INCREF(__pyx_t_5); __pyx_t_16 = __Pyx_PEP560_update_bases(__pyx_t_5); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_CalculateMetaclass(NULL, __pyx_t_16); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_20 = __Pyx_Py3MetaclassPrepare(__pyx_t_5, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_TokenUnavailableError, __pyx_mstate_global->__pyx_n_u_TokenUnavailableError, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_A_token_source_or_provider_coul); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); if (__pyx_t_16 != __pyx_t_17) { if (unlikely((PyDict_SetItemString(__pyx_t_20, "__orig_bases__", __pyx_t_17) < 0))) __PYX_ERR(4, 209, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = PyList_New(0); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); /* … */ __pyx_t_25 = __Pyx_Py3ClassCreate(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_TokenUnavailableError, __pyx_t_16, __pyx_t_20, NULL, 0, 0); if (unlikely(!__pyx_t_25)) __PYX_ERR(4, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_25); #endif if (__Pyx_CyFunction_InitClassCell(__pyx_t_17, __pyx_t_25) < (0)) __PYX_ERR(4, 209, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TokenUnavailableError, __pyx_t_25) < (0)) __PYX_ERR(4, 209, __pyx_L1_error) __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
0210: """
0211: A token source or provider could not supply a token.
0212:
0213: Raise it from a source or provider to classify the failure: ``retryable``
0214: says whether retrying can succeed -- network failures, timeouts, HTTP 429
0215: and 5xx are retryable; missing or wrong configuration is not -- and
0216: ``retry_after`` (seconds or a :class:`datetime.timedelta`) is the
0217: platform's suggested wait. Any other exception from a source or provider
0218: counts as retryable.
0219:
0220: A connection the caller waits for retries only a retryable failure, and
0221: only with initial-connect retry on: a sender's synchronous initial
0222: connect (``initial_connect_retry=sync``), or an eager
0223: :func:`questdb.connect` with ``initial_connect_retry=on``. Without it, the
0224: connection makes one attempt. Background reconnects retry either kind,
0225: whatever its ``code``. To stop them on a failure that retrying can never
0226: clear, an application provider raises a plain
0227: :class:`~questdb.QuestDBError` with ``code``
0228: ``QuestDBErrorCode.InvalidApiCall`` instead; a
0229: :class:`RefreshingTokenProvider` is stopped by closing it.
0230:
0231: The client raises it too, when a provider failed to supply a token; then
0232: ``code`` is the failing operation's error code. On one a source or
0233: provider raises, ``code`` only labels the error: clients classify it by
0234: ``retryable``. Never put a token in the message.
0235: """
+0236: def __init__(
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_21TokenUnavailableError_1__init__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_21TokenUnavailableError_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_21TokenUnavailableError_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_21TokenUnavailableError_1__init__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_message = 0;
PyObject *__pyx_v_retryable = 0;
PyObject *__pyx_v_retry_after = 0;
PyObject *__pyx_v_code = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_message,&__pyx_mstate_global->__pyx_n_u_retryable,&__pyx_mstate_global->__pyx_n_u_retry_after,&__pyx_mstate_global->__pyx_n_u_code,0};
PyObject* values[5] = {0,0,0,0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 236, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 2:
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 236, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 236, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(4, 236, __pyx_L3_error)
/* … */
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_21TokenUnavailableError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_message, PyObject *__pyx_v_retryable, PyObject *__pyx_v_retry_after, PyObject *__pyx_v_code) {
PyObject *__pyx_r = NULL;
__Pyx_INCREF(__pyx_v_code);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("questdb._client.TokenUnavailableError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_code);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_18 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 236, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_18);
if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_retryable, ((PyObject*)Py_True)) < (0)) __PYX_ERR(4, 236, __pyx_L1_error)
/* … */
__pyx_t_25 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_21TokenUnavailableError_1__init__, 0, __pyx_mstate_global->__pyx_n_u_TokenUnavailableError___init, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[128])); if (unlikely(!__pyx_t_25)) __PYX_ERR(4, 236, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_25);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_25);
#endif
PyList_Append(__pyx_t_17, __pyx_t_25);
__Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_25, __pyx_t_18);
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
if (__Pyx_SetNameInClass(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_25) < (0)) __PYX_ERR(4, 236, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
+0237: self, message, *, retryable=True, retry_after=None, code=None):
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)((PyObject*)Py_True))); if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(4, 236, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 236, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 236, __pyx_L3_error) if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)((PyObject*)Py_True))); if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_self = values[0]; __pyx_v_message = values[1]; __pyx_v_retryable = values[2]; __pyx_v_retry_after = values[3]; __pyx_v_code = values[4]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(4, 236, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.TokenUnavailableError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_21TokenUnavailableError___init__(__pyx_self, __pyx_v_self, __pyx_v_message, __pyx_v_retryable, __pyx_v_retry_after, __pyx_v_code); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_retry_after, Py_None) < (0)) __PYX_ERR(4, 236, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_code, Py_None) < (0)) __PYX_ERR(4, 236, __pyx_L1_error)
+0238: if code is None:
__pyx_t_1 = (__pyx_v_code == Py_None);
if (__pyx_t_1) {
/* … */
}
+0239: code = (QuestDBErrorCode.SocketError if retryable
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_retryable); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(4, 239, __pyx_L1_error) if (__pyx_t_1) { __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SocketError); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_4; __pyx_t_4 = 0; } else {
+0240: else QuestDBErrorCode.AuthError)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_AuthError); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __pyx_t_3; __pyx_t_3 = 0; } __Pyx_DECREF_SET(__pyx_v_code, __pyx_t_2); __pyx_t_2 = 0;
+0241: super().__init__(code, message)
__pyx_t_5 = NULL; __pyx_t_6 = __Pyx_CyFunction_GetClassObj(__pyx_self); if (!__pyx_t_6) { PyErr_SetString(PyExc_RuntimeError, "super(): empty __class__ cell"); __PYX_ERR(4, 241, __pyx_L1_error) } __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = 1; { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_6, __pyx_v_self}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_code, __pyx_v_message}; __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0242: self._retryable = bool(retryable)
__pyx_t_4 = NULL;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_retryable};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 242, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_2);
}
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_retryable_2, ((PyObject *)__pyx_t_2)) < (0)) __PYX_ERR(4, 242, __pyx_L1_error)
__Pyx_DECREF((PyObject *)__pyx_t_2); __pyx_t_2 = 0;
+0243: self._retry_after = (
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_retry_after_2, __pyx_t_2) < (0)) __PYX_ERR(4, 243, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0244: None if retry_after is None
__pyx_t_1 = (__pyx_v_retry_after == Py_None);
if (__pyx_t_1) {
__Pyx_INCREF(Py_None);
__pyx_t_2 = Py_None;
} else {
+0245: else _tp_seconds(retry_after, 'retry_after'))
__pyx_t_8 = __pyx_f_7questdb_7_client__tp_seconds(__pyx_v_retry_after, __pyx_mstate_global->__pyx_n_u_retry_after); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_8, ((double)(-1.0))) && PyErr_Occurred())) __PYX_ERR(4, 245, __pyx_L1_error) __pyx_t_4 = PyFloat_FromDouble(__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __pyx_t_4; __pyx_t_4 = 0; }
0246:
+0247: @property
/* Python wrapper */ static PyLongObject *__pyx_pw_7questdb_7_client_21TokenUnavailableError_3retryable(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_21TokenUnavailableError_2retryable, "Whether retrying can succeed."); static PyMethodDef __pyx_mdef_7questdb_7_client_21TokenUnavailableError_3retryable = {"retryable", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_21TokenUnavailableError_3retryable, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_21TokenUnavailableError_2retryable}; static PyLongObject *__pyx_pw_7questdb_7_client_21TokenUnavailableError_3retryable(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyLongObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("retryable (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 247, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 247, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "retryable", 0) < (0)) __PYX_ERR(4, 247, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("retryable", 1, 1, 1, i); __PYX_ERR(4, 247, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 247, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("retryable", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 247, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.TokenUnavailableError.retryable", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_21TokenUnavailableError_2retryable(__pyx_self, __pyx_v_self); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyLongObject *__pyx_pf_7questdb_7_client_21TokenUnavailableError_2retryable(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { PyLongObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("questdb._client.TokenUnavailableError.retryable", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = NULL; __pyx_t_21 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_21)) __PYX_ERR(4, 247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_21); if (PyDict_SetItem(__pyx_t_21, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(4, 247, __pyx_L1_error) __pyx_t_19 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_21TokenUnavailableError_3retryable, 0, __pyx_mstate_global->__pyx_n_u_TokenUnavailableError_retryable, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[129])); if (unlikely(!__pyx_t_19)) __PYX_ERR(4, 247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_19); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_19, __pyx_t_21); __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_18, __pyx_t_19}; __pyx_t_25 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_property, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (unlikely(!__pyx_t_25)) __PYX_ERR(4, 247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); } if (__Pyx_SetNameInClass(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_retryable, __pyx_t_25) < (0)) __PYX_ERR(4, 247, __pyx_L1_error) __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
0248: def retryable(self) -> bool:
0249: """Whether retrying can succeed."""
+0250: return self._retryable
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_retryable_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool))))) __PYX_ERR(4, 250, __pyx_L1_error) { PyLongObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyLongObject *)__pyx_t_1); } __Pyx_XDECREF((PyObject *)__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
0251:
+0252: @property
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_21TokenUnavailableError_5retry_after(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_21TokenUnavailableError_4retry_after, "The suggested wait before retrying, in seconds, or ``None``."); static PyMethodDef __pyx_mdef_7questdb_7_client_21TokenUnavailableError_5retry_after = {"retry_after", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_21TokenUnavailableError_5retry_after, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_21TokenUnavailableError_4retry_after}; static PyObject *__pyx_pw_7questdb_7_client_21TokenUnavailableError_5retry_after(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("retry_after (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 252, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 252, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "retry_after", 0) < (0)) __PYX_ERR(4, 252, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("retry_after", 1, 1, 1, i); __PYX_ERR(4, 252, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 252, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("retry_after", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 252, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.TokenUnavailableError.retry_after", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_21TokenUnavailableError_4retry_after(__pyx_self, __pyx_v_self); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_21TokenUnavailableError_4retry_after(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("questdb._client.TokenUnavailableError.retry_after", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_19 = NULL; __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_21TokenUnavailableError_5retry_after, 0, __pyx_mstate_global->__pyx_n_u_TokenUnavailableError_retry_afte, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[130])); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18); #endif __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_19, __pyx_t_18}; __pyx_t_25 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_property, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (unlikely(!__pyx_t_25)) __PYX_ERR(4, 252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); } if (__Pyx_SetNameInClass(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_retry_after, __pyx_t_25) < (0)) __PYX_ERR(4, 252, __pyx_L1_error) __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
0253: def retry_after(self):
0254: """The suggested wait before retrying, in seconds, or ``None``."""
+0255: return self._retry_after
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_retry_after_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
0256:
0257:
+0258: class FetchFailure:
__pyx_t_16 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_FetchFailure, __pyx_mstate_global->__pyx_n_u_FetchFailure, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_A_failed_fetch_of_a_class_Refres); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); /* … */ __pyx_t_5 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_FetchFailure, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_16, NULL, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_FetchFailure, __pyx_t_5) < (0)) __PYX_ERR(4, 258, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
0259: """A failed fetch of a :class:`RefreshingTokenProvider`. Never carries the
0260: token."""
+0261: __slots__ = ('retryable', 'retry_after', 'message', 'at')
if (__Pyx_SetNameInClass(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_slots, __pyx_mstate_global->__pyx_tuple[65]) < (0)) __PYX_ERR(4, 261, __pyx_L1_error) /* … */ { PyObject* __pyx_temp[4] = {__pyx_mstate_global->__pyx_n_u_retryable, __pyx_mstate_global->__pyx_n_u_retry_after, __pyx_mstate_global->__pyx_n_u_message, __pyx_mstate_global->__pyx_n_u_at}; __pyx_mstate_global->__pyx_tuple[65] = __Pyx_PyTuple_FromArray(__pyx_temp, 4); if (unlikely(!__pyx_mstate_global->__pyx_tuple[65])) __PYX_ERR(4, 261, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[65]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[65]);
0262:
+0263: def __init__(self, retryable, retry_after, message, at):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_12FetchFailure_1__init__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_12FetchFailure_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12FetchFailure_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_12FetchFailure_1__init__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_retryable = 0;
PyObject *__pyx_v_retry_after = 0;
PyObject *__pyx_v_message = 0;
PyObject *__pyx_v_at = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_retryable,&__pyx_mstate_global->__pyx_n_u_retry_after,&__pyx_mstate_global->__pyx_n_u_message,&__pyx_mstate_global->__pyx_n_u_at,0};
PyObject* values[5] = {0,0,0,0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 263, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 5:
values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(4, 263, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 4:
values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 263, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 3:
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 263, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 2:
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 263, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 263, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(4, 263, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, i); __PYX_ERR(4, 263, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 5)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 263, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 263, __pyx_L3_error)
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 263, __pyx_L3_error)
values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 263, __pyx_L3_error)
values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(4, 263, __pyx_L3_error)
}
__pyx_v_self = values[0];
__pyx_v_retryable = values[1];
__pyx_v_retry_after = values[2];
__pyx_v_message = values[3];
__pyx_v_at = values[4];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, __pyx_nargs); __PYX_ERR(4, 263, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.FetchFailure.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_12FetchFailure___init__(__pyx_self, __pyx_v_self, __pyx_v_retryable, __pyx_v_retry_after, __pyx_v_message, __pyx_v_at);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_12FetchFailure___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_retryable, PyObject *__pyx_v_retry_after, PyObject *__pyx_v_message, PyObject *__pyx_v_at) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client.FetchFailure.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12FetchFailure_1__init__, 0, __pyx_mstate_global->__pyx_n_u_FetchFailure___init, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[131])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 263, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
#endif
if (__Pyx_SetNameInClass(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_5) < (0)) __PYX_ERR(4, 263, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
0264: #: Whether the source classified the failure as retryable.
+0265: self.retryable = retryable
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_retryable, __pyx_v_retryable) < (0)) __PYX_ERR(4, 265, __pyx_L1_error)
0266: #: The source's suggested wait in seconds, or ``None``.
+0267: self.retry_after = retry_after
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_retry_after, __pyx_v_retry_after) < (0)) __PYX_ERR(4, 267, __pyx_L1_error)
0268: #: The sanitized message, at most 256 characters.
+0269: self.message = message
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_message, __pyx_v_message) < (0)) __PYX_ERR(4, 269, __pyx_L1_error)
0270: #: When the fetch failed, a timezone-aware ``datetime``.
+0271: self.at = at
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_at, __pyx_v_at) < (0)) __PYX_ERR(4, 271, __pyx_L1_error)
0272:
+0273: def __repr__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_12FetchFailure_3__repr__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_12FetchFailure_3__repr__ = {"__repr__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12FetchFailure_3__repr__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_12FetchFailure_3__repr__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 273, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 273, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__repr__", 0) < (0)) __PYX_ERR(4, 273, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__repr__", 1, 1, 1, i); __PYX_ERR(4, 273, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 273, __pyx_L3_error)
}
__pyx_v_self = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__repr__", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 273, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.FetchFailure.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_12FetchFailure_2__repr__(__pyx_self, __pyx_v_self);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_12FetchFailure_2__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("questdb._client.FetchFailure.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12FetchFailure_3__repr__, 0, __pyx_mstate_global->__pyx_n_u_FetchFailure___repr, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[132])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 273, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
#endif
if (__Pyx_SetNameInClass(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_repr, __pyx_t_5) < (0)) __PYX_ERR(4, 273, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
0274: return (
+0275: f'FetchFailure(retryable={self.retryable!r}, '
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_retryable); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 275, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 275, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_t_7 = 53; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH for (Py_ssize_t i=1; i <= 7; i += 2) { Py_ssize_t l = __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6[i]); __pyx_t_7 += l; } #endif __pyx_t_8 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH for (Py_ssize_t i=1; i <= 7; i += 2) { int l = __Pyx_PyUnicode_KIND_04(__pyx_t_6[i]); __pyx_t_8 |= l; } #endif __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_6, 9, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 275, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
+0276: f'retry_after={self.retry_after!r}, at={self.at!r}, '
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_retry_after); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_at); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0277: f'message={self.message!r})')
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 277, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 277, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_FetchFailure_retryable; __pyx_t_6[1] = __pyx_t_2; __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u_retry_after_3; __pyx_t_6[3] = __pyx_t_3; __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u_at_2; __pyx_t_6[5] = __pyx_t_4; __pyx_t_6[6] = __pyx_mstate_global->__pyx_kp_u_message_2; __pyx_t_6[7] = __pyx_t_5; __pyx_t_6[8] = __pyx_mstate_global->__pyx_kp_u__11;
0278:
0279:
+0280: class TokenProviderStatus:
__pyx_t_16 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_TokenProviderStatus, __pyx_mstate_global->__pyx_n_u_TokenProviderStatus, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_A_snapshot_of_a_class_Refreshing); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); /* … */ __pyx_t_5 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_TokenProviderStatus, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_16, NULL, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TokenProviderStatus, __pyx_t_5) < (0)) __PYX_ERR(4, 280, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
0281: """A snapshot of a :class:`RefreshingTokenProvider`. Never contains the
0282: token."""
0283: __slots__ = (
+0284: 'closed', 'token_expires_at', 'last_success_at',
if (__Pyx_SetNameInClass(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_slots, __pyx_mstate_global->__pyx_tuple[66]) < (0)) __PYX_ERR(4, 283, __pyx_L1_error) /* … */ { PyObject* __pyx_temp[5] = {__pyx_mstate_global->__pyx_n_u_closed, __pyx_mstate_global->__pyx_n_u_token_expires_at, __pyx_mstate_global->__pyx_n_u_last_success_at, __pyx_mstate_global->__pyx_n_u_consecutive_failures, __pyx_mstate_global->__pyx_n_u_last_failure}; __pyx_mstate_global->__pyx_tuple[66] = __Pyx_PyTuple_FromArray(__pyx_temp, 5); if (unlikely(!__pyx_mstate_global->__pyx_tuple[66])) __PYX_ERR(4, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[66]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[66]);
0285: 'consecutive_failures', 'last_failure')
0286:
+0287: def __init__(
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_19TokenProviderStatus_1__init__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_19TokenProviderStatus_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_19TokenProviderStatus_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_19TokenProviderStatus_1__init__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_closed = 0;
PyObject *__pyx_v_token_expires_at = 0;
PyObject *__pyx_v_last_success_at = 0;
PyObject *__pyx_v_consecutive_failures = 0;
PyObject *__pyx_v_last_failure = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_closed,&__pyx_mstate_global->__pyx_n_u_token_expires_at,&__pyx_mstate_global->__pyx_n_u_last_success_at,&__pyx_mstate_global->__pyx_n_u_consecutive_failures,&__pyx_mstate_global->__pyx_n_u_last_failure,0};
PyObject* values[6] = {0,0,0,0,0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 287, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 6:
values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(4, 287, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 5:
values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(4, 287, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 4:
values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 287, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 3:
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 287, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 2:
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 287, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 287, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(4, 287, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 6; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, i); __PYX_ERR(4, 287, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 6)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 287, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 287, __pyx_L3_error)
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 287, __pyx_L3_error)
values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(4, 287, __pyx_L3_error)
values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(4, 287, __pyx_L3_error)
values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(4, 287, __pyx_L3_error)
}
__pyx_v_self = values[0];
__pyx_v_closed = values[1];
__pyx_v_token_expires_at = values[2];
__pyx_v_last_success_at = values[3];
__pyx_v_consecutive_failures = values[4];
__pyx_v_last_failure = values[5];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, __pyx_nargs); __PYX_ERR(4, 287, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.TokenProviderStatus.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_19TokenProviderStatus___init__(__pyx_self, __pyx_v_self, __pyx_v_closed, __pyx_v_token_expires_at, __pyx_v_last_success_at, __pyx_v_consecutive_failures, __pyx_v_last_failure);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_19TokenProviderStatus___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_closed, PyObject *__pyx_v_token_expires_at, PyObject *__pyx_v_last_success_at, PyObject *__pyx_v_consecutive_failures, PyObject *__pyx_v_last_failure) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client.TokenProviderStatus.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_19TokenProviderStatus_1__init__, 0, __pyx_mstate_global->__pyx_n_u_TokenProviderStatus___init, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[133])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 287, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
#endif
if (__Pyx_SetNameInClass(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_5) < (0)) __PYX_ERR(4, 287, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
0288: self, closed, token_expires_at, last_success_at,
0289: consecutive_failures, last_failure):
0290: #: Whether the provider is closed.
+0291: self.closed = closed
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_closed, __pyx_v_closed) < (0)) __PYX_ERR(4, 291, __pyx_L1_error)
0292: #: When the held token expires, or ``None``.
+0293: self.token_expires_at = token_expires_at
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_token_expires_at, __pyx_v_token_expires_at) < (0)) __PYX_ERR(4, 293, __pyx_L1_error)
0294: #: When the last successful fetch completed, or ``None``.
+0295: self.last_success_at = last_success_at
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_last_success_at, __pyx_v_last_success_at) < (0)) __PYX_ERR(4, 295, __pyx_L1_error)
0296: #: Failed fetches since the last successful one.
+0297: self.consecutive_failures = consecutive_failures
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_consecutive_failures, __pyx_v_consecutive_failures) < (0)) __PYX_ERR(4, 297, __pyx_L1_error)
0298: #: The most recent :class:`FetchFailure`, kept after recovery.
+0299: self.last_failure = last_failure
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_last_failure, __pyx_v_last_failure) < (0)) __PYX_ERR(4, 299, __pyx_L1_error)
0300:
+0301: def __repr__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_19TokenProviderStatus_3__repr__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_19TokenProviderStatus_3__repr__ = {"__repr__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_19TokenProviderStatus_3__repr__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_19TokenProviderStatus_3__repr__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 301, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 301, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__repr__", 0) < (0)) __PYX_ERR(4, 301, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__repr__", 1, 1, 1, i); __PYX_ERR(4, 301, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 301, __pyx_L3_error)
}
__pyx_v_self = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__repr__", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 301, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.TokenProviderStatus.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_19TokenProviderStatus_2__repr__(__pyx_self, __pyx_v_self);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_19TokenProviderStatus_2__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("questdb._client.TokenProviderStatus.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_19TokenProviderStatus_3__repr__, 0, __pyx_mstate_global->__pyx_n_u_TokenProviderStatus___repr, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[134])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 301, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
#endif
if (__Pyx_SetNameInClass(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_repr, __pyx_t_5) < (0)) __PYX_ERR(4, 301, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
0302: return (
+0303: f'TokenProviderStatus(closed={self.closed!r}, '
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_closed); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_t_8 = 103; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH for (Py_ssize_t i=1; i <= 9; i += 2) { Py_ssize_t l = __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7[i]); __pyx_t_8 += l; } #endif __pyx_t_9 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH for (Py_ssize_t i=1; i <= 9; i += 2) { int l = __Pyx_PyUnicode_KIND_04(__pyx_t_7[i]); __pyx_t_9 |= l; } #endif __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_7, 11, __pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
+0304: f'token_expires_at={self.token_expires_at!r}, '
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_token_expires_at); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0305: f'last_success_at={self.last_success_at!r}, '
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_last_success_at); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0306: f'consecutive_failures={self.consecutive_failures!r}, '
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_consecutive_failures); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0307: f'last_failure={self.last_failure!r})')
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_last_failure); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7[0] = __pyx_mstate_global->__pyx_kp_u_TokenProviderStatus_closed; __pyx_t_7[1] = __pyx_t_2; __pyx_t_7[2] = __pyx_mstate_global->__pyx_kp_u_token_expires_at_2; __pyx_t_7[3] = __pyx_t_3; __pyx_t_7[4] = __pyx_mstate_global->__pyx_kp_u_last_success_at_2; __pyx_t_7[5] = __pyx_t_4; __pyx_t_7[6] = __pyx_mstate_global->__pyx_kp_u_consecutive_failures_2; __pyx_t_7[7] = __pyx_t_5; __pyx_t_7[8] = __pyx_mstate_global->__pyx_kp_u_last_failure_2; __pyx_t_7[9] = __pyx_t_6; __pyx_t_7[10] = __pyx_mstate_global->__pyx_kp_u__11;
0308:
0309:
+0310: cdef double _tp_seconds(object value, str name) except? -1.0:
static double __pyx_f_7questdb_7_client__tp_seconds(PyObject *__pyx_v_value, PyObject *__pyx_v_name) {
double __pyx_v_seconds;
double __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_XDECREF(__pyx_t_19);
__Pyx_AddTraceback("questdb._client._tp_seconds", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = (-1.0);
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0311: cdef double seconds
+0312: if isinstance(value, datetime.timedelta):
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 312, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 312, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = PyObject_IsInstance(__pyx_v_value, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(4, 312, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { /* … */ goto __pyx_L3; }
+0313: seconds = value.total_seconds()
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_total_seconds, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 313, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_5 = __Pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(4, 313, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_seconds = __pyx_t_5;
+0314: elif isinstance(value, (int, float)) and not isinstance(value, bool):
__pyx_t_7 = PyLong_Check(__pyx_v_value); if (!__pyx_t_7) { } else { __pyx_t_6 = __pyx_t_7; goto __pyx_L6_bool_binop_done; } __pyx_t_7 = PyFloat_Check(__pyx_v_value); __pyx_t_6 = __pyx_t_7; __pyx_L6_bool_binop_done:; if (__pyx_t_6) { } else { __pyx_t_3 = __pyx_t_6; goto __pyx_L4_bool_binop_done; } __pyx_t_6 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool); __pyx_t_7 = (!__pyx_t_6); __pyx_t_3 = __pyx_t_7; __pyx_L4_bool_binop_done:; if (likely(__pyx_t_3)) { /* … */ goto __pyx_L3; }
+0315: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L13_try_end;
__pyx_L8_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
__pyx_L10_except_error:;
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
goto __pyx_L1_error;
__pyx_L13_try_end:;
}
+0316: seconds = value
__pyx_t_5 = __Pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(4, 316, __pyx_L8_error) __pyx_v_seconds = __pyx_t_5;
+0317: except OverflowError:
__pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_OverflowError)))); if (__pyx_t_11) { __Pyx_AddTraceback("questdb._client._tp_seconds", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_12) < 0) __PYX_ERR(4, 317, __pyx_L10_except_error) __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_12);
+0318: raise _ConfigValueError(
__pyx_t_14 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_15)) __PYX_ERR(4, 318, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_15);
+0319: f'"{name}" must be a finite, non-negative duration') from None
__pyx_t_16 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 319, __pyx_L10_except_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u__26; __pyx_t_17[1] = __pyx_t_16; __pyx_t_17[2] = __pyx_mstate_global->__pyx_kp_u_must_be_a_finite_non_negative_d; __pyx_t_18 = 42; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[1]); #endif __pyx_t_11 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_11 |= __Pyx_PyUnicode_KIND_04(__pyx_t_17[1]); #endif __pyx_t_19 = __Pyx_PyUnicode_Join(__pyx_t_17, 3, __pyx_t_18, __pyx_t_11); if (unlikely(!__pyx_t_19)) __PYX_ERR(4, 319, __pyx_L10_except_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_4 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_15))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_15); assert(__pyx_t_14); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_15, __pyx__function); __pyx_t_4 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_t_19}; __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 318, __pyx_L10_except_error) __Pyx_GOTREF(__pyx_t_13); } __Pyx_Raise(__pyx_t_13, 0, 0, Py_None); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __PYX_ERR(4, 318, __pyx_L10_except_error) } goto __pyx_L10_except_error;
0320: else:
+0321: raise _ConfigTypeError(
/*else*/ {
__pyx_t_1 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ConfigTypeError); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 321, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+0322: f'"{name}" must be a number of seconds or a timedelta, '
__pyx_t_13 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); /* … */ __pyx_t_18 = 51; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_20[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_20[3]); #endif __pyx_t_11 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_11 |= __Pyx_PyUnicode_KIND_04(__pyx_t_20[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_20[3]); #endif __pyx_t_15 = __Pyx_PyUnicode_Join(__pyx_t_20, 4, __pyx_t_18, __pyx_t_11); if (unlikely(!__pyx_t_15)) __PYX_ERR(4, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __pyx_t_4 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); assert(__pyx_t_1); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_2, __pyx__function); __pyx_t_4 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_15}; __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); } __Pyx_Raise(__pyx_t_12, 0, 0, 0); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __PYX_ERR(4, 321, __pyx_L1_error) } __pyx_L3:;
+0323: f'not {_fqn(type(value))}')
__pyx_t_15 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_value)))); if (unlikely(!__pyx_t_15)) __PYX_ERR(4, 323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_19 = __Pyx_PyUnicode_Unicode(__pyx_t_15); if (unlikely(!__pyx_t_19)) __PYX_ERR(4, 323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_20[0] = __pyx_mstate_global->__pyx_kp_u__26; __pyx_t_20[1] = __pyx_t_13; __pyx_t_20[2] = __pyx_mstate_global->__pyx_kp_u_must_be_a_number_of_seconds_or; __pyx_t_20[3] = __pyx_t_19;
+0324: if not (seconds >= 0.0) or seconds == float('inf'):
__pyx_t_7 = (!(__pyx_v_seconds >= 0.0));
if (!__pyx_t_7) {
} else {
__pyx_t_3 = __pyx_t_7;
goto __pyx_L17_bool_binop_done;
}
__pyx_t_5 = __Pyx_PyUnicode_AsDouble(__pyx_mstate_global->__pyx_n_u_inf); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_5, ((double)((double)-1))) && PyErr_Occurred())) __PYX_ERR(4, 324, __pyx_L1_error)
__pyx_t_7 = (__pyx_v_seconds == __pyx_t_5);
__pyx_t_3 = __pyx_t_7;
__pyx_L17_bool_binop_done:;
if (unlikely(__pyx_t_3)) {
/* … */
}
+0325: raise _ConfigValueError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_15)) __PYX_ERR(4, 325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
+0326: f'"{name}" must be a finite, non-negative duration')
__pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u__26; __pyx_t_17[1] = __pyx_t_1; __pyx_t_17[2] = __pyx_mstate_global->__pyx_kp_u_must_be_a_finite_non_negative_d; __pyx_t_18 = 42; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[1]); #endif __pyx_t_11 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_11 |= __Pyx_PyUnicode_KIND_04(__pyx_t_17[1]); #endif __pyx_t_19 = __Pyx_PyUnicode_Join(__pyx_t_17, 3, __pyx_t_18, __pyx_t_11); if (unlikely(!__pyx_t_19)) __PYX_ERR(4, 326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_4 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_15))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_15); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_15, __pyx__function); __pyx_t_4 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_19}; __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 325, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); } __Pyx_Raise(__pyx_t_12, 0, 0, 0); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __PYX_ERR(4, 325, __pyx_L1_error)
+0327: return seconds
{
__pyx_r = __pyx_v_seconds;
}
goto __pyx_L0;
0328:
0329:
0330: # The Unix epoch, the datetime range relative to it, and the latest instant
0331: # native represents (9999-12-31T23:59:59.999Z, its `MAX_EPOCH_MS`): native
0332: # treats a later expiry as that instant, and so does this module.
+0333: cdef object _TP_EPOCH = datetime.datetime(
__Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 333, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 333, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; /* … */ __pyx_t_20 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[3], __pyx_t_16); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 333, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_XGOTREF(__pyx_v_7questdb_7_client__TP_EPOCH); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__TP_EPOCH, __pyx_t_20); __Pyx_GIVEREF(__pyx_t_20); __pyx_t_20 = 0;
+0334: 1970, 1, 1, tzinfo=datetime.timezone.utc)
__pyx_t_16 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_GetModuleGlobalName(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_25)) __PYX_ERR(4, 334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; if (PyDict_SetItem(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_20) < (0)) __PYX_ERR(4, 334, __pyx_L1_error) __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
0335: cdef object _TP_MIN_DELTA = (
+0336: datetime.datetime.min.replace(tzinfo=datetime.timezone.utc) - _TP_EPOCH)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_25)) __PYX_ERR(4, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_mstate_global->__pyx_n_u_min); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __pyx_t_16 = __pyx_t_5; __Pyx_INCREF(__pyx_t_16); __Pyx_GetModuleGlobalName(__pyx_t_25, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_25)) __PYX_ERR(4, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_25)) __PYX_ERR(4, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; #if CYTHON_VECTORCALL #endif __pyx_t_6 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_16, __pyx_t_25}; #if CYTHON_VECTORCALL __pyx_t_17 = __pyx_mstate_global->__pyx_tuple[36]; if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 336, __pyx_L1_error) __Pyx_INCREF(__pyx_t_17); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_tzinfo}; __pyx_t_17 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+1, 1); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); } #endif __pyx_t_20 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_replace, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_17); __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; #if CYTHON_VECTORCALL #endif __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); } __pyx_t_5 = __Pyx_PyNumber_Subtract_object_object(__pyx_t_20, __pyx_v_7questdb_7_client__TP_EPOCH); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_XGOTREF(__pyx_v_7questdb_7_client__TP_MIN_DELTA); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__TP_MIN_DELTA, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0;
0337: cdef object _TP_MAX_DELTA = (
+0338: datetime.datetime.max.replace(tzinfo=datetime.timezone.utc) - _TP_EPOCH)
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_25)) __PYX_ERR(4, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_mstate_global->__pyx_n_u_max); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __pyx_t_20 = __pyx_t_17; __Pyx_INCREF(__pyx_t_20); __Pyx_GetModuleGlobalName(__pyx_t_25, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_25)) __PYX_ERR(4, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_25)) __PYX_ERR(4, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_25); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; #if CYTHON_VECTORCALL #endif __pyx_t_6 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_20, __pyx_t_25}; #if CYTHON_VECTORCALL __pyx_t_16 = __pyx_mstate_global->__pyx_tuple[36]; if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 338, __pyx_L1_error) __Pyx_INCREF(__pyx_t_16); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_tzinfo}; __pyx_t_16 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+1, 1); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); } #endif __pyx_t_5 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_replace, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_16); __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; #if CYTHON_VECTORCALL #endif __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } __pyx_t_17 = __Pyx_PyNumber_Subtract_object_object(__pyx_t_5, __pyx_v_7questdb_7_client__TP_EPOCH); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XGOTREF(__pyx_v_7questdb_7_client__TP_MAX_DELTA); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__TP_MAX_DELTA, __pyx_t_17); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = 0;
+0339: cdef int64_t _TP_MAX_EPOCH_MS = 253402300799999
__pyx_v_7questdb_7_client__TP_MAX_EPOCH_MS = 0xE677D21FDBFF;
0340:
0341:
+0342: cdef object _tp_instant(double seconds):
static PyObject *__pyx_f_7questdb_7_client__tp_instant(double __pyx_v_seconds) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("questdb._client._tp_instant", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0343: """Epoch ``seconds`` as a timezone-aware UTC datetime.
0344:
0345: `datetime.fromtimestamp` where the platform's C library can convert it --
0346: Windows' cannot after the year 3000 -- and exact datetime arithmetic
0347: otherwise. Raises OverflowError outside the datetime range.
0348: """
+0349: try:
{
/*try:*/ {
/* … */
}
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L7_try_return:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L0;
__pyx_L6_except_return:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L0;
}
+0350: return datetime.datetime.fromtimestamp(
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 350, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 350, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_5 = __pyx_t_7; __Pyx_INCREF(__pyx_t_5);
+0351: seconds, datetime.timezone.utc)
__pyx_t_6 = PyFloat_FromDouble(__pyx_v_seconds); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 351, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 351, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 351, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 351, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_10 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_6, __pyx_t_8}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_fromtimestamp, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 350, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_4; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_4 = 0; goto __pyx_L7_try_return;
+0352: except (OverflowError, OSError, ValueError):
__pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_OverflowError)))) || __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_OSError)))) || __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError)))); if (__pyx_t_11) { __Pyx_AddTraceback("questdb._client._tp_instant", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(4, 352, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8);
+0353: return _TP_EPOCH + datetime.timedelta(seconds=seconds)
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 353, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 353, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_9 = PyFloat_FromDouble(__pyx_v_seconds); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 353, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_9);
#if CYTHON_VECTORCALL
#endif
__pyx_t_10 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_12))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_12);
assert(__pyx_t_5);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_12);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_12, __pyx__function);
__pyx_t_10 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_9};
#if CYTHON_VECTORCALL
__pyx_t_13 = __pyx_mstate_global->__pyx_tuple[31];
if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 353, __pyx_L5_except_error)
__Pyx_INCREF(__pyx_t_13);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_seconds};
__pyx_t_13 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+1, 1);
if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 353, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_13);
}
#endif
__pyx_t_6 = __Pyx_Object_VectorcallKwds((PyObject*)__pyx_t_12, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_13);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
#if CYTHON_VECTORCALL
#endif
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 353, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_6);
}
__pyx_t_12 = __Pyx_PyNumber_Add_object_object(__pyx_v_7questdb_7_client__TP_EPOCH, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 353, __pyx_L5_except_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_12;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_12 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L6_except_return;
}
goto __pyx_L5_except_error;
/* … */
{
PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_seconds};
__pyx_mstate_global->__pyx_tuple[31] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[31])) __PYX_ERR(4, 353, __pyx_L1_error)
__Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[31]);
}
__Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[31]);
0354:
0355:
+0356: cdef double _tp_epoch_seconds(object value, str name) except? -1.0:
static double __pyx_f_7questdb_7_client__tp_epoch_seconds(PyObject *__pyx_v_value, PyObject *__pyx_v_name) {
double __pyx_v_seconds;
PyObject *__pyx_v_delta = NULL;
double __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_XDECREF(__pyx_t_19);
__Pyx_XDECREF(__pyx_t_20);
__Pyx_AddTraceback("questdb._client._tp_epoch_seconds", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = (-1.0);
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_delta);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0357: cdef double seconds
+0358: if isinstance(value, datetime.datetime):
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 358, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 358, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = PyObject_IsInstance(__pyx_v_value, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(4, 358, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { /* … */ }
+0359: if value.tzinfo is None:
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_tzinfo); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = (__pyx_t_2 == Py_None); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(__pyx_t_3)) { /* … */ }
+0360: raise _ConfigValueError(
__pyx_t_1 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 360, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+0361: f'"{name}" must be a timezone-aware datetime; a naive one '
__pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u__26; __pyx_t_6[1] = __pyx_t_5; __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u_must_be_a_timezone_aware_dateti; __pyx_t_7 = 62; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6[1]); #endif __pyx_t_8 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_8 |= __Pyx_PyUnicode_KIND_04(__pyx_t_6[1]); #endif __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_1); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_9}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(4, 360, __pyx_L1_error)
0362: 'is ambiguous')
0363: # A datetime is in range by construction, but with an offset its UTC
0364: # instant may not be. Subtracting aware datetimes cannot overflow.
+0365: delta = value - _TP_EPOCH
__pyx_t_2 = __Pyx_PyNumber_Subtract_object_object(__pyx_v_value, __pyx_v_7questdb_7_client__TP_EPOCH); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 365, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_delta = __pyx_t_2; __pyx_t_2 = 0;
+0366: if not (_TP_MIN_DELTA <= delta <= _TP_MAX_DELTA):
__pyx_t_3 = __Pyx_PyObject_CompareBoolLe_object_object(__pyx_v_7questdb_7_client__TP_MIN_DELTA, __pyx_v_delta, Py_LE); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 366, __pyx_L1_error) if (__pyx_t_3) { __pyx_t_3 = __Pyx_PyObject_CompareBoolLe_object_object(__pyx_v_delta, __pyx_v_7questdb_7_client__TP_MAX_DELTA, Py_LE); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 366, __pyx_L1_error) } __pyx_t_11 = (!__pyx_t_3); if (unlikely(__pyx_t_11)) { /* … */ }
+0367: raise _ConfigValueError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 367, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
+0368: f'"{name}" must be representable as a Python datetime')
__pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u__26; __pyx_t_6[1] = __pyx_t_1; __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u_must_be_representable_as_a_Pyth; __pyx_t_7 = 45; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6[1]); #endif __pyx_t_8 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_8 |= __Pyx_PyUnicode_KIND_04(__pyx_t_6[1]); #endif __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9); assert(__pyx_t_4); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_9, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 367, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(4, 367, __pyx_L1_error)
0369: # As a double the seconds round past the last microsecond near the
0370: # year 9999 -- `datetime.max` to the year 10000 -- so a round trip
0371: # through `fromtimestamp` rejected it. Clamp to the latest instant
0372: # native represents instead.
+0373: seconds = delta.total_seconds()
__pyx_t_9 = __pyx_v_delta;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_10 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_total_seconds, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 373, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_12 = __Pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(4, 373, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_seconds = __pyx_t_12;
+0374: if seconds * 1000.0 > _TP_MAX_EPOCH_MS:
__pyx_t_11 = ((__pyx_v_seconds * 1000.0) > __pyx_v_7questdb_7_client__TP_MAX_EPOCH_MS);
if (__pyx_t_11) {
/* … */
}
+0375: seconds = _TP_MAX_EPOCH_MS / 1000.0
__pyx_v_seconds = (((double)__pyx_v_7questdb_7_client__TP_MAX_EPOCH_MS) / 1000.0);
+0376: return seconds
{
__pyx_r = __pyx_v_seconds;
}
goto __pyx_L0;
+0377: elif isinstance(value, (int, float)) and not isinstance(value, bool):
__pyx_t_13 = PyLong_Check(__pyx_v_value); if (!__pyx_t_13) { } else { __pyx_t_3 = __pyx_t_13; goto __pyx_L9_bool_binop_done; } __pyx_t_13 = PyFloat_Check(__pyx_v_value); __pyx_t_3 = __pyx_t_13; __pyx_L9_bool_binop_done:; if (__pyx_t_3) { } else { __pyx_t_11 = __pyx_t_3; goto __pyx_L7_bool_binop_done; } __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool); __pyx_t_13 = (!__pyx_t_3); __pyx_t_11 = __pyx_t_13; __pyx_L7_bool_binop_done:; if (likely(__pyx_t_11)) { /* … */ goto __pyx_L3; }
+0378: if value != value or value in (float('inf'), float('-inf')):
__pyx_t_13 = __Pyx_PyObject_CompareBoolNe_object_object(__pyx_v_value, __pyx_v_value, Py_NE); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(4, 378, __pyx_L1_error) if (!__pyx_t_13) { } else { __pyx_t_11 = __pyx_t_13; goto __pyx_L12_bool_binop_done; } __pyx_t_12 = __Pyx_PyUnicode_AsDouble(__pyx_mstate_global->__pyx_n_u_inf); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_12, ((double)((double)-1))) && PyErr_Occurred())) __PYX_ERR(4, 378, __pyx_L1_error) __pyx_t_14 = __Pyx_PyUnicode_AsDouble(__pyx_mstate_global->__pyx_kp_u_inf_2); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_14, ((double)((double)-1))) && PyErr_Occurred())) __PYX_ERR(4, 378, __pyx_L1_error) __Pyx_INCREF(__pyx_v_value); __pyx_t_2 = __pyx_v_value; __pyx_t_9 = PyFloat_FromDouble(__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_3 = __Pyx_PyObject_CompareBoolEq_object_float(__pyx_t_2, __pyx_t_9, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 378, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (!__pyx_t_3) { } else { __pyx_t_13 = __pyx_t_3; goto __pyx_L14_bool_binop_done; } __pyx_t_9 = PyFloat_FromDouble(__pyx_t_14); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_3 = __Pyx_PyObject_CompareBoolEq_object_float(__pyx_t_2, __pyx_t_9, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 378, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_13 = __pyx_t_3; __pyx_L14_bool_binop_done:; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_3 = __pyx_t_13; __pyx_t_11 = __pyx_t_3; __pyx_L12_bool_binop_done:; if (unlikely(__pyx_t_11)) { /* … */ }
+0379: raise _ConfigValueError(f'"{name}" must be finite')
__pyx_t_9 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 379, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 379, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u__26;
__pyx_t_6[1] = __pyx_t_4;
__pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u_must_be_finite;
__pyx_t_7 = 17;
#if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
__pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6[1]);
#endif
__pyx_t_8 = 0;
#if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
__pyx_t_8 |= __Pyx_PyUnicode_KIND_04(__pyx_t_6[1]);
#endif
__pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_7, __pyx_t_8);
if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 379, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_10 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
assert(__pyx_t_9);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
__pyx_t_10 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_1};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 379, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(4, 379, __pyx_L1_error)
+0380: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
goto __pyx_L21_try_end;
__pyx_L16_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L18_except_error:;
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
goto __pyx_L1_error;
__pyx_L21_try_end:;
}
+0381: seconds = value
__pyx_t_12 = __Pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(4, 381, __pyx_L16_error) __pyx_v_seconds = __pyx_t_12;
+0382: except OverflowError:
__pyx_t_8 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_OverflowError)))); if (__pyx_t_8) { __Pyx_AddTraceback("questdb._client._tp_epoch_seconds", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_5, &__pyx_t_1) < 0) __PYX_ERR(4, 382, __pyx_L18_except_error) __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_1);
+0383: raise _ConfigValueError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 383, __pyx_L18_except_error)
__Pyx_GOTREF(__pyx_t_18);
+0384: f'"{name}" must be representable as a Python datetime') from None
__pyx_t_19 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_19)) __PYX_ERR(4, 384, __pyx_L18_except_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u__26; __pyx_t_6[1] = __pyx_t_19; __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u_must_be_representable_as_a_Pyth; __pyx_t_7 = 45; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6[1]); #endif __pyx_t_8 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_8 |= __Pyx_PyUnicode_KIND_04(__pyx_t_6[1]); #endif __pyx_t_20 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 384, __pyx_L18_except_error) __Pyx_GOTREF(__pyx_t_20); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_18))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_18); assert(__pyx_t_4); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_18); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_18, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_20}; __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_18, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 383, __pyx_L18_except_error) __Pyx_GOTREF(__pyx_t_9); } __Pyx_Raise(__pyx_t_9, 0, 0, Py_None); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(4, 383, __pyx_L18_except_error) } goto __pyx_L18_except_error;
0385: else:
+0386: raise _ConfigTypeError(
/*else*/ {
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ConfigTypeError); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 386, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+0387: f'"{name}" must be a datetime or epoch seconds, '
__pyx_t_9 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 387, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); /* … */ __pyx_t_7 = 44; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_21[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_21[3]); #endif __pyx_t_8 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_8 |= __Pyx_PyUnicode_KIND_04(__pyx_t_21[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_21[3]); #endif __pyx_t_18 = __Pyx_PyUnicode_Join(__pyx_t_21, 4, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 387, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); assert(__pyx_t_5); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_2, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_18}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(4, 386, __pyx_L1_error) } __pyx_L3:;
+0388: f'not {_fqn(type(value))}')
__pyx_t_18 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_value)))); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 388, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_20 = __Pyx_PyUnicode_Unicode(__pyx_t_18); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 388, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_21[0] = __pyx_mstate_global->__pyx_kp_u__26; __pyx_t_21[1] = __pyx_t_9; __pyx_t_21[2] = __pyx_mstate_global->__pyx_kp_u_must_be_a_datetime_or_epoch_sec; __pyx_t_21[3] = __pyx_t_20;
0389: # Every accepted expiry must also be representable in status snapshots.
0390: # Validate all source shapes, including mutated ExpiringToken instances.
+0391: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
goto __pyx_L29_try_end;
__pyx_L24_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L26_except_error:;
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_ExceptionReset(__pyx_t_17, __pyx_t_16, __pyx_t_15);
goto __pyx_L1_error;
__pyx_L29_try_end:;
}
+0392: _tp_instant(seconds)
__pyx_t_1 = __pyx_f_7questdb_7_client__tp_instant(__pyx_v_seconds); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 392, __pyx_L24_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0393: except (OverflowError, OSError, ValueError):
__pyx_t_8 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_OverflowError)))) || __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_OSError)))) || __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError)))); if (__pyx_t_8) { __Pyx_AddTraceback("questdb._client._tp_epoch_seconds", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_18) < 0) __PYX_ERR(4, 393, __pyx_L26_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_18);
+0394: raise _ConfigValueError(
__pyx_t_20 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 394, __pyx_L26_except_error)
__Pyx_GOTREF(__pyx_t_9);
+0395: f'"{name}" must be representable as a Python datetime') from None
__pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 395, __pyx_L26_except_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u__26; __pyx_t_6[1] = __pyx_t_4; __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u_must_be_representable_as_a_Pyth; __pyx_t_7 = 45; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6[1]); #endif __pyx_t_8 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_8 |= __Pyx_PyUnicode_KIND_04(__pyx_t_6[1]); #endif __pyx_t_19 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_19)) __PYX_ERR(4, 395, __pyx_L26_except_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_20 = PyMethod_GET_SELF(__pyx_t_9); assert(__pyx_t_20); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_20); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_9, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_20, __pyx_t_19}; __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 394, __pyx_L26_except_error) __Pyx_GOTREF(__pyx_t_5); } __Pyx_Raise(__pyx_t_5, 0, 0, Py_None); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(4, 394, __pyx_L26_except_error) } goto __pyx_L26_except_error;
+0396: return seconds
{
__pyx_r = __pyx_v_seconds;
}
goto __pyx_L0;
0397:
0398:
+0399: cdef object _tp_utc_datetime(object value, double seconds):
static PyObject *__pyx_f_7questdb_7_client__tp_utc_datetime(PyObject *__pyx_v_value, double __pyx_v_seconds) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("questdb._client._tp_utc_datetime", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0400: """``value``, which `_tp_epoch_seconds` accepted as ``seconds``, as a
0401: timezone-aware UTC datetime. A datetime is converted, not rebuilt from
0402: ``seconds``, so it keeps its exact instant."""
+0403: if isinstance(value, datetime.datetime):
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 403, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 403, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = PyObject_IsInstance(__pyx_v_value, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(4, 403, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { /* … */ }
+0404: return value.astimezone(datetime.timezone.utc)
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 404, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 404, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 404, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_4};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astimezone, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 404, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L0;
+0405: return _tp_instant(seconds)
__pyx_t_2 = __pyx_f_7questdb_7_client__tp_instant(__pyx_v_seconds); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 405, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
0406:
0407:
+0408: cdef object _tp_format_instant(object value):
static PyObject *__pyx_f_7questdb_7_client__tp_format_instant(PyObject *__pyx_v_value) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("questdb._client._tp_format_instant", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0409: """An instant for a ``repr``: ISO time for a datetime, or for epoch
0410: seconds a datetime can hold, and the ``repr`` of anything else -- an
0411: attribute can be reassigned to any value after construction."""
+0412: if isinstance(value, datetime.datetime):
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = PyObject_IsInstance(__pyx_v_value, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(4, 412, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { /* … */ }
+0413: return value.isoformat()
__pyx_t_1 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_isoformat, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 413, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L0;
+0414: try:
{
/*try:*/ {
/* … */
}
__pyx_L4_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L6_except_error:;
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
goto __pyx_L1_error;
__pyx_L8_try_return:;
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
goto __pyx_L0;
__pyx_L7_except_return:;
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
goto __pyx_L0;
}
+0415: return _tp_instant(value).isoformat()
__pyx_t_8 = __Pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(4, 415, __pyx_L4_error) __pyx_t_9 = __pyx_f_7questdb_7_client__tp_instant(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 415, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __pyx_t_9; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL}; __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_isoformat, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 415, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L8_try_return;
+0416: except (TypeError, OverflowError, OSError, ValueError):
__pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_TypeError)))) || __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_OverflowError)))) || __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_OSError)))) || __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError)))); if (__pyx_t_10) { __Pyx_AddTraceback("questdb._client._tp_format_instant", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_9, &__pyx_t_1) < 0) __PYX_ERR(4, 416, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_1);
+0417: return repr(value)
__pyx_t_11 = PyObject_Repr(__pyx_v_value); if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 417, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_11); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_11; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L7_except_return; } goto __pyx_L6_except_error;
0418:
0419:
+0420: cdef object _tp_datetime_from_ms(int64_t ms):
static PyObject *__pyx_f_7questdb_7_client__tp_datetime_from_ms(int64_t __pyx_v_ms) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client._tp_datetime_from_ms", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0421: if ms < 0:
__pyx_t_1 = (__pyx_v_ms < 0);
if (__pyx_t_1) {
/* … */
}
+0422: return None
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+0423: if ms > _TP_MAX_EPOCH_MS:
__pyx_t_1 = (__pyx_v_ms > __pyx_v_7questdb_7_client__TP_MAX_EPOCH_MS);
if (__pyx_t_1) {
/* … */
}
+0424: ms = _TP_MAX_EPOCH_MS
__pyx_v_ms = __pyx_v_7questdb_7_client__TP_MAX_EPOCH_MS;
0425: # Exact, unlike a round trip through a double, and on every platform.
+0426: return _TP_EPOCH + datetime.timedelta(milliseconds=ms)
__pyx_t_3 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyLong_From_int64_t(__pyx_v_ms); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_VECTORCALL #endif __pyx_t_6 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); __pyx_t_6 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4}; #if CYTHON_VECTORCALL __pyx_t_7 = __pyx_mstate_global->__pyx_tuple[32]; if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 426, __pyx_L1_error) __Pyx_INCREF(__pyx_t_7); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_milliseconds}; __pyx_t_7 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } #endif __pyx_t_2 = __Pyx_Object_VectorcallKwds((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; #if CYTHON_VECTORCALL #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_t_5 = __Pyx_PyNumber_Add_object_object(__pyx_v_7questdb_7_client__TP_EPOCH, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_5; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_5 = 0; goto __pyx_L0; /* … */ { PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_milliseconds}; __pyx_mstate_global->__pyx_tuple[32] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[32])) __PYX_ERR(4, 426, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[32]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[32]);
0427:
0428:
0429: # 2**64 as a double. Converting a double at or above it to `uint64_t` is
0430: # undefined behaviour in C (C11 6.3.1.4): the result differs by compiler and
0431: # architecture, and some x86-64 code sequences give 0, so a "wait forever"
0432: # duration such as `sys.maxsize` could become no wait at all. Native caps
0433: # every duration at 100 years anyway.
+0434: cdef double _TP_UINT64_LIMIT = 18446744073709551616.0
__pyx_v_7questdb_7_client__TP_UINT64_LIMIT = 18446744073709551616.0;
0435:
0436:
+0437: cdef uint64_t _tp_duration_ms(object value, str name) except? 0:
static uint64_t __pyx_f_7questdb_7_client__tp_duration_ms(PyObject *__pyx_v_value, PyObject *__pyx_v_name) {
double __pyx_v_ms;
uint64_t __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client._tp_duration_ms", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
return __pyx_r;
}
+0438: cdef double ms = _tp_seconds(value, name) * 1000.0 + 0.5
__pyx_t_1 = __pyx_f_7questdb_7_client__tp_seconds(__pyx_v_value, __pyx_v_name); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_1, ((double)(-1.0))) && PyErr_Occurred())) __PYX_ERR(4, 438, __pyx_L1_error) __pyx_v_ms = ((__pyx_t_1 * 1000.0) + 0.5);
+0439: if ms >= _TP_UINT64_LIMIT:
__pyx_t_2 = (__pyx_v_ms >= __pyx_v_7questdb_7_client__TP_UINT64_LIMIT);
if (__pyx_t_2) {
/* … */
}
+0440: return <uint64_t>-1
{
__pyx_r = ((uint64_t)-1L);
}
goto __pyx_L0;
+0441: return <uint64_t>ms
{
__pyx_r = ((uint64_t)__pyx_v_ms);
}
goto __pyx_L0;
0442:
0443:
+0444: cdef int64_t _tp_retry_after_ms(double seconds) noexcept:
static int64_t __pyx_f_7questdb_7_client__tp_retry_after_ms(double __pyx_v_seconds) {
int64_t __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
0445: """A source's non-negative ``retry_after`` in milliseconds, clamped below
0446: the `int64_t` range: converting the Python float overflowed past it, and
0447: the source's failure was then reported unclassified. Native caps the wait
0448: at ``retry_after_max`` anyway."""
+0449: if seconds * 1000.0 >= 9.2e18:
__pyx_t_1 = ((__pyx_v_seconds * 1000.0) >= 9.2e18);
if (__pyx_t_1) {
/* … */
}
+0450: return <int64_t>9200000000000000000
{
__pyx_r = ((int64_t)0x7FACF7419D980000);
}
goto __pyx_L0;
+0451: return <int64_t>(seconds * 1000.0)
{
__pyx_r = ((int64_t)(__pyx_v_seconds * 1000.0));
}
goto __pyx_L0;
0452:
0453:
+0454: cdef int64_t _tp_epoch_ms(double seconds) except? -1:
static int64_t __pyx_f_7questdb_7_client__tp_epoch_ms(double __pyx_v_seconds) {
int64_t __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
+0455: if seconds * 1000.0 >= 9.2e18:
__pyx_t_1 = ((__pyx_v_seconds * 1000.0) >= 9.2e18);
if (__pyx_t_1) {
/* … */
}
+0456: return <int64_t>9200000000000000000
{
__pyx_r = ((int64_t)0x7FACF7419D980000);
}
goto __pyx_L0;
+0457: if seconds * 1000.0 <= -9.2e18:
__pyx_t_1 = ((__pyx_v_seconds * 1000.0) <= -9.2e18);
if (__pyx_t_1) {
/* … */
}
+0458: return <int64_t>-9200000000000000000
{
__pyx_r = ((int64_t)-9200000000000000000L);
}
goto __pyx_L0;
+0459: return <int64_t>(seconds * 1000.0)
{
__pyx_r = ((int64_t)(__pyx_v_seconds * 1000.0));
}
goto __pyx_L0;
0460:
0461:
+0462: cdef tuple _tp_result_parts(object result):
static PyObject *__pyx_f_7questdb_7_client__tp_result_parts(PyObject *__pyx_v_result) {
PyObject *__pyx_v_token = 0;
PyObject *__pyx_v_expires_at = 0;
PyObject *__pyx_v_refresh_at = 0;
PyObject *__pyx_v_refresh_on = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._tp_result_parts", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_token);
__Pyx_XDECREF(__pyx_v_expires_at);
__Pyx_XDECREF(__pyx_v_refresh_at);
__Pyx_XDECREF(__pyx_v_refresh_on);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0463: """``(token, expires_at_ms, refresh_at_ms)`` from what a source returned:
0464: an :class:`ExpiringToken`, a ``(token, expires_at[, refresh_at])`` tuple,
0465: or any object with ``token`` and ``expires_on`` (epoch seconds) plus an
0466: optional ``refresh_on``, such as Azure Core's ``AccessToken`` and
0467: ``AccessTokenInfo``."""
+0468: cdef object token, expires_at, refresh_at = None
__Pyx_INCREF(Py_None);
__pyx_v_refresh_at = Py_None;
+0469: if isinstance(result, ExpiringToken):
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ExpiringToken); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 469, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_IsInstance(__pyx_v_result, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(4, 469, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+0470: token = result.token
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_mstate_global->__pyx_n_u_token); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_token = __pyx_t_1; __pyx_t_1 = 0;
+0471: expires_at = _tp_epoch_seconds(result.expires_at, 'expires_at')
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_mstate_global->__pyx_n_u_expires_at); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __pyx_f_7questdb_7_client__tp_epoch_seconds(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_expires_at); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_3, ((double)(-1.0))) && PyErr_Occurred())) __PYX_ERR(4, 471, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_expires_at = __pyx_t_1; __pyx_t_1 = 0;
+0472: if result.refresh_at is not None:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_mstate_global->__pyx_n_u_refresh_at); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 472, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 != Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+0473: refresh_at = _tp_epoch_seconds(result.refresh_at, 'refresh_at')
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_mstate_global->__pyx_n_u_refresh_at); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __pyx_f_7questdb_7_client__tp_epoch_seconds(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_refresh_at); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_3, ((double)(-1.0))) && PyErr_Occurred())) __PYX_ERR(4, 473, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_refresh_at, __pyx_t_1); __pyx_t_1 = 0;
+0474: elif isinstance(result, tuple) and len(result) in (2, 3):
__pyx_t_4 = PyTuple_Check(__pyx_v_result); if (__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L5_bool_binop_done; } __pyx_t_5 = PyObject_Length(__pyx_v_result); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(4, 474, __pyx_L1_error) __pyx_t_6 = (__pyx_t_5 == 2); if (!__pyx_t_6) { } else { __pyx_t_4 = __pyx_t_6; goto __pyx_L7_bool_binop_done; } __pyx_t_6 = (__pyx_t_5 == 3); __pyx_t_4 = __pyx_t_6; __pyx_L7_bool_binop_done:; __pyx_t_6 = __pyx_t_4; __pyx_t_2 = __pyx_t_6; __pyx_L5_bool_binop_done:; if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+0475: token = result[0]
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_token = __pyx_t_1; __pyx_t_1 = 0;
+0476: expires_at = _tp_epoch_seconds(result[1], 'expires_at')
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 1, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __pyx_f_7questdb_7_client__tp_epoch_seconds(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_expires_at); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_3, ((double)(-1.0))) && PyErr_Occurred())) __PYX_ERR(4, 476, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_expires_at = __pyx_t_1; __pyx_t_1 = 0;
+0477: if len(result) == 3 and result[2] is not None:
__pyx_t_5 = PyObject_Length(__pyx_v_result); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(4, 477, __pyx_L1_error) __pyx_t_6 = (__pyx_t_5 == 3); if (__pyx_t_6) { } else { __pyx_t_2 = __pyx_t_6; goto __pyx_L10_bool_binop_done; } __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 2, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 477, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = (__pyx_t_1 != Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = __pyx_t_6; __pyx_L10_bool_binop_done:; if (__pyx_t_2) { /* … */ }
+0478: refresh_at = _tp_epoch_seconds(result[2], 'refresh_at')
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 2, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 478, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __pyx_f_7questdb_7_client__tp_epoch_seconds(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_refresh_at); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_3, ((double)(-1.0))) && PyErr_Occurred())) __PYX_ERR(4, 478, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 478, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_refresh_at, __pyx_t_1); __pyx_t_1 = 0;
+0479: elif hasattr(result, 'token') and hasattr(result, 'expires_on'):
__pyx_t_6 = __Pyx_HasAttr(__pyx_v_result, __pyx_mstate_global->__pyx_n_u_token); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(4, 479, __pyx_L1_error) if (__pyx_t_6) { } else { __pyx_t_2 = __pyx_t_6; goto __pyx_L12_bool_binop_done; } __pyx_t_6 = __Pyx_HasAttr(__pyx_v_result, __pyx_mstate_global->__pyx_n_u_expires_on); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(4, 479, __pyx_L1_error) __pyx_t_2 = __pyx_t_6; __pyx_L12_bool_binop_done:; if (likely(__pyx_t_2)) { /* … */ goto __pyx_L3; }
+0480: token = result.token
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_mstate_global->__pyx_n_u_token); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_token = __pyx_t_1; __pyx_t_1 = 0;
+0481: expires_at = _tp_epoch_seconds(result.expires_on, 'expires_on')
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_mstate_global->__pyx_n_u_expires_on); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __pyx_f_7questdb_7_client__tp_epoch_seconds(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_expires_on); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_3, ((double)(-1.0))) && PyErr_Occurred())) __PYX_ERR(4, 481, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_expires_at = __pyx_t_1; __pyx_t_1 = 0;
+0482: refresh_on = getattr(result, 'refresh_on', None)
__pyx_t_1 = __Pyx_GetAttr3(__pyx_v_result, __pyx_mstate_global->__pyx_n_u_refresh_on, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_refresh_on = __pyx_t_1; __pyx_t_1 = 0;
+0483: if refresh_on is not None:
__pyx_t_2 = (__pyx_v_refresh_on != Py_None);
if (__pyx_t_2) {
/* … */
}
+0484: refresh_at = _tp_epoch_seconds(refresh_on, 'refresh_on')
__pyx_t_3 = __pyx_f_7questdb_7_client__tp_epoch_seconds(__pyx_v_refresh_on, __pyx_mstate_global->__pyx_n_u_refresh_on); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_3, ((double)(-1.0))) && PyErr_Occurred())) __PYX_ERR(4, 484, __pyx_L1_error) __pyx_t_1 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_refresh_at, __pyx_t_1); __pyx_t_1 = 0;
0485: else:
+0486: raise TypeError(
/*else*/ {
__pyx_t_7 = NULL;
+0487: 'a token source must return an ExpiringToken, a '
__pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_a_token_source_must_return_an_Ex, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_10 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_8}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 486, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(4, 486, __pyx_L1_error) } __pyx_L3:;
0488: '(token, expires_at) tuple, or an object with "token" and '
+0489: f'"expires_on" attributes, not {_fqn(type(result))}')
__pyx_t_8 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_result)))); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+0490: if not isinstance(token, str):
__pyx_t_2 = PyUnicode_Check(__pyx_v_token);
__pyx_t_6 = (!__pyx_t_2);
if (unlikely(__pyx_t_6)) {
/* … */
}
+0491: raise TypeError(
__pyx_t_8 = NULL;
+0492: f'the token must be a str, not {_fqn(type(token))}')
__pyx_t_7 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_token)))); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyUnicode_Unicode(__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_the_token_must_be_a_str_not, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_10 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_7}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(4, 491, __pyx_L1_error)
0493: return (
+0494: token,
__pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 494, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_token); __Pyx_GIVEREF(__pyx_v_token); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_token) != (0)) __PYX_ERR(4, 494, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1) != (0)) __PYX_ERR(4, 494, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_7); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_7) != (0)) __PYX_ERR(4, 494, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_7 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_8); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_8 = 0; goto __pyx_L0;
+0495: _tp_epoch_ms(expires_at),
__pyx_t_3 = __Pyx_PyFloat_AsDouble(__pyx_v_expires_at); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(4, 495, __pyx_L1_error) __pyx_t_11 = __pyx_f_7questdb_7_client__tp_epoch_ms(__pyx_t_3); if (unlikely(__pyx_t_11 == ((int64_t)-1L) && PyErr_Occurred())) __PYX_ERR(4, 495, __pyx_L1_error) __pyx_t_1 = __Pyx_PyLong_From_int64_t(__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 495, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1);
+0496: 0 if refresh_at is None else _tp_epoch_ms(refresh_at))
__pyx_t_6 = (__pyx_v_refresh_at == Py_None);
if (__pyx_t_6) {
__Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
__pyx_t_7 = __pyx_mstate_global->__pyx_int_0;
} else {
__pyx_t_3 = __Pyx_PyFloat_AsDouble(__pyx_v_refresh_at); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(4, 496, __pyx_L1_error)
__pyx_t_11 = __pyx_f_7questdb_7_client__tp_epoch_ms(__pyx_t_3); if (unlikely(__pyx_t_11 == ((int64_t)-1L) && PyErr_Occurred())) __PYX_ERR(4, 496, __pyx_L1_error)
__pyx_t_8 = __Pyx_PyLong_From_int64_t(__pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 496, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_7 = __pyx_t_8;
__pyx_t_8 = 0;
}
0497:
0498:
+0499: cdef bint _tp_on_main_thread():
static int __pyx_f_7questdb_7_client__tp_on_main_thread(void) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
0500: # The native ident, like every other main-thread check: under gevent,
0501: # `threading.get_ident()` is a greenlet id.
+0502: return questdb_thread_ident() == _OIDC_MAIN_THREAD_IDENT
{
__pyx_r = (PyThread_get_thread_ident() == __pyx_v_7questdb_7_client__OIDC_MAIN_THREAD_IDENT);
}
goto __pyx_L0;
0503:
0504:
+0505: cdef void _tp_sink_text_error(
static void __pyx_f_7questdb_7_client__tp_sink_text_error(struct questdb_token_sink *__pyx_v_sink, int __pyx_v_retryable, int64_t __pyx_v_retry_after_ms, PyObject *__pyx_v_message) {
PyObject *__pyx_v_encoded = 0;
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_WriteUnraisable("questdb._client._tp_sink_text_error", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_encoded);
__Pyx_RefNannyFinishContext();
}
0506: questdb_token_sink* sink,
0507: bint retryable,
0508: int64_t retry_after_ms,
0509: str message) noexcept:
0510: cdef bytes encoded
+0511: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
__pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L4_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
__pyx_L8_try_end:;
}
+0512: encoded = message[:_TOKEN_ERROR_MSG_MAX].encode('utf-8', 'replace')
if (unlikely(__pyx_v_message == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(4, 512, __pyx_L3_error)
}
__pyx_t_4 = __Pyx_PyUnicode_Substring(__pyx_v_message, 0, __pyx_v_7questdb_7_client__TOKEN_ERROR_MSG_MAX); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 512, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PyUnicode_AsEncodedString(((PyObject*)__pyx_t_4), __pyx_k_utf_8, __pyx_k_replace); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 512, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_v_encoded = ((PyObject*)__pyx_t_5);
__pyx_t_5 = 0;
+0513: questdb_token_sink_set_error(
(void)(questdb_token_sink_set_error(__pyx_v_sink, __pyx_v_retryable, __pyx_v_retry_after_ms, __pyx_t_6, __pyx_t_7));
+0514: sink, retryable, retry_after_ms, encoded, len(encoded))
__pyx_t_6 = __Pyx_PyBytes_AsString(__pyx_v_encoded); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(4, 514, __pyx_L3_error) __pyx_t_7 = __Pyx_PyBytes_GET_SIZE(__pyx_v_encoded); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(4, 514, __pyx_L3_error)
+0515: except BaseException:
__pyx_t_8 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_8) { __Pyx_AddTraceback("questdb._client._tp_sink_text_error", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_9) < 0) __PYX_ERR(4, 515, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_9);
+0516: questdb_token_sink_set_error(
(void)(questdb_token_sink_set_error(__pyx_v_sink, 1, -1L, __pyx_k_the_token_callback_failed, 25));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L4_exception_handled;
}
goto __pyx_L5_except_error;
0517: sink, True, -1, b'the token callback failed', 25)
0518:
0519:
+0520: cdef bint _tp_sink_terminal_error(
static int __pyx_f_7questdb_7_client__tp_sink_terminal_error(struct questdb_token_sink *__pyx_v_sink, PyObject *__pyx_v_message) {
PyObject *__pyx_v_encoded = 0;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client._tp_sink_terminal_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_encoded);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0521: questdb_token_sink* sink, str message) except -1:
0522: """Report a failure that retrying can never clear, which also stops
0523: background reconnects. False, recording nothing, when the sink refuses
0524: one: a refreshing provider's source cannot report it."""
+0525: cdef bytes encoded = message[:_TOKEN_ERROR_MSG_MAX].encode(
if (unlikely(__pyx_v_message == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(4, 525, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_PyUnicode_Substring(__pyx_v_message, 0, __pyx_v_7questdb_7_client__TOKEN_ERROR_MSG_MAX); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 525, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = PyUnicode_AsEncodedString(((PyObject*)__pyx_t_1), __pyx_k_utf_8, __pyx_k_replace); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 525, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_encoded = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
0526: 'utf-8', 'replace')
+0527: return questdb_token_sink_set_terminal_error(
{
__pyx_r = questdb_token_sink_set_terminal_error(__pyx_v_sink, __pyx_t_3, __pyx_t_4);
}
goto __pyx_L0;
+0528: sink, encoded, len(encoded))
__pyx_t_3 = __Pyx_PyBytes_AsString(__pyx_v_encoded); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(4, 528, __pyx_L1_error) __pyx_t_4 = __Pyx_PyBytes_GET_SIZE(__pyx_v_encoded); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(4, 528, __pyx_L1_error)
0529:
0530:
+0531: cdef str _tp_exception_label(object exc):
static PyObject *__pyx_f_7questdb_7_client__tp_exception_label(PyObject *__pyx_v_exc) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client._tp_exception_label", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0532: """The class name a failure message gives for ``exc``: for an argument
0533: error of the token API, the built-in it also is, not its private class."""
+0534: if isinstance(exc, _ConfigTypeError):
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ConfigTypeError); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_IsInstance(__pyx_v_exc, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(4, 534, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+0535: return 'TypeError'
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_TypeError);
__pyx_r = __pyx_mstate_global->__pyx_n_u_TypeError;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+0536: if isinstance(exc, _ConfigValueError):
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_IsInstance(__pyx_v_exc, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(4, 536, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+0537: return 'ValueError'
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_ValueError);
__pyx_r = __pyx_mstate_global->__pyx_n_u_ValueError;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+0538: return type(exc).__qualname__
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_exc)), __pyx_mstate_global->__pyx_n_u_qualname); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(4, 538, __pyx_L1_error) { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_1); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
0539:
0540:
+0541: cdef bint _tp_raised_by_client(object exc) except -1:
static int __pyx_f_7questdb_7_client__tp_raised_by_client(PyObject *__pyx_v_exc) {
PyObject *__pyx_v_tb = 0;
PyObject *__pyx_v_name = 0;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("questdb._client._tp_raised_by_client", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_tb);
__Pyx_XDECREF(__pyx_v_name);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0542: """Whether ``exc`` is a client call's refusal that the provider let
0543: escape, rather than an exception the provider raised itself.
0544:
0545: A pool at its ``sender_pool_max`` cap, a lease another thread holds and a
0546: handle that is closing all refuse a call with ``InvalidApiCall``. That
0547: refusal is about the call -- the client is busy or closing, not broken --
0548: so it must not stop the provider's clients the way the provider's own
0549: ``InvalidApiCall`` does. The innermost traceback entry is where the
0550: exception was raised. Cython records an entry, with this module's globals,
0551: for each function of this module the exception leaves, and the package's
0552: Python modules are named ``questdb.*`` too.
0553: """
+0554: cdef object tb = exc.__traceback__
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_traceback); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_tb = __pyx_t_1; __pyx_t_1 = 0;
0555: cdef object name
+0556: if tb is None:
__pyx_t_2 = (__pyx_v_tb == Py_None);
if (__pyx_t_2) {
/* … */
}
+0557: return False
{
__pyx_r = 0;
}
goto __pyx_L0;
+0558: while tb.tb_next is not None:
while (1) {
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tb, __pyx_mstate_global->__pyx_n_u_tb_next); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 558, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = (__pyx_t_1 != Py_None);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (!__pyx_t_2) break;
+0559: tb = tb.tb_next
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tb, __pyx_mstate_global->__pyx_n_u_tb_next); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_tb, __pyx_t_1); __pyx_t_1 = 0; }
+0560: name = tb.tb_frame.f_globals.get('__name__')
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_tb, __pyx_mstate_global->__pyx_n_u_tb_frame); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_f_globals); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_3 = __pyx_t_5; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u_name_2}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_v_name = __pyx_t_1; __pyx_t_1 = 0;
+0561: return isinstance(name, str) and (
__pyx_t_7 = PyUnicode_Check(__pyx_v_name);
if (__pyx_t_7) {
} else {
__pyx_t_2 = __pyx_t_7;
goto __pyx_L6_bool_binop_done;
}
+0562: name == 'questdb' or name.startswith('questdb.'))
__pyx_t_7 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_questdb, Py_EQ); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(4, 562, __pyx_L1_error) if (!__pyx_t_7) { } else { __pyx_t_2 = __pyx_t_7; goto __pyx_L6_bool_binop_done; } __pyx_t_5 = __pyx_v_name; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_questdb_2}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(4, 562, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = __pyx_t_7; __pyx_L6_bool_binop_done:; { __pyx_r = __pyx_t_2; } goto __pyx_L0;
0563:
0564:
+0565: cdef void _tp_sink_exception(
static void __pyx_f_7questdb_7_client__tp_sink_exception(struct questdb_token_sink *__pyx_v_sink, PyObject *__pyx_v_exc, PyObject *__pyx_v_signal_codes, PyObject *__pyx_v_provider) {
int64_t __pyx_v_retry_after_ms;
PyObject *__pyx_v_check_exc = NULL;
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_WriteUnraisable("questdb._client._tp_sink_exception", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_check_exc);
__Pyx_RefNannyFinishContext();
}
0566: questdb_token_sink* sink, object exc, object signal_codes,
0567: object provider) noexcept:
0568: """Report provider failures; preserve main-thread interruptions separately.
0569:
0570: ``provider`` is the application provider whose call raised ``exc``, or
0571: None for a token source.
0572:
0573: Snapshot handler codes before invoking user code: a signal handler can
0574: unregister itself before raising any Exception subclass.
0575: """
+0576: cdef int64_t retry_after_ms = -1
__pyx_v_retry_after_ms = -1L;
+0577: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
__pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L7_try_return:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L0;
__pyx_L4_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
__pyx_L8_try_end:;
}
+0578: if _tp_on_main_thread() and (
__pyx_t_5 = __pyx_f_7questdb_7_client__tp_on_main_thread(); if (unlikely(__pyx_t_5 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(4, 578, __pyx_L3_error) if (__pyx_t_5) { } else { __pyx_t_4 = __pyx_t_5; goto __pyx_L10_bool_binop_done; } /* … */ if (__pyx_t_4) { /* … */ }
+0579: not isinstance(exc, Exception)
__pyx_t_5 = __Pyx_PyExc_Exception_Check(__pyx_v_exc);
__pyx_t_6 = (!__pyx_t_5);
if (!__pyx_t_6) {
} else {
__pyx_t_4 = __pyx_t_6;
goto __pyx_L10_bool_binop_done;
}
+0580: or _oidc_raised_in_signal_handler(exc, signal_codes)):
__pyx_t_6 = __pyx_f_7questdb_7_client__oidc_raised_in_signal_handler(__pyx_v_exc, __pyx_v_signal_codes); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(4, 580, __pyx_L3_error)
__pyx_t_4 = __pyx_t_6;
__pyx_L10_bool_binop_done:;
+0581: _oidc_park_main(exc)
__pyx_f_7questdb_7_client__oidc_park_main(__pyx_v_exc);
+0582: _oidc_schedule_parked_main()
__pyx_f_7questdb_7_client__oidc_schedule_parked_main();
+0583: _tp_sink_text_error(
__pyx_f_7questdb_7_client__tp_sink_text_error(__pyx_v_sink, 1, -1L, __pyx_mstate_global->__pyx_kp_u_the_token_callback_was_interrupt);
0584: sink, True, -1, 'the token callback was interrupted')
+0585: return
{
}
goto __pyx_L7_try_return;
0586: # Closing a RefreshingTokenProvider ends every client that uses it.
0587: # Native ends them when the provider is attached as is. Reached
0588: # through an application provider -- a subclass that overrides
0589: # token() or on_rejected(), or a provider of one's own that calls
0590: # its token(), `lambda: tokens.token()` -- its failure would
0591: # otherwise be retried in the background for good, so its failure
0592: # once closed stops them instead. `_tp_token` marks that failure.
+0593: if ((_tp_closed_refreshing_provider(provider)
__pyx_t_6 = __pyx_f_7questdb_7_client__tp_closed_refreshing_provider(__pyx_v_provider); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(4, 593, __pyx_L3_error)
if (!__pyx_t_6) {
} else {
goto __pyx_L15_next_and;
}
/* … */
if (__pyx_t_4) {
/* … */
}
+0594: or (isinstance(exc, QuestDBError)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 594, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = PyObject_IsInstance(__pyx_v_exc, __pyx_t_7); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(4, 594, __pyx_L3_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_6) { } else { __pyx_t_4 = __pyx_t_6; goto __pyx_L14_bool_binop_done; }
+0595: and getattr(exc, '_provider_closed', False)))
__pyx_t_7 = __Pyx_GetAttr3(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_provider_closed, Py_False); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 595, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(4, 595, __pyx_L3_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_6) { } else { __pyx_t_4 = __pyx_t_6; goto __pyx_L14_bool_binop_done; } __pyx_L15_next_and:;
+0596: and _tp_sink_terminal_error(
__pyx_t_6 = __pyx_f_7questdb_7_client__tp_sink_terminal_error(__pyx_v_sink, ((PyObject*)__pyx_t_7)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(4, 596, __pyx_L3_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_4 = __pyx_t_6; __pyx_L14_bool_binop_done:;
0597: sink,
+0598: str(exc) if isinstance(exc, QuestDBError)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 598, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = PyObject_IsInstance(__pyx_v_exc, __pyx_t_8); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(4, 598, __pyx_L3_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (__pyx_t_5) { } else { __pyx_t_6 = __pyx_t_5; goto __pyx_L18_bool_binop_done; } /* … */ __pyx_t_8 = __Pyx_PyObject_Unicode(__pyx_v_exc); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 598, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __pyx_t_8; __pyx_t_8 = 0; } else {
+0599: and not isinstance(exc, _ConfigArgumentError)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_ConfigArgumentError); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 599, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = PyObject_IsInstance(__pyx_v_exc, __pyx_t_8); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(4, 599, __pyx_L3_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = (!__pyx_t_5); __pyx_t_6 = __pyx_t_9; __pyx_L18_bool_binop_done:; if (__pyx_t_6) {
+0600: else f'{_tp_exception_label(exc)}: {exc}')):
__pyx_t_8 = __pyx_f_7questdb_7_client__tp_exception_label(__pyx_v_exc); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 600, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 600, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_exc, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 600, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_11[0] = __pyx_t_10; __pyx_t_11[1] = __pyx_mstate_global->__pyx_kp_u__2; __pyx_t_11[2] = __pyx_t_8; __pyx_t_12 = 2; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11[0]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11[2]); #endif __pyx_t_13 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_13 |= __Pyx_PyUnicode_KIND_04(__pyx_t_11[0]) | __Pyx_PyUnicode_KIND_04(__pyx_t_11[2]); #endif __pyx_t_14 = __Pyx_PyUnicode_Join(__pyx_t_11, 3, __pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(4, 600, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_7 = __pyx_t_14; __pyx_t_14 = 0; }
+0601: return
{
}
goto __pyx_L7_try_return;
+0602: if isinstance(exc, TokenUnavailableError):
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_TokenUnavailableError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 602, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyObject_IsInstance(__pyx_v_exc, __pyx_t_7); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(4, 602, __pyx_L3_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_4) { /* … */ }
+0603: if exc.retry_after is not None:
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_retry_after); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 603, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = (__pyx_t_7 != Py_None); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_4) { /* … */ }
+0604: retry_after_ms = _tp_retry_after_ms(exc.retry_after)
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_retry_after); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 604, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_15 = __Pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_15 == (double)-1) && PyErr_Occurred())) __PYX_ERR(4, 604, __pyx_L3_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_retry_after_ms = __pyx_f_7questdb_7_client__tp_retry_after_ms(__pyx_t_15);
+0605: _tp_sink_text_error(sink, exc.retryable, retry_after_ms, str(exc))
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_retryable); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 605, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 605, __pyx_L3_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Unicode(__pyx_v_exc); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 605, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_7); __pyx_f_7questdb_7_client__tp_sink_text_error(__pyx_v_sink, __pyx_t_4, __pyx_v_retry_after_ms, ((PyObject*)__pyx_t_7)); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0606: return
{
}
goto __pyx_L7_try_return;
0607: # `InvalidApiCall` is the failure retrying can never clear, as for a
0608: # Rust provider or a C++ one throwing `invalid_api_call`: clients stop
0609: # reconnecting. A source's sink refuses it, and the exception then
0610: # counts as retryable like any other. A TokenUnavailableError, handled
0611: # above, keeps its classification whatever its code. Only the
0612: # provider's own `InvalidApiCall` stops its clients. A client call's
0613: # refusal that escapes the provider counts as retryable: a lease or
0614: # pool wait this callback gave up on (`_callback_wait_refused`), a
0615: # pool at its cap, a handle that is closing. That lease or pool is
0616: # busy, maybe waiting for this very token, not broken.
+0617: if (isinstance(exc, QuestDBError)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 617, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = PyObject_IsInstance(__pyx_v_exc, __pyx_t_7); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(4, 617, __pyx_L3_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_6) { } else { __pyx_t_4 = __pyx_t_6; goto __pyx_L23_bool_binop_done; } /* … */ if (__pyx_t_4) { /* … */ }
+0618: and getattr(exc, 'code', None)
__pyx_t_7 = __Pyx_GetAttr3(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_code, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 618, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_7);
+0619: is QuestDBErrorCode.InvalidApiCall
__Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_14)) __PYX_ERR(4, 619, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 619, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_6 = (__pyx_t_7 == __pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (__pyx_t_6) { } else { __pyx_t_4 = __pyx_t_6; goto __pyx_L23_bool_binop_done; }
+0620: and not getattr(exc, '_callback_wait_refused', False)
__pyx_t_8 = __Pyx_GetAttr3(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_callback_wait_refused, Py_False); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 620, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(4, 620, __pyx_L3_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = (!__pyx_t_6); if (__pyx_t_9) { } else { __pyx_t_4 = __pyx_t_9; goto __pyx_L23_bool_binop_done; }
+0621: and not _tp_raised_by_client(exc)
__pyx_t_9 = __pyx_f_7questdb_7_client__tp_raised_by_client(__pyx_v_exc); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(4, 621, __pyx_L3_error)
__pyx_t_6 = (!__pyx_t_9);
if (__pyx_t_6) {
} else {
__pyx_t_4 = __pyx_t_6;
goto __pyx_L23_bool_binop_done;
}
+0622: and _tp_sink_terminal_error(sink, str(exc))):
__pyx_t_8 = __Pyx_PyObject_Unicode(__pyx_v_exc); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 622, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __pyx_f_7questdb_7_client__tp_sink_terminal_error(__pyx_v_sink, ((PyObject*)__pyx_t_8)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(4, 622, __pyx_L3_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_4 = __pyx_t_6; __pyx_L23_bool_binop_done:;
+0623: return
{
}
goto __pyx_L7_try_return;
+0624: _tp_sink_text_error(
__pyx_f_7questdb_7_client__tp_sink_text_error(__pyx_v_sink, 1, -1L, ((PyObject*)__pyx_t_14));
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+0625: sink, True, -1, f'{_tp_exception_label(exc)}: {exc}')
__pyx_t_8 = __pyx_f_7questdb_7_client__tp_exception_label(__pyx_v_exc); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 625, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 625, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_exc, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 625, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_11[0] = __pyx_t_7; __pyx_t_11[1] = __pyx_mstate_global->__pyx_kp_u__2; __pyx_t_11[2] = __pyx_t_8; __pyx_t_12 = 2; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11[0]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11[2]); #endif __pyx_t_13 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_13 |= __Pyx_PyUnicode_KIND_04(__pyx_t_11[0]) | __Pyx_PyUnicode_KIND_04(__pyx_t_11[2]); #endif __pyx_t_14 = __Pyx_PyUnicode_Join(__pyx_t_11, 3, __pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(4, 625, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+0626: except BaseException as check_exc:
__pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_13) { __Pyx_AddTraceback("questdb._client._tp_sink_exception", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_14, &__pyx_t_8, &__pyx_t_7) < 0) __PYX_ERR(4, 626, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __pyx_v_check_exc = __pyx_t_8; /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ __Pyx_DECREF(__pyx_v_check_exc); __pyx_v_check_exc = 0; goto __pyx_L34; } __pyx_L34:; } __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L4_exception_handled; } goto __pyx_L5_except_error;
+0627: _tp_sink_interrupted_while_classifying(sink, check_exc, signal_codes)
__pyx_f_7questdb_7_client__tp_sink_interrupted_while_classifying(__pyx_v_sink, __pyx_v_check_exc, __pyx_v_signal_codes);
}
0628:
0629:
+0630: cdef bint _tp_park_if_interrupted(object exc, object signal_codes) noexcept:
static int __pyx_f_7questdb_7_client__tp_park_if_interrupted(PyObject *__pyx_v_exc, PyObject *__pyx_v_signal_codes) {
PyObject *__pyx_v_check_exc = NULL;
int __pyx_r;
__Pyx_INCREF(__pyx_v_exc);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_WriteUnraisable("questdb._client._tp_park_if_interrupted", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_check_exc);
__Pyx_XDECREF(__pyx_v_exc);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0631: """Park ``exc`` for the main thread if it interrupted the callback.
0632:
0633: The caller's exception -- one that is no ``Exception``, such as
0634: ``KeyboardInterrupt``, or one a Python signal handler raised while the
0635: callback ran -- is parked and raised on the main thread once the
0636: transport call returns. Anything else is the callback's own failure,
0637: which its caller reports to the sink. Only the main thread runs Python
0638: signal handlers, so nothing is parked elsewhere. True if ``exc``, or an
0639: exception raised while testing it, was parked.
0640: """
+0641: if questdb_thread_ident() != _OIDC_MAIN_THREAD_IDENT:
__pyx_t_1 = (PyThread_get_thread_ident() != __pyx_v_7questdb_7_client__OIDC_MAIN_THREAD_IDENT);
if (__pyx_t_1) {
/* … */
}
+0642: return False
{
__pyx_r = 0;
}
goto __pyx_L0;
+0643: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L9_try_end;
__pyx_L4_error:;
/* … */
__pyx_L6_except_error:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L1_error;
__pyx_L8_try_return:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L0;
__pyx_L5_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
__pyx_L9_try_end:;
}
+0644: if (isinstance(exc, Exception)
__pyx_t_5 = __Pyx_PyExc_Exception_Check(__pyx_v_exc);
if (__pyx_t_5) {
} else {
__pyx_t_1 = __pyx_t_5;
goto __pyx_L11_bool_binop_done;
}
/* … */
if (__pyx_t_1) {
/* … */
}
+0645: and not _oidc_raised_in_signal_handler(exc, signal_codes)):
__pyx_t_5 = __pyx_f_7questdb_7_client__oidc_raised_in_signal_handler(__pyx_v_exc, __pyx_v_signal_codes); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(4, 645, __pyx_L4_error)
__pyx_t_6 = (!__pyx_t_5);
__pyx_t_1 = __pyx_t_6;
__pyx_L11_bool_binop_done:;
+0646: return False
{
__pyx_r = 0;
}
goto __pyx_L8_try_return;
+0647: except BaseException as check_exc:
__pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_7) { __Pyx_AddTraceback("questdb._client._tp_park_if_interrupted", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(4, 647, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_9); __pyx_v_check_exc = __pyx_t_9; /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ __Pyx_DECREF(__pyx_v_check_exc); __pyx_v_check_exc = 0; goto __pyx_L19; } __pyx_L19:; } __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error;
0648: # The test runs Python too, where a second pending signal's handler
0649: # can raise: that exception is the caller's.
+0650: exc = check_exc
__Pyx_INCREF(__pyx_v_check_exc); __Pyx_DECREF_SET(__pyx_v_exc, __pyx_v_check_exc); }
+0651: _oidc_park_main(exc)
__pyx_f_7questdb_7_client__oidc_park_main(__pyx_v_exc);
+0652: return True
{
__pyx_r = 1;
}
goto __pyx_L0;
0653:
0654:
+0655: cdef void _tp_sink_interrupted_while_classifying(
static void __pyx_f_7questdb_7_client__tp_sink_interrupted_while_classifying(struct questdb_token_sink *__pyx_v_sink, PyObject *__pyx_v_exc, PyObject *__pyx_v_signal_codes) {
char const *__pyx_v_msg;
/* … */
/* function exit code */
}
0656: questdb_token_sink* sink, object exc, object signal_codes) noexcept:
0657: """Report a failure whose classification itself raised ``exc``.
0658:
0659: Classifying runs Python -- the signal-handler test, the failure's
0660: ``__str__`` and attributes -- so on the main thread a pending signal's
0661: handler can raise there, and its exception is the caller's: park it, as
0662: the OIDC dispatchers do, rather than lose it with the failure. The
0663: dispatcher schedules its delivery on the way out. Any other exception --
0664: a ``__str__`` that raises, say -- is this callback's own failure, reported
0665: as on any other thread rather than raised later into the caller's code.
0666: """
+0667: cdef const char* msg = b'the token callback failed'
__pyx_v_msg = __pyx_k_the_token_callback_failed;
+0668: if _tp_park_if_interrupted(exc, signal_codes):
__pyx_t_1 = __pyx_f_7questdb_7_client__tp_park_if_interrupted(__pyx_v_exc, __pyx_v_signal_codes);
if (__pyx_t_1) {
/* … */
}
+0669: msg = b'the token callback was interrupted'
__pyx_v_msg = __pyx_k_the_token_callback_was_interrupt;
+0670: questdb_token_sink_set_error(sink, True, -1, msg, strlen(msg))
(void)(questdb_token_sink_set_error(__pyx_v_sink, 1, -1L, __pyx_v_msg, strlen(__pyx_v_msg)));
0671:
0672:
+0673: cdef void _tp_sink_unavailable(questdb_token_sink* sink) noexcept nogil:
static void __pyx_f_7questdb_7_client__tp_sink_unavailable(struct questdb_token_sink *__pyx_v_sink) {
char const *__pyx_v_msg;
/* … */
/* function exit code */
}
+0674: cdef const char* msg = (
__pyx_v_msg = __pyx_k_the_Python_interpreter_is_shutti;
0675: b'the Python interpreter is shutting down, so the Python token '
0676: b'callback cannot run')
+0677: questdb_token_sink_set_error(sink, True, -1, msg, strlen(msg))
(void)(questdb_token_sink_set_error(__pyx_v_sink, 1, -1L, __pyx_v_msg, strlen(__pyx_v_msg)));
0678:
0679:
+0680: cdef inline bint _tp_main_thread_before_finalization() noexcept nogil:
static CYTHON_INLINE int __pyx_f_7questdb_7_client__tp_main_thread_before_finalization(void) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
0681: """Whether a provider callback the exit gate refused may run anyway.
0682:
0683: questdb's atexit hook (`_oidc_detach_diagnostics_at_exit`) closes the
0684: callback gate so that no native thread is entering Python when
0685: finalization begins. The main thread runs the atexit callbacks that come
0686: after that hook -- `logging.shutdown()`, and any registered before
0687: `import questdb` -- and only then finalizes the interpreter. A provider
0688: callback it makes from inside its own native call, such as an ILP/HTTP
0689: flush from a logging handler, therefore returns before finalization can
0690: start, and needs no drain. Refusing it failed that flush and lost its
0691: rows. Callbacks on any other thread -- a QWP/WebSocket connect, a
0692: refreshing provider's refresher -- stay refused.
0693: """
+0694: return (questdb_thread_ident() == _OIDC_MAIN_THREAD_IDENT
__pyx_t_2 = (PyThread_get_thread_ident() == __pyx_v_7questdb_7_client__OIDC_MAIN_THREAD_IDENT);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L3_bool_binop_done;
}
+0695: and not qdb_py_is_finalizing())
__pyx_t_2 = (!qdb_py_is_finalizing());
__pyx_t_1 = __pyx_t_2;
__pyx_L3_bool_binop_done:;
{
__pyx_r = __pyx_t_1;
}
goto __pyx_L0;
0696:
0697:
+0698: cdef void _token_source_dispatch(
static void __pyx_f_7questdb_7_client__token_source_dispatch(size_t __pyx_v_callback_id, struct questdb_token_sink *__pyx_v_sink) {
PyObject *__pyx_v_source = 0;
struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_handle = 0;
PyObject *__pyx_v_encoded = 0;
PyObject *__pyx_v_result = 0;
PyObject *__pyx_v_token = 0;
int __pyx_v_entered;
int __pyx_v_on_main;
int __pyx_v_counted;
PyObject *__pyx_v_region = 0;
PyObject *__pyx_v_expires_ms = NULL;
PyObject *__pyx_v_refresh_ms = NULL;
PyObject *__pyx_v_exc = NULL;
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_WriteUnraisable("questdb._client._token_source_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_source);
__Pyx_XDECREF((PyObject *)__pyx_v_handle);
__Pyx_XDECREF(__pyx_v_encoded);
__Pyx_XDECREF(__pyx_v_result);
__Pyx_XDECREF(__pyx_v_token);
__Pyx_XDECREF(__pyx_v_region);
__Pyx_XDECREF(__pyx_v_expires_ms);
__Pyx_XDECREF(__pyx_v_refresh_ms);
__Pyx_XDECREF(__pyx_v_exc);
__Pyx_RefNannyFinishContext();
__Pyx_PyGILState_Release(__pyx_gilstate_save);
}
0699: size_t callback_id, questdb_token_sink* sink) noexcept with gil:
0700: cdef object source
0701: cdef _TokenProviderHandle handle
0702: cdef bytes encoded
+0703: cdef object result = None
__Pyx_INCREF(Py_None);
__pyx_v_result = Py_None;
+0704: cdef object token = None
__Pyx_INCREF(Py_None);
__pyx_v_token = Py_None;
+0705: cdef bint entered = False
__pyx_v_entered = 0;
+0706: cdef bint on_main = questdb_thread_ident() == _OIDC_MAIN_THREAD_IDENT
__pyx_v_on_main = (PyThread_get_thread_ident() == __pyx_v_7questdb_7_client__OIDC_MAIN_THREAD_IDENT);
+0707: cdef bint counted = _token_callback_enter()
__pyx_v_counted = __pyx_f_7questdb_7_client__token_callback_enter();
+0708: cdef object region = None
__Pyx_INCREF(Py_None);
__pyx_v_region = Py_None;
+0709: if on_main:
if (__pyx_v_on_main) {
/* … */
}
+0710: region = _oidc_main_region_enter(_OIDC_REGION_TOKEN)
__pyx_t_1 = __pyx_f_7questdb_7_client__oidc_main_region_enter(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_region, __pyx_t_1); __pyx_t_1 = 0;
+0711: try:
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L12_try_end;
__pyx_L7_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L9_except_error:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L5_error;
__pyx_L11_try_return:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L4_return;
__pyx_L8_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
__pyx_L12_try_end:;
}
}
+0712: handle = _token_callback_get(callback_id)
__pyx_t_1 = ((PyObject *)__pyx_f_7questdb_7_client__token_callback_get(__pyx_v_callback_id)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 712, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_1); __pyx_t_1 = 0;
+0713: if handle is None:
__pyx_t_5 = (((PyObject *)__pyx_v_handle) == Py_None);
if (__pyx_t_5) {
/* … */
}
+0714: _tp_sink_text_error(
__pyx_f_7questdb_7_client__tp_sink_text_error(__pyx_v_sink, 1, -1L, __pyx_mstate_global->__pyx_kp_u_the_token_source_was_released);
0715: sink, True, -1, 'the token source was released')
+0716: return
{
}
goto __pyx_L11_try_return;
0717: # Native serializes source calls. Mark this one in progress BEFORE
0718: # checking `_source_closed`, which `close()` sets before it waits on
0719: # `_source_done`: either that wait sees the event cleared and waits
0720: # for this call, or this check sees the flag and the source never
0721: # runs. Checked first, a thread switch inside `clear()` -- Python
0722: # code -- let `close(wait=True)` return before the source ran.
+0723: entered = True
__pyx_v_entered = 1;
+0724: handle._source_done.clear()
__pyx_t_6 = __pyx_v_handle->_source_done;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_clear, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 724, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0725: if handle._source_closed:
if (__pyx_v_handle->_source_closed) {
/* … */
}
+0726: _tp_sink_text_error(sink, False, -1, 'the token provider is closed')
__pyx_f_7questdb_7_client__tp_sink_text_error(__pyx_v_sink, 0, -1L, __pyx_mstate_global->__pyx_kp_u_the_token_provider_is_closed);
+0727: return
{
}
goto __pyx_L11_try_return;
+0728: source = handle._target
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_handle), __pyx_mstate_global->__pyx_n_u_target_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 728, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_source = __pyx_t_1; __pyx_t_1 = 0;
+0729: if source is None:
__pyx_t_5 = (__pyx_v_source == Py_None);
if (__pyx_t_5) {
/* … */
}
+0730: _tp_sink_text_error(
__pyx_f_7questdb_7_client__tp_sink_text_error(__pyx_v_sink, 1, -1L, __pyx_mstate_global->__pyx_kp_u_the_token_source_was_released);
0731: sink, True, -1, 'the token source was released')
+0732: return
{
}
goto __pyx_L11_try_return;
+0733: handle._source_thread = questdb_thread_ident()
__pyx_v_handle->_source_thread = PyThread_get_thread_ident();
+0734: result = source()
__pyx_t_6 = NULL;
__Pyx_INCREF(__pyx_v_source);
__pyx_t_8 = __pyx_v_source;
__pyx_t_7 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_8))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
assert(__pyx_t_6);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
__pyx_t_7 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 734, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF_SET(__pyx_v_result, __pyx_t_1);
__pyx_t_1 = 0;
+0735: token, expires_ms, refresh_ms = _tp_result_parts(result)
__pyx_t_1 = __pyx_f_7questdb_7_client__tp_result_parts(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 735, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_1); if (likely(__pyx_t_1 != Py_None)) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(sequence); if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(4, 735, __pyx_L7_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_8); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_6); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 2); __Pyx_INCREF(__pyx_t_9); #else __pyx_t_8 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 735, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 735, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = __Pyx_PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 735, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_9); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(4, 735, __pyx_L7_error) } __Pyx_DECREF_SET(__pyx_v_token, __pyx_t_8); __pyx_t_8 = 0; __pyx_v_expires_ms = __pyx_t_6; __pyx_t_6 = 0; __pyx_v_refresh_ms = __pyx_t_9; __pyx_t_9 = 0;
+0736: encoded = token.encode('utf-8')
__pyx_t_9 = __pyx_v_token;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_utf_8};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 736, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_1);
}
if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_1))) __PYX_ERR(4, 736, __pyx_L7_error)
__pyx_v_encoded = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
+0737: if not questdb_token_sink_set_token(
__pyx_t_5 = (!questdb_token_sink_set_token(__pyx_v_sink, __pyx_t_10, __pyx_t_11, __pyx_t_12, __pyx_t_13));
if (__pyx_t_5) {
/* … */
}
+0738: sink, encoded, len(encoded), expires_ms, refresh_ms):
if (unlikely(__pyx_v_encoded == Py_None)) {
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(4, 738, __pyx_L7_error)
}
__pyx_t_10 = __Pyx_PyBytes_AsString(__pyx_v_encoded); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(4, 738, __pyx_L7_error)
if (unlikely(__pyx_v_encoded == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(4, 738, __pyx_L7_error)
}
__pyx_t_11 = __Pyx_PyBytes_GET_SIZE(__pyx_v_encoded); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(4, 738, __pyx_L7_error)
__pyx_t_12 = __Pyx_PyLong_As_int64_t(__pyx_v_expires_ms); if (unlikely((__pyx_t_12 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(4, 738, __pyx_L7_error)
__pyx_t_13 = __Pyx_PyLong_As_int64_t(__pyx_v_refresh_ms); if (unlikely((__pyx_t_13 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(4, 738, __pyx_L7_error)
+0739: _tp_sink_text_error(
__pyx_f_7questdb_7_client__tp_sink_text_error(__pyx_v_sink, 1, -1L, __pyx_mstate_global->__pyx_kp_u_the_token_source_returned_an_unu);
0740: sink, True, -1, 'the token source returned an unusable token')
+0741: except BaseException as exc:
__pyx_t_14 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_14) { __Pyx_AddTraceback("questdb._client._token_source_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_9, &__pyx_t_6) < 0) __PYX_ERR(4, 741, __pyx_L9_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_9); __pyx_v_exc = __pyx_t_9; /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; goto __pyx_L23; } __pyx_L22_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22); if ( unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_21); __Pyx_XGOTREF(__pyx_t_22); __pyx_t_14 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename; { __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; } __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_XGIVEREF(__pyx_t_22); __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19); __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_lineno = __pyx_t_14; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16; goto __pyx_L9_except_error; } __pyx_L23:; } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L8_exception_handled; } goto __pyx_L9_except_error;
+0742: _tp_sink_exception(sink, exc, {}, None)
__pyx_t_8 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 742, __pyx_L22_error) __Pyx_GOTREF(__pyx_t_8); __pyx_f_7questdb_7_client__tp_sink_exception(__pyx_v_sink, __pyx_v_exc, __pyx_t_8, Py_None); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; }
0743: finally:
+0744: if entered:
/*finally:*/ {
/*normal exit:*/{
if (__pyx_v_entered) {
/* … */
}
/* … */
if (__pyx_v_entered) {
/* … */
}
/* … */
if (__pyx_v_entered) {
/* … */
}
0745: # Drop user result/source locals before signalling the drain: their
0746: # destructors can run Python too.
+0747: result = None
__Pyx_INCREF(Py_None); __Pyx_DECREF_SET(__pyx_v_result, Py_None); /* … */ __Pyx_INCREF(Py_None); __Pyx_DECREF_SET(__pyx_v_result, Py_None); /* … */ __Pyx_INCREF(Py_None); __Pyx_DECREF_SET(__pyx_v_result, Py_None);
+0748: token = None
__Pyx_INCREF(Py_None); __Pyx_DECREF_SET(__pyx_v_token, Py_None); /* … */ __Pyx_INCREF(Py_None); __Pyx_DECREF_SET(__pyx_v_token, Py_None); /* … */ __Pyx_INCREF(Py_None); __Pyx_DECREF_SET(__pyx_v_token, Py_None);
+0749: source = None
__Pyx_INCREF(Py_None); __Pyx_XDECREF_SET(__pyx_v_source, Py_None); /* … */ __Pyx_INCREF(Py_None); __Pyx_XDECREF_SET(__pyx_v_source, Py_None); /* … */ __Pyx_INCREF(Py_None); __Pyx_XDECREF_SET(__pyx_v_source, Py_None);
+0750: handle._source_thread = 0
if (unlikely(!__pyx_v_handle)) { __Pyx_RaiseUnboundLocalError("handle"); __PYX_ERR(4, 750, __pyx_L1_error) }
__pyx_v_handle->_source_thread = 0;
/* … */
if (unlikely(!__pyx_v_handle)) { __Pyx_RaiseUnboundLocalError("handle"); __PYX_ERR(4, 750, __pyx_L32_error) }
__pyx_v_handle->_source_thread = 0;
/* … */
if (unlikely(!__pyx_v_handle)) { __Pyx_RaiseUnboundLocalError("handle"); __PYX_ERR(4, 750, __pyx_L1_error) }
__pyx_v_handle->_source_thread = 0;
+0751: handle._source_done.set()
if (unlikely(!__pyx_v_handle)) { __Pyx_RaiseUnboundLocalError("handle"); __PYX_ERR(4, 751, __pyx_L1_error) }
__pyx_t_9 = __pyx_v_handle->_source_done;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
__pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
if (unlikely(!__pyx_v_handle)) { __Pyx_RaiseUnboundLocalError("handle"); __PYX_ERR(4, 751, __pyx_L32_error) }
__pyx_t_9 = __pyx_v_handle->_source_done;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
__pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 751, __pyx_L32_error)
__Pyx_GOTREF(__pyx_t_6);
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
if (unlikely(!__pyx_v_handle)) { __Pyx_RaiseUnboundLocalError("handle"); __PYX_ERR(4, 751, __pyx_L1_error) }
__pyx_t_9 = __pyx_v_handle->_source_done;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
__pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 751, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+0752: if on_main:
if (__pyx_v_on_main) {
/* … */
}
/* … */
if (__pyx_v_on_main) {
/* … */
}
/* … */
if (__pyx_v_on_main) {
/* … */
}
+0753: _oidc_main_region_exit(_OIDC_REGION_TOKEN, region)
__pyx_f_7questdb_7_client__oidc_main_region_exit(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN, __pyx_v_region);
/* … */
__pyx_f_7questdb_7_client__oidc_main_region_exit(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN, __pyx_v_region);
/* … */
__pyx_f_7questdb_7_client__oidc_main_region_exit(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN, __pyx_v_region);
+0754: if not _oidc_main_region_active(_OIDC_REGION_TOKEN):
__pyx_t_5 = (!__pyx_f_7questdb_7_client__oidc_main_region_active(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN));
if (__pyx_t_5) {
/* … */
}
/* … */
__pyx_t_5 = (!__pyx_f_7questdb_7_client__oidc_main_region_active(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN));
if (__pyx_t_5) {
/* … */
}
/* … */
__pyx_t_5 = (!__pyx_f_7questdb_7_client__oidc_main_region_active(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN));
if (__pyx_t_5) {
/* … */
}
+0755: _oidc_schedule_parked_main()
__pyx_f_7questdb_7_client__oidc_schedule_parked_main();
/* … */
__pyx_f_7questdb_7_client__oidc_schedule_parked_main();
/* … */
__pyx_f_7questdb_7_client__oidc_schedule_parked_main();
+0756: _token_callback_exit(counted)
__pyx_f_7questdb_7_client__token_callback_exit(__pyx_v_counted);
goto __pyx_L6;
}
__pyx_L5_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
if ( unlikely(__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2) < 0)) __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_22);
__Pyx_XGOTREF(__pyx_t_21);
__Pyx_XGOTREF(__pyx_t_20);
__pyx_t_15 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
{
/* … */
__pyx_f_7questdb_7_client__token_callback_exit(__pyx_v_counted);
}
__Pyx_XGIVEREF(__pyx_t_22);
__Pyx_XGIVEREF(__pyx_t_21);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_ExceptionReset(__pyx_t_22, __pyx_t_21, __pyx_t_20);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_ErrRestore(__pyx_t_4, __pyx_t_3, __pyx_t_2);
__pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0;
__pyx_lineno = __pyx_t_15; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_16;
goto __pyx_L1_error;
__pyx_L32_error:;
__Pyx_XGIVEREF(__pyx_t_22);
__Pyx_XGIVEREF(__pyx_t_21);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_ExceptionReset(__pyx_t_22, __pyx_t_21, __pyx_t_20);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0;
goto __pyx_L1_error;
}
__pyx_L4_return: {
/* … */
__pyx_f_7questdb_7_client__token_callback_exit(__pyx_v_counted);
goto __pyx_L0;
}
__pyx_L6:;
}
0757:
0758:
+0759: cdef void _token_source_trampoline(
static void __pyx_f_7questdb_7_client__token_source_trampoline(void *__pyx_v_user_data, struct questdb_token_sink *__pyx_v_sink) {
qdb_oidc_callback_gate *__pyx_v_gate;
/* … */
/* function exit code */
__pyx_L0:;
}
0760: void* user_data, questdb_token_sink* sink) noexcept nogil:
+0761: cdef qdb_oidc_callback_gate* gate = qdb_oidc_callback_enter()
__pyx_v_gate = qdb_oidc_callback_enter();
+0762: if gate == NULL:
__pyx_t_1 = (__pyx_v_gate == NULL);
if (__pyx_t_1) {
/* … */
}
+0763: _tp_sink_unavailable(sink)
__pyx_f_7questdb_7_client__tp_sink_unavailable(__pyx_v_sink);
+0764: return
{
}
goto __pyx_L0;
+0765: try:
/*try:*/ {
+0766: if qdb_py_is_finalizing():
__pyx_t_1 = qdb_py_is_finalizing();
if (__pyx_t_1) {
/* … */
}
+0767: _tp_sink_unavailable(sink)
__pyx_f_7questdb_7_client__tp_sink_unavailable(__pyx_v_sink);
+0768: return
{
}
goto __pyx_L4_return;
+0769: qdb_oidc_callback_before_gil(gate)
qdb_oidc_callback_before_gil(__pyx_v_gate);
+0770: if qdb_oidc_callback_stopped(gate):
__pyx_t_1 = qdb_oidc_callback_stopped(__pyx_v_gate);
if (__pyx_t_1) {
/* … */
}
+0771: _tp_sink_unavailable(sink)
__pyx_f_7questdb_7_client__tp_sink_unavailable(__pyx_v_sink);
+0772: return
{
}
goto __pyx_L4_return;
+0773: _token_source_dispatch(<size_t>user_data, sink)
__pyx_f_7questdb_7_client__token_source_dispatch(((size_t)__pyx_v_user_data), __pyx_v_sink); }
0774: finally:
+0775: qdb_oidc_callback_leave(gate)
/*finally:*/ {
/*normal exit:*/{
qdb_oidc_callback_leave(__pyx_v_gate);
goto __pyx_L6;
}
__pyx_L4_return: {
qdb_oidc_callback_leave(__pyx_v_gate);
goto __pyx_L0;
}
__pyx_L6:;
}
0776:
0777:
+0778: cdef void _token_get_dispatch(
static void __pyx_f_7questdb_7_client__token_get_dispatch(size_t __pyx_v_callback_id, struct questdb_token_sink *__pyx_v_sink) {
PyObject *__pyx_v_provider = 0;
struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_handle = 0;
PyObject *__pyx_v_encoded = 0;
PyObject *__pyx_v_signal_codes = 0;
int __pyx_v_on_main;
int __pyx_v_counted;
PyObject *__pyx_v_region = 0;
PyObject *__pyx_v_exc = NULL;
PyObject *__pyx_v_token = NULL;
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_XDECREF(__pyx_t_19);
__Pyx_WriteUnraisable("questdb._client._token_get_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_provider);
__Pyx_XDECREF((PyObject *)__pyx_v_handle);
__Pyx_XDECREF(__pyx_v_encoded);
__Pyx_XDECREF(__pyx_v_signal_codes);
__Pyx_XDECREF(__pyx_v_region);
__Pyx_XDECREF(__pyx_v_exc);
__Pyx_XDECREF(__pyx_v_token);
__Pyx_RefNannyFinishContext();
__Pyx_PyGILState_Release(__pyx_gilstate_save);
}
0779: size_t callback_id, questdb_token_sink* sink) noexcept with gil:
0780: # Bound before the `try`: the error path passes it on, and reading it
0781: # unbound there would raise in this noexcept callback instead of
0782: # reporting the failure to the sink.
+0783: cdef object provider = None
__Pyx_INCREF(Py_None);
__pyx_v_provider = Py_None;
0784: cdef _TokenProviderHandle handle
0785: cdef bytes encoded
0786: # A mapping like `_oidc_signal_handler_codes()` returns, even before that
0787: # snapshot is taken: the error path below looks codes up in it.
+0788: cdef object signal_codes = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 788, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_signal_codes = __pyx_t_1; __pyx_t_1 = 0;
+0789: cdef bint on_main = questdb_thread_ident() == _OIDC_MAIN_THREAD_IDENT
__pyx_v_on_main = (PyThread_get_thread_ident() == __pyx_v_7questdb_7_client__OIDC_MAIN_THREAD_IDENT);
+0790: cdef bint counted = _token_callback_enter()
__pyx_v_counted = __pyx_f_7questdb_7_client__token_callback_enter();
+0791: cdef object region = None
__Pyx_INCREF(Py_None);
__pyx_v_region = Py_None;
+0792: if on_main:
if (__pyx_v_on_main) {
/* … */
}
+0793: region = _oidc_main_region_enter(_OIDC_REGION_TOKEN)
__pyx_t_1 = __pyx_f_7questdb_7_client__oidc_main_region_enter(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 793, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_region, __pyx_t_1); __pyx_t_1 = 0;
+0794: try:
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L12_try_end;
__pyx_L7_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
__Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
/* … */
__pyx_L9_except_error:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L5_error;
__pyx_L11_try_return:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L4_return;
__pyx_L8_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
__pyx_L12_try_end:;
}
}
+0795: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L18_try_end;
__pyx_L13_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
__pyx_L15_except_error:;
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
goto __pyx_L7_error;
__pyx_L14_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
__pyx_L18_try_end:;
}
+0796: PyErr_CheckSignals()
__pyx_t_8 = PyErr_CheckSignals(); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 796, __pyx_L13_error)
+0797: if CYTHON_COMPILING_IN_PYPY:
__pyx_t_9 = (CYTHON_COMPILING_IN_PYPY != 0);
if (__pyx_t_9) {
/* … */
}
+0798: _oidc_signal_tick()
__pyx_t_10 = __pyx_f_7questdb_7_client__oidc_signal_tick(); if (unlikely(__pyx_t_10 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(4, 798, __pyx_L13_error)
+0799: except BaseException as exc:
__pyx_t_8 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_8) { __Pyx_AddTraceback("questdb._client._token_get_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(4, 799, __pyx_L15_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_11); __pyx_v_exc = __pyx_t_11; /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; goto __pyx_L26; } __pyx_L26:; } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L14_exception_handled; } goto __pyx_L15_except_error;
+0800: if on_main:
if (__pyx_v_on_main) {
/* … */
}
}
0801: # Use the native-return fallback on PyPy too. Re-arming SIGINT
0802: # here would deliver it into the next token retry again.
+0803: _oidc_park_main(exc)
__pyx_f_7questdb_7_client__oidc_park_main(__pyx_v_exc);
+0804: handle = _token_callback_get(callback_id)
__pyx_t_12 = ((PyObject *)__pyx_f_7questdb_7_client__token_callback_get(__pyx_v_callback_id)); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 804, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_12); __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_12); __pyx_t_12 = 0;
+0805: if handle is None:
__pyx_t_9 = (((PyObject *)__pyx_v_handle) == Py_None);
if (__pyx_t_9) {
/* … */
}
+0806: _tp_sink_text_error(
__pyx_f_7questdb_7_client__tp_sink_text_error(__pyx_v_sink, 1, -1L, __pyx_mstate_global->__pyx_kp_u_the_token_provider_was_released);
0807: sink, True, -1, 'the token provider was released')
+0808: return
{
}
goto __pyx_L11_try_return;
+0809: provider = handle._target
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_handle), __pyx_mstate_global->__pyx_n_u_target_2); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 809, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF_SET(__pyx_v_provider, __pyx_t_12); __pyx_t_12 = 0;
+0810: if provider is None:
__pyx_t_9 = (__pyx_v_provider == Py_None);
if (__pyx_t_9) {
/* … */
}
+0811: _tp_sink_text_error(
__pyx_f_7questdb_7_client__tp_sink_text_error(__pyx_v_sink, 1, -1L, __pyx_mstate_global->__pyx_kp_u_the_token_provider_was_released);
0812: sink, True, -1, 'the token provider was released')
+0813: return
{
}
goto __pyx_L11_try_return;
+0814: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L35_try_end;
__pyx_L30_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
__pyx_L32_except_error:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
goto __pyx_L7_error;
__pyx_L33_except_return:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
goto __pyx_L11_try_return;
__pyx_L35_try_end:;
}
+0815: signal_codes = _oidc_signal_handler_codes() if on_main else {}
if (__pyx_v_on_main) {
__pyx_t_11 = __pyx_f_7questdb_7_client__oidc_signal_handler_codes(); if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 815, __pyx_L30_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __pyx_t_11;
__pyx_t_11 = 0;
} else {
__pyx_t_11 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 815, __pyx_L30_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __pyx_t_11;
__pyx_t_11 = 0;
}
__Pyx_DECREF_SET(__pyx_v_signal_codes, __pyx_t_12);
__pyx_t_12 = 0;
+0816: except BaseException as exc:
__pyx_t_8 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_8) { __Pyx_AddTraceback("questdb._client._token_get_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_11, &__pyx_t_1) < 0) __PYX_ERR(4, 816, __pyx_L32_except_error) __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_11); __pyx_v_exc = __pyx_t_11; /*try:*/ { /* … */ /*finally:*/ { __pyx_L40_return: { __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; goto __pyx_L33_except_return; } } } goto __pyx_L32_except_error;
0817: # The snapshot runs no provider code: a pending signal's handler
0818: # raised.
+0819: _oidc_park_main(exc)
__pyx_f_7questdb_7_client__oidc_park_main(__pyx_v_exc);
+0820: _tp_sink_text_error(
__pyx_f_7questdb_7_client__tp_sink_text_error(__pyx_v_sink, 1, -1L, __pyx_mstate_global->__pyx_kp_u_the_token_callback_was_interrupt);
0821: sink, True, -1, 'the token callback was interrupted')
+0822: return
{
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
goto __pyx_L40_return;
}
+0823: token = provider.token()
__pyx_t_11 = __pyx_v_provider;
__Pyx_INCREF(__pyx_t_11);
__pyx_t_13 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_token, __pyx_callargs+__pyx_t_13, (1-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 823, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_v_token = __pyx_t_1;
__pyx_t_1 = 0;
0824: # A value that is no usable token is a provider bug no retry can fix,
0825: # as native treats an empty or non-printable token: report it as
0826: # permanent, so that a connect the caller waits for, a dataframe()
0827: # call and an ILP/HTTP flush end at once rather than calling the
0828: # provider for their whole retry budget. Background reconnects keep
0829: # retrying whatever the classification.
+0830: if not isinstance(token, str):
__pyx_t_9 = PyUnicode_Check(__pyx_v_token);
__pyx_t_14 = (!__pyx_t_9);
if (__pyx_t_14) {
/* … */
}
+0831: _tp_sink_text_error(
__pyx_f_7questdb_7_client__tp_sink_text_error(__pyx_v_sink, 0, -1L, ((PyObject*)__pyx_t_1));
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
0832: sink, False, -1,
+0833: 'TypeError: a token provider must return a str, not '
__pyx_t_16 = 116;
#if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
__pyx_t_16 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15[1]);
#endif
__pyx_t_8 = 0;
#if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
__pyx_t_8 |= __Pyx_PyUnicode_KIND_04(__pyx_t_15[1]);
#endif
__pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_15, 3, __pyx_t_16, __pyx_t_8);
if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 833, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+0834: f'{_fqn(type(token))}; wrap a source that returns an expiry '
__pyx_t_1 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_token)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 834, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = __Pyx_PyUnicode_Unicode(__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 834, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_15[0] = __pyx_mstate_global->__pyx_kp_u_TypeError_a_token_provider_must; __pyx_t_15[1] = __pyx_t_11; __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u_wrap_a_source_that_returns_an_e;
0835: 'in RefreshingTokenProvider')
+0836: return
{
}
goto __pyx_L11_try_return;
+0837: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L49_try_end;
__pyx_L44_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
__pyx_L46_except_error:;
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
goto __pyx_L7_error;
__pyx_L47_except_return:;
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
goto __pyx_L11_try_return;
__pyx_L49_try_end:;
}
+0838: encoded = token.encode('utf-8')
__pyx_t_11 = __pyx_v_token;
__Pyx_INCREF(__pyx_t_11);
__pyx_t_13 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_mstate_global->__pyx_kp_u_utf_8};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 838, __pyx_L44_error)
__Pyx_GOTREF(__pyx_t_1);
}
if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_1))) __PYX_ERR(4, 838, __pyx_L44_error)
__pyx_v_encoded = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
+0839: except UnicodeEncodeError as exc:
__pyx_t_8 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_UnicodeEncodeError)))); if (__pyx_t_8) { __Pyx_AddTraceback("questdb._client._token_get_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(4, 839, __pyx_L46_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_11); __pyx_v_exc = ((PyObject*)__pyx_t_11); /*try:*/ { /* … */ /*finally:*/ { __pyx_L55_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_27, &__pyx_t_28); if ( unlikely(__Pyx_GetException(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25) < 0)) __Pyx_ErrFetch(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25); __Pyx_XGOTREF(__pyx_t_23); __Pyx_XGOTREF(__pyx_t_24); __Pyx_XGOTREF(__pyx_t_25); __Pyx_XGOTREF(__pyx_t_26); __Pyx_XGOTREF(__pyx_t_27); __Pyx_XGOTREF(__pyx_t_28); __pyx_t_8 = __pyx_lineno; __pyx_t_21 = __pyx_clineno; __pyx_t_22 = __pyx_filename; { __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; } __Pyx_XGIVEREF(__pyx_t_26); __Pyx_XGIVEREF(__pyx_t_27); __Pyx_XGIVEREF(__pyx_t_28); __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_27, __pyx_t_28); __Pyx_XGIVEREF(__pyx_t_23); __Pyx_XGIVEREF(__pyx_t_24); __Pyx_XGIVEREF(__pyx_t_25); __Pyx_ErrRestore(__pyx_t_23, __pyx_t_24, __pyx_t_25); __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_21; __pyx_filename = __pyx_t_22; goto __pyx_L46_except_error; } __pyx_L54_return: { __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; goto __pyx_L47_except_return; } } } goto __pyx_L46_except_error;
0840: # Name the position only: the message must not carry the token.
+0841: _tp_sink_text_error(
__pyx_f_7questdb_7_client__tp_sink_text_error(__pyx_v_sink, 0, -1L, ((PyObject*)__pyx_t_17));
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
0842: sink, False, -1,
+0843: 'ValueError: the token provider returned a str that is not '
__pyx_t_16 = 87;
#if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
__pyx_t_16 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_20[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_20[3]);
#endif
__pyx_t_8 = 0;
#if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
__pyx_t_8 |= __Pyx_PyUnicode_KIND_04(__pyx_t_20[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_20[3]);
#endif
__pyx_t_17 = __Pyx_PyUnicode_Join(__pyx_t_20, 5, __pyx_t_16, __pyx_t_8);
if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 843, __pyx_L55_error)
__Pyx_GOTREF(__pyx_t_17);
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
__Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+0844: f'valid Unicode ({exc.reason} at position {exc.start})')
__pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_reason); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 844, __pyx_L55_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_18 = __Pyx_PyObject_FormatSimple(__pyx_t_17, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 844, __pyx_L55_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_start); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 844, __pyx_L55_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_19 = __Pyx_PyObject_FormatSimple(__pyx_t_17, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_19)) __PYX_ERR(4, 844, __pyx_L55_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_20[0] = __pyx_mstate_global->__pyx_kp_u_ValueError_the_token_provider_re; __pyx_t_20[1] = __pyx_t_18; __pyx_t_20[2] = __pyx_mstate_global->__pyx_kp_u_at_position; __pyx_t_20[3] = __pyx_t_19; __pyx_t_20[4] = __pyx_mstate_global->__pyx_kp_u__11;
+0845: return
{
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
goto __pyx_L54_return;
}
+0846: if not questdb_token_sink_set_token(sink, encoded, len(encoded), 0, 0):
if (unlikely(__pyx_v_encoded == Py_None)) {
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(4, 846, __pyx_L7_error)
}
__pyx_t_29 = __Pyx_PyBytes_AsString(__pyx_v_encoded); if (unlikely((!__pyx_t_29) && PyErr_Occurred())) __PYX_ERR(4, 846, __pyx_L7_error)
if (unlikely(__pyx_v_encoded == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(4, 846, __pyx_L7_error)
}
__pyx_t_16 = __Pyx_PyBytes_GET_SIZE(__pyx_v_encoded); if (unlikely(__pyx_t_16 == ((Py_ssize_t)-1))) __PYX_ERR(4, 846, __pyx_L7_error)
__pyx_t_14 = (!questdb_token_sink_set_token(__pyx_v_sink, __pyx_t_29, __pyx_t_16, 0, 0));
if (__pyx_t_14) {
/* … */
}
+0847: _tp_sink_text_error(
__pyx_f_7questdb_7_client__tp_sink_text_error(__pyx_v_sink, 1, -1L, __pyx_mstate_global->__pyx_kp_u_the_token_provider_returned_an_u);
0848: sink, True, -1, 'the token provider returned an unusable token')
+0849: except BaseException as exc:
__pyx_t_21 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_21) { __Pyx_AddTraceback("questdb._client._token_get_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_11, &__pyx_t_1) < 0) __PYX_ERR(4, 849, __pyx_L9_except_error) __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_11); __Pyx_XDECREF_SET(__pyx_v_exc, __pyx_t_11); /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; goto __pyx_L68; } __pyx_L68:; } __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L8_exception_handled; } goto __pyx_L9_except_error;
+0850: _tp_sink_exception(sink, exc, signal_codes, provider)
__pyx_f_7questdb_7_client__tp_sink_exception(__pyx_v_sink, __pyx_v_exc, __pyx_v_signal_codes, __pyx_v_provider);
}
0851: finally:
+0852: if on_main:
/*finally:*/ {
/*normal exit:*/{
if (__pyx_v_on_main) {
/* … */
}
/* … */
if (__pyx_v_on_main) {
/* … */
}
/* … */
if (__pyx_v_on_main) {
/* … */
}
+0853: _oidc_main_region_exit(_OIDC_REGION_TOKEN, region)
__pyx_f_7questdb_7_client__oidc_main_region_exit(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN, __pyx_v_region);
/* … */
__pyx_f_7questdb_7_client__oidc_main_region_exit(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN, __pyx_v_region);
/* … */
__pyx_f_7questdb_7_client__oidc_main_region_exit(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN, __pyx_v_region);
+0854: if not _oidc_main_region_active(_OIDC_REGION_TOKEN):
__pyx_t_14 = (!__pyx_f_7questdb_7_client__oidc_main_region_active(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN));
if (__pyx_t_14) {
/* … */
}
/* … */
__pyx_t_14 = (!__pyx_f_7questdb_7_client__oidc_main_region_active(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN));
if (__pyx_t_14) {
/* … */
}
/* … */
__pyx_t_14 = (!__pyx_f_7questdb_7_client__oidc_main_region_active(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN));
if (__pyx_t_14) {
/* … */
}
+0855: _oidc_schedule_parked_main()
__pyx_f_7questdb_7_client__oidc_schedule_parked_main();
/* … */
__pyx_f_7questdb_7_client__oidc_schedule_parked_main();
/* … */
__pyx_f_7questdb_7_client__oidc_schedule_parked_main();
+0856: _token_callback_exit(counted)
__pyx_f_7questdb_7_client__token_callback_exit(__pyx_v_counted);
goto __pyx_L6;
}
__pyx_L5_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
__Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_ExceptionSwap(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5);
if ( unlikely(__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2) < 0)) __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_5);
__pyx_t_21 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_22 = __pyx_filename;
{
/* … */
__pyx_f_7questdb_7_client__token_callback_exit(__pyx_v_counted);
}
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_ErrRestore(__pyx_t_4, __pyx_t_3, __pyx_t_2);
__pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0;
__pyx_lineno = __pyx_t_21; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_22;
goto __pyx_L1_error;
}
__pyx_L4_return: {
/* … */
__pyx_f_7questdb_7_client__token_callback_exit(__pyx_v_counted);
goto __pyx_L0;
}
__pyx_L6:;
}
0857:
0858:
+0859: cdef void _token_get_trampoline(
static void __pyx_f_7questdb_7_client__token_get_trampoline(void *__pyx_v_user_data, struct questdb_token_sink *__pyx_v_sink) {
qdb_oidc_callback_gate *__pyx_v_gate;
/* … */
/* function exit code */
__pyx_L0:;
}
0860: void* user_data, questdb_token_sink* sink) noexcept nogil:
+0861: cdef qdb_oidc_callback_gate* gate = qdb_oidc_callback_enter()
__pyx_v_gate = qdb_oidc_callback_enter();
+0862: if gate == NULL:
__pyx_t_1 = (__pyx_v_gate == NULL);
if (__pyx_t_1) {
/* … */
}
+0863: if _tp_main_thread_before_finalization():
__pyx_t_1 = __pyx_f_7questdb_7_client__tp_main_thread_before_finalization();
if (__pyx_t_1) {
/* … */
goto __pyx_L4;
}
+0864: _token_get_dispatch(<size_t>user_data, sink)
__pyx_f_7questdb_7_client__token_get_dispatch(((size_t)__pyx_v_user_data), __pyx_v_sink);
0865: else:
+0866: _tp_sink_unavailable(sink)
/*else*/ {
__pyx_f_7questdb_7_client__tp_sink_unavailable(__pyx_v_sink);
}
__pyx_L4:;
+0867: return
{
}
goto __pyx_L0;
+0868: try:
/*try:*/ {
+0869: if qdb_py_is_finalizing():
__pyx_t_1 = qdb_py_is_finalizing();
if (__pyx_t_1) {
/* … */
}
+0870: _tp_sink_unavailable(sink)
__pyx_f_7questdb_7_client__tp_sink_unavailable(__pyx_v_sink);
+0871: return
{
}
goto __pyx_L5_return;
+0872: qdb_oidc_callback_before_gil(gate)
qdb_oidc_callback_before_gil(__pyx_v_gate);
+0873: if (qdb_oidc_callback_stopped(gate)
__pyx_t_2 = qdb_oidc_callback_stopped(__pyx_v_gate);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L10_bool_binop_done;
}
/* … */
if (__pyx_t_1) {
/* … */
}
+0874: and not _tp_main_thread_before_finalization()):
__pyx_t_2 = (!__pyx_f_7questdb_7_client__tp_main_thread_before_finalization());
__pyx_t_1 = __pyx_t_2;
__pyx_L10_bool_binop_done:;
+0875: _tp_sink_unavailable(sink)
__pyx_f_7questdb_7_client__tp_sink_unavailable(__pyx_v_sink);
+0876: return
{
}
goto __pyx_L5_return;
+0877: _token_get_dispatch(<size_t>user_data, sink)
__pyx_f_7questdb_7_client__token_get_dispatch(((size_t)__pyx_v_user_data), __pyx_v_sink); }
0878: finally:
+0879: qdb_oidc_callback_leave(gate)
/*finally:*/ {
/*normal exit:*/{
qdb_oidc_callback_leave(__pyx_v_gate);
goto __pyx_L7;
}
__pyx_L5_return: {
qdb_oidc_callback_leave(__pyx_v_gate);
goto __pyx_L0;
}
__pyx_L7:;
}
0880:
0881:
+0882: cdef void _token_rejected_dispatch(
static void __pyx_f_7questdb_7_client__token_rejected_dispatch(size_t __pyx_v_callback_id, char const *__pyx_v_token, size_t __pyx_v_token_len, uint16_t __pyx_v_http_status) {
PyObject *__pyx_v_provider = 0;
struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_handle = 0;
PyObject *__pyx_v_signal_codes = 0;
int __pyx_v_on_main;
int __pyx_v_counted;
PyObject *__pyx_v_region = 0;
PyObject *__pyx_v_exc = NULL;
PyObject *__pyx_v_on_rejected = NULL;
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_WriteUnraisable("questdb._client._token_rejected_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_provider);
__Pyx_XDECREF((PyObject *)__pyx_v_handle);
__Pyx_XDECREF(__pyx_v_signal_codes);
__Pyx_XDECREF(__pyx_v_region);
__Pyx_XDECREF(__pyx_v_exc);
__Pyx_XDECREF(__pyx_v_on_rejected);
__Pyx_RefNannyFinishContext();
__Pyx_PyGILState_Release(__pyx_gilstate_save);
}
0883: size_t callback_id,
0884: const char* token,
0885: size_t token_len,
0886: uint16_t http_status) noexcept with gil:
0887: cdef object provider
0888: cdef _TokenProviderHandle handle
0889: # A mapping even before the snapshot below: the error path looks codes
0890: # up in it, and `on_rejected` can raise before the snapshot is taken.
+0891: cdef object signal_codes = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_signal_codes = __pyx_t_1; __pyx_t_1 = 0;
+0892: cdef bint on_main = questdb_thread_ident() == _OIDC_MAIN_THREAD_IDENT
__pyx_v_on_main = (PyThread_get_thread_ident() == __pyx_v_7questdb_7_client__OIDC_MAIN_THREAD_IDENT);
+0893: cdef bint counted = _token_callback_enter()
__pyx_v_counted = __pyx_f_7questdb_7_client__token_callback_enter();
+0894: cdef object region = None
__Pyx_INCREF(Py_None);
__pyx_v_region = Py_None;
+0895: if on_main:
if (__pyx_v_on_main) {
/* … */
}
+0896: region = _oidc_main_region_enter(_OIDC_REGION_TOKEN)
__pyx_t_1 = __pyx_f_7questdb_7_client__oidc_main_region_enter(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_region, __pyx_t_1); __pyx_t_1 = 0;
+0897: try:
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L12_try_end;
__pyx_L7_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
/* … */
__pyx_L9_except_error:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L5_error;
__pyx_L11_try_return:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L4_return;
__pyx_L8_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
__pyx_L12_try_end:;
}
}
+0898: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L18_try_end;
__pyx_L13_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
__pyx_L15_except_error:;
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
goto __pyx_L7_error;
__pyx_L14_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
__pyx_L18_try_end:;
}
+0899: PyErr_CheckSignals()
__pyx_t_8 = PyErr_CheckSignals(); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 899, __pyx_L13_error)
+0900: if CYTHON_COMPILING_IN_PYPY:
__pyx_t_9 = (CYTHON_COMPILING_IN_PYPY != 0);
if (__pyx_t_9) {
/* … */
}
+0901: _oidc_signal_tick()
__pyx_t_10 = __pyx_f_7questdb_7_client__oidc_signal_tick(); if (unlikely(__pyx_t_10 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(4, 901, __pyx_L13_error)
+0902: except BaseException as exc:
__pyx_t_8 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_8) { __Pyx_AddTraceback("questdb._client._token_rejected_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(4, 902, __pyx_L15_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_11); __pyx_v_exc = __pyx_t_11; /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; goto __pyx_L26; } __pyx_L26:; } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L14_exception_handled; } goto __pyx_L15_except_error;
+0903: if on_main:
if (__pyx_v_on_main) {
/* … */
}
}
+0904: _oidc_park_main(exc)
__pyx_f_7questdb_7_client__oidc_park_main(__pyx_v_exc);
+0905: handle = _token_callback_get(callback_id)
__pyx_t_12 = ((PyObject *)__pyx_f_7questdb_7_client__token_callback_get(__pyx_v_callback_id)); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 905, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_12); __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_12); __pyx_t_12 = 0;
+0906: if handle is None:
__pyx_t_9 = (((PyObject *)__pyx_v_handle) == Py_None);
if (__pyx_t_9) {
/* … */
}
+0907: return
{
}
goto __pyx_L11_try_return;
+0908: provider = handle._target
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_handle), __pyx_mstate_global->__pyx_n_u_target_2); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 908, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_12); __pyx_v_provider = __pyx_t_12; __pyx_t_12 = 0;
+0909: on_rejected = getattr(provider, 'on_rejected', None)
__pyx_t_12 = __Pyx_GetAttr3(__pyx_v_provider, __pyx_mstate_global->__pyx_n_u_on_rejected, Py_None); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 909, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_12); __pyx_v_on_rejected = __pyx_t_12; __pyx_t_12 = 0;
+0910: if on_rejected is None:
__pyx_t_9 = (__pyx_v_on_rejected == Py_None);
if (__pyx_t_9) {
/* … */
}
+0911: return
{
}
goto __pyx_L11_try_return;
+0912: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L35_try_end;
__pyx_L30_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
__pyx_L32_except_error:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
goto __pyx_L7_error;
__pyx_L33_except_return:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
goto __pyx_L11_try_return;
__pyx_L35_try_end:;
}
+0913: signal_codes = _oidc_signal_handler_codes() if on_main else {}
if (__pyx_v_on_main) {
__pyx_t_11 = __pyx_f_7questdb_7_client__oidc_signal_handler_codes(); if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 913, __pyx_L30_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __pyx_t_11;
__pyx_t_11 = 0;
} else {
__pyx_t_11 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 913, __pyx_L30_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __pyx_t_11;
__pyx_t_11 = 0;
}
__Pyx_DECREF_SET(__pyx_v_signal_codes, __pyx_t_12);
__pyx_t_12 = 0;
+0914: except BaseException as exc:
__pyx_t_8 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_8) { __Pyx_AddTraceback("questdb._client._token_rejected_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_11, &__pyx_t_1) < 0) __PYX_ERR(4, 914, __pyx_L32_except_error) __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_11); __pyx_v_exc = __pyx_t_11; /*try:*/ { /* … */ /*finally:*/ { __pyx_L40_return: { __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; goto __pyx_L33_except_return; } } } goto __pyx_L32_except_error;
0915: # The snapshot runs Python: a pending signal's handler raised.
+0916: _oidc_park_main(exc)
__pyx_f_7questdb_7_client__oidc_park_main(__pyx_v_exc);
+0917: return
{
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
goto __pyx_L40_return;
}
+0918: on_rejected(
__pyx_t_11 = NULL;
__Pyx_INCREF(__pyx_v_on_rejected);
__pyx_t_12 = __pyx_v_on_rejected;
+0919: PyUnicode_FromStringAndSize(token, <Py_ssize_t>token_len),
__pyx_t_13 = PyUnicode_FromStringAndSize(__pyx_v_token, ((Py_ssize_t)__pyx_v_token_len)); if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 919, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_13);
+0920: http_status)
__pyx_t_14 = __Pyx_PyLong_From_uint16_t(__pyx_v_http_status); if (unlikely(!__pyx_t_14)) __PYX_ERR(4, 920, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_15 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12); assert(__pyx_t_11); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_12, __pyx__function); __pyx_t_15 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_t_13, __pyx_t_14}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_12, __pyx_callargs+__pyx_t_15, (3-__pyx_t_15) | (__pyx_t_15*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 918, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0921: except BaseException as exc:
__pyx_t_8 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_8) { __Pyx_AddTraceback("questdb._client._token_rejected_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_12, &__pyx_t_14) < 0) __PYX_ERR(4, 921, __pyx_L9_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_14); __Pyx_INCREF(__pyx_t_12); __Pyx_XDECREF_SET(__pyx_v_exc, __pyx_t_12); /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; goto __pyx_L49; } __pyx_L49:; } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; goto __pyx_L8_exception_handled; } goto __pyx_L9_except_error;
+0922: if _tp_park_if_interrupted(exc, signal_codes):
__pyx_t_9 = __pyx_f_7questdb_7_client__tp_park_if_interrupted(__pyx_v_exc, __pyx_v_signal_codes);
if (__pyx_t_9) {
/* … */
}
}
+0923: _oidc_schedule_parked_main()
__pyx_f_7questdb_7_client__oidc_schedule_parked_main();
0924: # Otherwise ignored: the client pulls a token next either way.
0925: finally:
+0926: if on_main:
/*finally:*/ {
/*normal exit:*/{
if (__pyx_v_on_main) {
/* … */
}
/* … */
if (__pyx_v_on_main) {
/* … */
}
/* … */
if (__pyx_v_on_main) {
/* … */
}
+0927: _oidc_main_region_exit(_OIDC_REGION_TOKEN, region)
__pyx_f_7questdb_7_client__oidc_main_region_exit(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN, __pyx_v_region);
/* … */
__pyx_f_7questdb_7_client__oidc_main_region_exit(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN, __pyx_v_region);
/* … */
__pyx_f_7questdb_7_client__oidc_main_region_exit(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN, __pyx_v_region);
+0928: if not _oidc_main_region_active(_OIDC_REGION_TOKEN):
__pyx_t_9 = (!__pyx_f_7questdb_7_client__oidc_main_region_active(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN));
if (__pyx_t_9) {
/* … */
}
/* … */
__pyx_t_9 = (!__pyx_f_7questdb_7_client__oidc_main_region_active(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN));
if (__pyx_t_9) {
/* … */
}
/* … */
__pyx_t_9 = (!__pyx_f_7questdb_7_client__oidc_main_region_active(__pyx_e_7questdb_7_client__OIDC_REGION_TOKEN));
if (__pyx_t_9) {
/* … */
}
+0929: _oidc_schedule_parked_main()
__pyx_f_7questdb_7_client__oidc_schedule_parked_main();
/* … */
__pyx_f_7questdb_7_client__oidc_schedule_parked_main();
/* … */
__pyx_f_7questdb_7_client__oidc_schedule_parked_main();
+0930: _token_callback_exit(counted)
__pyx_f_7questdb_7_client__token_callback_exit(__pyx_v_counted);
goto __pyx_L6;
}
__pyx_L5_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_ExceptionSwap(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
if ( unlikely(__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2) < 0)) __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_7);
__pyx_t_8 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
{
/* … */
__pyx_f_7questdb_7_client__token_callback_exit(__pyx_v_counted);
}
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_ErrRestore(__pyx_t_4, __pyx_t_3, __pyx_t_2);
__pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0;
__pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17;
goto __pyx_L1_error;
}
__pyx_L4_return: {
/* … */
__pyx_f_7questdb_7_client__token_callback_exit(__pyx_v_counted);
goto __pyx_L0;
}
__pyx_L6:;
}
0931:
0932:
+0933: cdef void _token_rejected_trampoline(
static void __pyx_f_7questdb_7_client__token_rejected_trampoline(void *__pyx_v_user_data, char const *__pyx_v_token, size_t __pyx_v_token_len, uint16_t __pyx_v_http_status) {
qdb_oidc_callback_gate *__pyx_v_gate;
/* … */
/* function exit code */
__pyx_L0:;
}
0934: void* user_data,
0935: const char* token,
0936: size_t token_len,
0937: uint16_t http_status) noexcept nogil:
+0938: cdef qdb_oidc_callback_gate* gate = qdb_oidc_callback_enter()
__pyx_v_gate = qdb_oidc_callback_enter();
+0939: if gate == NULL:
__pyx_t_1 = (__pyx_v_gate == NULL);
if (__pyx_t_1) {
/* … */
}
+0940: if _tp_main_thread_before_finalization():
__pyx_t_1 = __pyx_f_7questdb_7_client__tp_main_thread_before_finalization();
if (__pyx_t_1) {
/* … */
}
+0941: _token_rejected_dispatch(
__pyx_f_7questdb_7_client__token_rejected_dispatch(((size_t)__pyx_v_user_data), __pyx_v_token, __pyx_v_token_len, __pyx_v_http_status);
0942: <size_t>user_data, token, token_len, http_status)
+0943: return
{
}
goto __pyx_L0;
+0944: try:
/*try:*/ {
+0945: if qdb_py_is_finalizing():
__pyx_t_1 = qdb_py_is_finalizing();
if (__pyx_t_1) {
/* … */
}
+0946: return
{
}
goto __pyx_L5_return;
+0947: qdb_oidc_callback_before_gil(gate)
qdb_oidc_callback_before_gil(__pyx_v_gate);
+0948: if (not qdb_oidc_callback_stopped(gate)
__pyx_t_2 = (!qdb_oidc_callback_stopped(__pyx_v_gate));
if (!__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L10_bool_binop_done;
}
/* … */
if (__pyx_t_1) {
/* … */
}
}
+0949: or _tp_main_thread_before_finalization()):
__pyx_t_2 = __pyx_f_7questdb_7_client__tp_main_thread_before_finalization();
__pyx_t_1 = __pyx_t_2;
__pyx_L10_bool_binop_done:;
+0950: _token_rejected_dispatch(
__pyx_f_7questdb_7_client__token_rejected_dispatch(((size_t)__pyx_v_user_data), __pyx_v_token, __pyx_v_token_len, __pyx_v_http_status);
0951: <size_t>user_data, token, token_len, http_status)
0952: finally:
+0953: qdb_oidc_callback_leave(gate)
/*finally:*/ {
/*normal exit:*/{
qdb_oidc_callback_leave(__pyx_v_gate);
goto __pyx_L7;
}
__pyx_L5_return: {
qdb_oidc_callback_leave(__pyx_v_gate);
goto __pyx_L0;
}
__pyx_L7:;
}
0954:
0955:
+0956: cdef void _token_release_trampoline(void* user_data) noexcept nogil:
static void __pyx_f_7questdb_7_client__token_release_trampoline(CYTHON_UNUSED void *__pyx_v_user_data) {
/* function exit code */
}
0957: """Deliberately empty: see the module comment. The Python wrapper drops
0958: the registry entry when it is collected."""
0959: pass
0960:
0961:
+0962: cdef size_t _token_callback_register(
static size_t __pyx_f_7questdb_7_client__token_callback_register(struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_handle, PyObject *__pyx_v_target) {
PyObject *__pyx_v_reference = 0;
size_t __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._token_callback_register", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_reference);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0963: _TokenProviderHandle handle, object target) except 0:
0964: global _token_callback_last_id
+0965: handle._target = target
if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_handle), __pyx_mstate_global->__pyx_n_u_target_2, __pyx_v_target) < (0)) __PYX_ERR(4, 965, __pyx_L1_error)
+0966: cdef object reference = PyWeakref_NewRef(handle, None)
__pyx_t_1 = PyWeakref_NewRef(((PyObject *)__pyx_v_handle), Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 966, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_reference = __pyx_t_1; __pyx_t_1 = 0;
+0967: with _TOKEN_CALLBACKS_LOCK:
/*with:*/ {
__pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 967, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 967, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 967, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__pyx_L7_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client._token_callback_register", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(4, 967, __pyx_L9_except_error)
__Pyx_XGOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
{
PyObject* __pyx_temp[3] = {__pyx_t_1, __pyx_t_4, __pyx_t_3};
__pyx_t_9 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 967, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_9);
}
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 967, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (__pyx_t_11 < (0)) __PYX_ERR(4, 967, __pyx_L9_except_error)
__pyx_t_12 = (!__pyx_t_11);
if (unlikely(__pyx_t_12)) {
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_4, __pyx_t_3);
__pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0;
__PYX_ERR(4, 967, __pyx_L9_except_error)
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8_exception_handled;
}
__pyx_L9_except_error:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
goto __pyx_L1_error;
__pyx_L11_try_return:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
goto __pyx_L4_return;
__pyx_L8_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_2) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 967, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
goto __pyx_L6;
}
__pyx_L4_return: {
__pyx_t_5 = __pyx_r;
if (__pyx_t_2) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 967, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_r = __pyx_t_5;
goto __pyx_L0;
}
__pyx_L6:;
}
goto __pyx_L16;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
goto __pyx_L1_error;
__pyx_L16:;
}
+0968: _token_callback_last_id += 1
__pyx_v_7questdb_7_client__token_callback_last_id = (__pyx_v_7questdb_7_client__token_callback_last_id + 1);
+0969: _TOKEN_CALLBACKS[_token_callback_last_id] = reference
if (unlikely(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(4, 969, __pyx_L7_error)
}
__pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_v_7questdb_7_client__token_callback_last_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 969, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_1);
if (unlikely((PyDict_SetItem(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS, __pyx_t_1, __pyx_v_reference) < 0))) __PYX_ERR(4, 969, __pyx_L7_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0970: return _token_callback_last_id
{
__pyx_r = __pyx_v_7questdb_7_client__token_callback_last_id;
}
goto __pyx_L11_try_return;
0971:
0972:
+0973: cdef _TokenProviderHandle _token_callback_get(size_t callback_id):
static struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_f_7questdb_7_client__token_callback_get(size_t __pyx_v_callback_id) {
PyObject *__pyx_v_reference = 0;
struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._token_callback_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_reference);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0974: cdef object reference
+0975: with _TOKEN_CALLBACKS_LOCK:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 975, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 975, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 975, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L12_try_end;
__pyx_L7_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client._token_callback_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(4, 975, __pyx_L9_except_error)
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_3);
{
PyObject* __pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_t_3};
__pyx_t_9 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 975, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_9);
}
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 975, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (__pyx_t_11 < (0)) __PYX_ERR(4, 975, __pyx_L9_except_error)
__pyx_t_12 = (!__pyx_t_11);
if (unlikely(__pyx_t_12)) {
__Pyx_GIVEREF(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_2, __pyx_t_3);
__pyx_t_4 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
__PYX_ERR(4, 975, __pyx_L9_except_error)
}
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8_exception_handled;
}
__pyx_L9_except_error:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
goto __pyx_L1_error;
__pyx_L8_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
__pyx_L12_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_1) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 975, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
goto __pyx_L6;
}
__pyx_L6:;
}
goto __pyx_L16;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L1_error;
__pyx_L16:;
}
+0976: reference = _TOKEN_CALLBACKS.get(callback_id)
if (unlikely(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
__PYX_ERR(4, 976, __pyx_L7_error)
}
__pyx_t_2 = __Pyx_PyLong_FromSize_t(__pyx_v_callback_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 976, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 976, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_reference = __pyx_t_4;
__pyx_t_4 = 0;
+0977: return None if reference is None else reference()
if (unlikely(!__pyx_v_reference)) { __Pyx_RaiseUnboundLocalError("reference"); __PYX_ERR(4, 977, __pyx_L1_error) }
__pyx_t_12 = (__pyx_v_reference == Py_None);
if (__pyx_t_12) {
__Pyx_INCREF(Py_None);
__pyx_t_3 = Py_None;
} else {
__pyx_t_4 = NULL;
if (unlikely(!__pyx_v_reference)) { __Pyx_RaiseUnboundLocalError("reference"); __PYX_ERR(4, 977, __pyx_L1_error) }
__Pyx_INCREF(__pyx_v_reference);
__pyx_t_9 = __pyx_v_reference;
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_9))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
assert(__pyx_t_4);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 977, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__TokenProviderHandle))))) __PYX_ERR(4, 977, __pyx_L1_error)
__pyx_t_3 = __pyx_t_2;
__pyx_t_2 = 0;
}
if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__TokenProviderHandle))))) __PYX_ERR(4, 977, __pyx_L1_error)
{
struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = ((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_3);
}
__Pyx_XDECREF((PyObject *)__pyx_temp);
}
__pyx_t_3 = 0;
goto __pyx_L0;
0978:
0979:
+0980: cdef void _token_callback_unregister(size_t callback_id) noexcept:
static void __pyx_f_7questdb_7_client__token_callback_unregister(size_t __pyx_v_callback_id) {
CYTHON_UNUSED PyObject *__pyx_v_removed = 0;
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_WriteUnraisable("questdb._client._token_callback_unregister", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_removed);
__Pyx_RefNannyFinishContext();
}
0981: cdef object removed
+0982: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L4_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
__pyx_L8_try_end:;
}
+0983: with _TOKEN_CALLBACKS_LOCK:
/*with:*/ {
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 983, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_6 = NULL;
__pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 983, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_8 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
assert(__pyx_t_6);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
__pyx_t_8 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
__pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 983, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_5);
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
goto __pyx_L18_try_end;
__pyx_L13_error:;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client._token_callback_unregister", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(4, 983, __pyx_L15_except_error)
__Pyx_XGOTREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_6);
{
PyObject* __pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_t_6};
__pyx_t_12 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 983, __pyx_L15_except_error)
__Pyx_GOTREF(__pyx_t_12);
}
__pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_12, NULL);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 983, __pyx_L15_except_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_13);
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (__pyx_t_14 < (0)) __PYX_ERR(4, 983, __pyx_L15_except_error)
__pyx_t_15 = (!__pyx_t_14);
if (unlikely(__pyx_t_15)) {
__Pyx_GIVEREF(__pyx_t_7);
__Pyx_GIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ErrRestoreWithState(__pyx_t_7, __pyx_t_5, __pyx_t_6);
__pyx_t_7 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0;
__PYX_ERR(4, 983, __pyx_L15_except_error)
}
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L14_exception_handled;
}
__pyx_L15_except_error:;
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
goto __pyx_L3_error;
__pyx_L14_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
__pyx_L18_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_4) {
__pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 983, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
}
goto __pyx_L12;
}
__pyx_L12:;
}
goto __pyx_L22;
__pyx_L9_error:;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L3_error;
__pyx_L22:;
}
+0984: removed = _TOKEN_CALLBACKS.pop(callback_id, None)
if (unlikely(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "pop");
__PYX_ERR(4, 984, __pyx_L13_error)
}
__pyx_t_5 = __Pyx_PyLong_FromSize_t(__pyx_v_callback_id); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 984, __pyx_L13_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = __Pyx_PyDict_Pop(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS, __pyx_t_5, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 984, __pyx_L13_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_removed = __pyx_t_7;
__pyx_t_7 = 0;
0985: # Drop references outside the lock, even if registry ownership changes.
+0986: removed = None
__Pyx_INCREF(Py_None); __Pyx_XDECREF_SET(__pyx_v_removed, Py_None);
+0987: except BaseException:
__pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_16) { __Pyx_ErrRestore(0,0,0); goto __pyx_L4_exception_handled; } goto __pyx_L5_except_error;
0988: pass
0989:
0990:
+0991: def _debug_token_callbacks_size():
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_87_debug_token_callbacks_size(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_87_debug_token_callbacks_size = {"_debug_token_callbacks_size", (PyCFunction)__pyx_pw_7questdb_7_client_87_debug_token_callbacks_size, METH_NOARGS, 0};
static PyObject *__pyx_pw_7questdb_7_client_87_debug_token_callbacks_size(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_debug_token_callbacks_size (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_7questdb_7_client_86_debug_token_callbacks_size(__pyx_self);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_86_debug_token_callbacks_size(CYTHON_UNUSED PyObject *__pyx_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("questdb._client._debug_token_callbacks_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_87_debug_token_callbacks_size, 0, __pyx_mstate_global->__pyx_n_u_debug_token_callbacks_size, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[135])); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 991, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17);
#endif
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_debug_token_callbacks_size, __pyx_t_17) < (0)) __PYX_ERR(4, 991, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+0992: with _TOKEN_CALLBACKS_LOCK:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 992, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 992, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 992, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__pyx_L7_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client._debug_token_callbacks_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(4, 992, __pyx_L9_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
{
PyObject* __pyx_temp[3] = {__pyx_t_2, __pyx_t_4, __pyx_t_3};
__pyx_t_10 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 992, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_10);
}
__pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 992, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (__pyx_t_12 < (0)) __PYX_ERR(4, 992, __pyx_L9_except_error)
__pyx_t_13 = (!__pyx_t_12);
if (unlikely(__pyx_t_13)) {
__Pyx_GIVEREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_4, __pyx_t_3);
__pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0;
__PYX_ERR(4, 992, __pyx_L9_except_error)
}
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8_exception_handled;
}
__pyx_L9_except_error:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
goto __pyx_L1_error;
__pyx_L11_try_return:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
goto __pyx_L4_return;
__pyx_L8_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_1) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 992, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
goto __pyx_L6;
}
__pyx_L4_return: {
__pyx_t_8 = __pyx_r;
__pyx_r = 0;
if (__pyx_t_1) {
__pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 992, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__pyx_r = __pyx_t_8;
__pyx_t_8 = 0;
goto __pyx_L0;
}
__pyx_L6:;
}
goto __pyx_L16;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L1_error;
__pyx_L16:;
}
+0993: return len(_TOKEN_CALLBACKS)
__pyx_t_2 = __pyx_v_7questdb_7_client__TOKEN_CALLBACKS;
__Pyx_INCREF(__pyx_t_2);
if (unlikely(__pyx_t_2 == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(4, 993, __pyx_L7_error)
}
__pyx_t_9 = PyDict_Size(__pyx_t_2); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(4, 993, __pyx_L7_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = PyLong_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 993, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_2);
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L11_try_return;
0994:
0995:
+0996: def _debug_token_callbacks_ids():
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_89_debug_token_callbacks_ids(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_89_debug_token_callbacks_ids = {"_debug_token_callbacks_ids", (PyCFunction)__pyx_pw_7questdb_7_client_89_debug_token_callbacks_ids, METH_NOARGS, 0};
static PyObject *__pyx_pw_7questdb_7_client_89_debug_token_callbacks_ids(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_debug_token_callbacks_ids (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_7questdb_7_client_88_debug_token_callbacks_ids(__pyx_self);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_88_debug_token_callbacks_ids(CYTHON_UNUSED PyObject *__pyx_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._debug_token_callbacks_ids", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_89_debug_token_callbacks_ids, 0, __pyx_mstate_global->__pyx_n_u_debug_token_callbacks_ids, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[136])); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 996, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17);
#endif
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_debug_token_callbacks_ids, __pyx_t_17) < (0)) __PYX_ERR(4, 996, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+0997: with _TOKEN_CALLBACKS_LOCK:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 997, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 997, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 997, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__pyx_L7_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client._debug_token_callbacks_ids", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(4, 997, __pyx_L9_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
{
PyObject* __pyx_temp[3] = {__pyx_t_2, __pyx_t_4, __pyx_t_3};
__pyx_t_9 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 997, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_9);
}
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 997, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (__pyx_t_11 < (0)) __PYX_ERR(4, 997, __pyx_L9_except_error)
__pyx_t_12 = (!__pyx_t_11);
if (unlikely(__pyx_t_12)) {
__Pyx_GIVEREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_4, __pyx_t_3);
__pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0;
__PYX_ERR(4, 997, __pyx_L9_except_error)
}
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8_exception_handled;
}
__pyx_L9_except_error:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
goto __pyx_L1_error;
__pyx_L11_try_return:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
goto __pyx_L4_return;
__pyx_L8_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_1) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 997, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
goto __pyx_L6;
}
__pyx_L4_return: {
__pyx_t_8 = __pyx_r;
__pyx_r = 0;
if (__pyx_t_1) {
__pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 997, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__pyx_r = __pyx_t_8;
__pyx_t_8 = 0;
goto __pyx_L0;
}
__pyx_L6:;
}
goto __pyx_L16;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L1_error;
__pyx_L16:;
}
+0998: return frozenset(_TOKEN_CALLBACKS)
__pyx_t_2 = __Pyx_PyFrozenSet_New(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 998, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_2); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L11_try_return;
0999:
1000:
+1001: def _debug_token_callbacks_lock():
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_91_debug_token_callbacks_lock(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_90_debug_token_callbacks_lock, "Internal hook for a deterministic inherited-lock subprocess test."); static PyMethodDef __pyx_mdef_7questdb_7_client_91_debug_token_callbacks_lock = {"_debug_token_callbacks_lock", (PyCFunction)__pyx_pw_7questdb_7_client_91_debug_token_callbacks_lock, METH_NOARGS, __pyx_doc_7questdb_7_client_90_debug_token_callbacks_lock}; static PyObject *__pyx_pw_7questdb_7_client_91_debug_token_callbacks_lock(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_debug_token_callbacks_lock (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7questdb_7_client_90_debug_token_callbacks_lock(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_90_debug_token_callbacks_lock(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_91_debug_token_callbacks_lock, 0, __pyx_mstate_global->__pyx_n_u_debug_token_callbacks_lock, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[137])); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 1001, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_debug_token_callbacks_lock, __pyx_t_17) < (0)) __PYX_ERR(4, 1001, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
1002: """Internal hook for a deterministic inherited-lock subprocess test."""
+1003: return _TOKEN_CALLBACKS_LOCK
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK);
__pyx_r = __pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
1004:
1005:
+1006: @cython.no_gc_clear
struct __pyx_obj_7questdb_7_client__TokenProviderHandle {
PyObject_HEAD
struct questdb_token_provider *_raw;
size_t _callback_id;
PyObject *__dict__;
PyObject *__weakref__;
int _source_closed;
unsigned long _source_thread;
PyObject *_source_done;
};
1007: cdef class _TokenProviderHandle:
1008: """Owns one native provider handle and its registry entry."""
1009: cdef questdb_token_provider* _raw
1010: cdef size_t _callback_id
1011: # PyPy cannot trace ownership cycles through arbitrary cpyext fields.
1012: # Keep _target in the instance dictionary, which both collectors see.
1013: cdef dict __dict__
1014: cdef object __weakref__
1015: cdef bint _source_closed
1016: cdef unsigned long _source_thread
1017: cdef object _source_done
1018:
+1019: def __cinit__(self):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_20_TokenProviderHandle_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_pw_7questdb_7_client_20_TokenProviderHandle_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
#if !CYTHON_VECTORCALL_TPNEW
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
#if !CYTHON_VECTORCALL_TPNEW
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL_TPNEW(__pyx_args, __pyx_nargs);
if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1; }
const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL_TPNEW(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) return -1;
if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); return -1;}
__pyx_r = __pyx_pf_7questdb_7_client_20_TokenProviderHandle___cinit__(((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_20_TokenProviderHandle___cinit__(struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_self) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client._TokenProviderHandle.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1020: self._raw = NULL
__pyx_v_self->_raw = NULL;
+1021: self._callback_id = 0
__pyx_v_self->_callback_id = 0;
+1022: self._target = None
if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_target_2, Py_None) < (0)) __PYX_ERR(4, 1022, __pyx_L1_error)
+1023: self._source_closed = False
__pyx_v_self->_source_closed = 0;
+1024: self._source_thread = 0
__pyx_v_self->_source_thread = 0;
+1025: self._source_done = threading.Event()
__pyx_t_2 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Event); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_5 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_source_done); __Pyx_DECREF_SET(__pyx_v_self->_source_done, __pyx_t_1); __pyx_t_1 = 0;
+1026: self._source_done.set()
__pyx_t_4 = __pyx_v_self->_source_done; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1027:
+1028: def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_7questdb_7_client_20_TokenProviderHandle_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7questdb_7_client_20_TokenProviderHandle_3__dealloc__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_pf_7questdb_7_client_20_TokenProviderHandle_2__dealloc__(((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
}
static void __pyx_pf_7questdb_7_client_20_TokenProviderHandle_2__dealloc__(struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_self) {
struct questdb_token_provider *__pyx_v_raw;
/* … */
/* function exit code */
}
+1029: cdef questdb_token_provider* raw = self._raw
__pyx_t_1 = __pyx_v_self->_raw; __pyx_v_raw = __pyx_t_1;
+1030: self._raw = NULL
__pyx_v_self->_raw = NULL;
+1031: if raw != NULL:
__pyx_t_2 = (__pyx_v_raw != NULL);
if (__pyx_t_2) {
/* … */
}
1032: # Freeing an inherited handle is safe: native leaks it.
+1033: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L6;
}
__pyx_L6:;
}
}
+1034: questdb_token_provider_free(raw)
questdb_token_provider_free(__pyx_v_raw);
}
+1035: if self._callback_id != 0:
__pyx_t_2 = (__pyx_v_self->_callback_id != 0);
if (__pyx_t_2) {
/* … */
}
+1036: _token_callback_unregister(self._callback_id)
__pyx_f_7questdb_7_client__token_callback_unregister(__pyx_v_self->_callback_id);
+1037: self._callback_id = 0
__pyx_v_self->_callback_id = 0;
1038:
1039:
+1040: cdef object _tp_token(_TokenProviderHandle handle):
static PyObject *__pyx_f_7questdb_7_client__tp_token(struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_handle) {
questdb_error *__pyx_v_err;
struct questdb_token *__pyx_v_token;
PyObject *__pyx_v_exc = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client._tp_token", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_exc);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1041: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
1042: cdef questdb_token* token
1043: cdef object exc
+1044: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L5;
}
__pyx_L5:;
}
}
+1045: token = questdb_token_provider_token(handle._raw, &err)
__pyx_v_token = questdb_token_provider_token(__pyx_v_handle->_raw, (&__pyx_v_err));
}
+1046: if token == NULL:
__pyx_t_1 = (__pyx_v_token == NULL);
if (__pyx_t_1) {
/* … */
}
+1047: exc = c_err_to_py(err)
__pyx_t_2 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1047, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_exc = __pyx_t_2; __pyx_t_2 = 0;
1048: # Closing is one-way: this provider fails every later request too.
1049: # Marked so that an application provider which calls it and lets
1050: # this escape stops its clients (see `_tp_sink_exception`).
+1051: if _tp_handle_closed(handle):
__pyx_t_1 = __pyx_f_7questdb_7_client__tp_handle_closed(__pyx_v_handle);
if (__pyx_t_1) {
/* … */
}
+1052: exc._provider_closed = True
if (__Pyx_PyObject_SetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_provider_closed, Py_True) < (0)) __PYX_ERR(4, 1052, __pyx_L1_error)
+1053: raise exc
__Pyx_Raise(__pyx_v_exc, 0, 0, 0); __PYX_ERR(4, 1053, __pyx_L1_error)
+1054: try:
/*try:*/ {
+1055: return PyUnicode_FromStringAndSize(
__pyx_t_2 = PyUnicode_FromStringAndSize(questdb_token_data(__pyx_v_token), ((Py_ssize_t)questdb_token_len(__pyx_v_token))); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1055, __pyx_L9_error) __Pyx_GOTREF(__pyx_t_2); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L8_return; }
1056: questdb_token_data(token), <Py_ssize_t>questdb_token_len(token))
1057: finally:
+1058: questdb_token_free(token)
/*finally:*/ {
__pyx_L9_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
if ( unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_8);
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_10);
__Pyx_XGOTREF(__pyx_t_11);
__pyx_t_3 = __pyx_lineno; __pyx_t_4 = __pyx_clineno; __pyx_t_5 = __pyx_filename;
{
questdb_token_free(__pyx_v_token);
}
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
__pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
__pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_4; __pyx_filename = __pyx_t_5;
goto __pyx_L1_error;
}
__pyx_L8_return: {
__pyx_t_11 = __pyx_r;
__pyx_r = 0;
questdb_token_free(__pyx_v_token);
__pyx_r = __pyx_t_11;
__pyx_t_11 = 0;
goto __pyx_L0;
}
}
1059:
1060:
+1061: cdef void_int _tp_on_rejected(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__tp_on_rejected(struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_handle, PyObject *__pyx_v_token, PyObject *__pyx_v_http_status) {
PyObject *__pyx_v_encoded = 0;
char const *__pyx_v_buf;
size_t __pyx_v_length;
uint16_t __pyx_v_status;
__pyx_t_7questdb_7_client_void_int __pyx_r;
__Pyx_INCREF(__pyx_v_http_status);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_AddTraceback("questdb._client._tp_on_rejected", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_encoded);
__Pyx_XDECREF(__pyx_v_http_status);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1062: _TokenProviderHandle handle, object token,
1063: object http_status) except -1:
+1064: if not isinstance(token, str):
__pyx_t_1 = PyUnicode_Check(__pyx_v_token);
__pyx_t_2 = (!__pyx_t_1);
if (unlikely(__pyx_t_2)) {
/* … */
}
+1065: raise _ConfigTypeError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ConfigTypeError); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1065, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+1066: f'"token" must be a str, not {_fqn(type(token))}')
__pyx_t_6 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_token)))); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyUnicode_Unicode(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_token_must_be_a_str_not, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); assert(__pyx_t_4); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); __pyx_t_8 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1065, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(4, 1065, __pyx_L1_error)
+1067: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
goto __pyx_L9_try_end;
__pyx_L4_error:;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__pyx_L6_except_error:;
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
goto __pyx_L1_error;
__pyx_L9_try_end:;
}
+1068: http_status = operator.index(http_status)
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_operator); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1068, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1068, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_8 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_5);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_8 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_http_status};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1068, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_DECREF_SET(__pyx_v_http_status, __pyx_t_3);
__pyx_t_3 = 0;
+1069: except TypeError:
__pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_TypeError)))); if (__pyx_t_12) { __Pyx_AddTraceback("questdb._client._tp_on_rejected", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5) < 0) __PYX_ERR(4, 1069, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5);
+1070: raise _ConfigTypeError(
__pyx_t_7 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ConfigTypeError); if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 1070, __pyx_L6_except_error)
__Pyx_GOTREF(__pyx_t_13);
+1071: f'"http_status" must be an int, not '
__pyx_t_14 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_http_status_must_be_an_int_not, __pyx_t_15); if (unlikely(!__pyx_t_14)) __PYX_ERR(4, 1071, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_13))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_13); assert(__pyx_t_7); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_13, __pyx__function); __pyx_t_8 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_14}; __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_13, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1070, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_6); }
+1072: f'{_fqn(type(http_status))}') from None
__pyx_t_14 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_http_status)))); if (unlikely(!__pyx_t_14)) __PYX_ERR(4, 1072, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_15 = __Pyx_PyUnicode_Unicode(__pyx_t_14); if (unlikely(!__pyx_t_15)) __PYX_ERR(4, 1072, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; /* … */ __Pyx_Raise(__pyx_t_6, 0, 0, Py_None); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(4, 1070, __pyx_L6_except_error) } goto __pyx_L6_except_error;
+1073: if not 0 <= http_status <= 65535:
__pyx_t_2 = __Pyx_PyObject_CompareBoolLe_int_object(__pyx_mstate_global->__pyx_int_0, __pyx_v_http_status, Py_LE); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 1073, __pyx_L1_error) if (__pyx_t_2) { __pyx_t_2 = __Pyx_PyObject_CompareBoolLe_object_int(__pyx_v_http_status, __pyx_mstate_global->__pyx_int_65535, Py_LE); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 1073, __pyx_L1_error) } __pyx_t_1 = (!__pyx_t_2); if (unlikely(__pyx_t_1)) { /* … */ }
+1074: raise _ConfigValueError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1074, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+1075: f'"http_status" is not an HTTP status: {http_status}')
__pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_http_status, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1075, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_13 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_http_status_is_not_an_HTTP_stat, __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 1075, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); assert(__pyx_t_4); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); __pyx_t_8 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_13}; __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1074, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(4, 1074, __pyx_L1_error)
1076: cdef bytes encoded
+1077: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L18_try_end;
__pyx_L13_error:;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__pyx_L15_except_error:;
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
goto __pyx_L1_error;
__pyx_L18_try_end:;
}
+1078: encoded = (<str>token).encode('utf-8')
if (unlikely(__pyx_v_token == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "encode");
__PYX_ERR(4, 1078, __pyx_L13_error)
}
__pyx_t_5 = PyUnicode_AsUTF8String(((PyObject*)__pyx_v_token)); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1078, __pyx_L13_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_v_encoded = ((PyObject*)__pyx_t_5);
__pyx_t_5 = 0;
+1079: except UnicodeEncodeError:
__pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_UnicodeEncodeError)))); if (__pyx_t_12) { __Pyx_AddTraceback("questdb._client._tp_on_rejected", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_3, &__pyx_t_13) < 0) __PYX_ERR(4, 1079, __pyx_L15_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_13);
+1080: raise _ConfigValueError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_14)) __PYX_ERR(4, 1080, __pyx_L15_except_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_8 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_14))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_14);
assert(__pyx_t_6);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_14);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_14, __pyx__function);
__pyx_t_8 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_token_must_contain_valid_Unicod};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_14, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1080, __pyx_L15_except_error)
__Pyx_GOTREF(__pyx_t_4);
}
+1081: '"token" must contain valid Unicode text') from None
__Pyx_Raise(__pyx_t_4, 0, 0, Py_None); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(4, 1080, __pyx_L15_except_error) } goto __pyx_L15_except_error;
+1082: cdef const char* buf = encoded
__pyx_t_16 = __Pyx_PyBytes_AsString(__pyx_v_encoded); if (unlikely((!__pyx_t_16) && PyErr_Occurred())) __PYX_ERR(4, 1082, __pyx_L1_error) __pyx_v_buf = __pyx_t_16;
+1083: cdef size_t length = len(encoded)
__pyx_t_17 = __Pyx_PyBytes_GET_SIZE(__pyx_v_encoded); if (unlikely(__pyx_t_17 == ((Py_ssize_t)-1))) __PYX_ERR(4, 1083, __pyx_L1_error) __pyx_v_length = __pyx_t_17;
+1084: cdef uint16_t status = <uint16_t>http_status
__pyx_t_18 = __Pyx_PyLong_As_uint16_t(__pyx_v_http_status); if (unlikely((__pyx_t_18 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(4, 1084, __pyx_L1_error) __pyx_v_status = ((uint16_t)__pyx_t_18);
+1085: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L23;
}
__pyx_L23:;
}
}
+1086: questdb_token_provider_on_rejected(handle._raw, buf, length, status)
questdb_token_provider_on_rejected(__pyx_v_handle->_raw, __pyx_v_buf, __pyx_v_length, __pyx_v_status);
}
+1087: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
1088:
1089:
+1090: cdef bint _tp_handle_closed(_TokenProviderHandle handle) noexcept:
static int __pyx_f_7questdb_7_client__tp_handle_closed(struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_handle) {
struct questdb_token_provider_status __pyx_v_status;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
1091: """Whether the native provider ``handle`` owns is closed. A handle without
1092: one, or whose status cannot be read, counts as closed."""
1093: cdef questdb_token_provider_status status
+1094: if handle is None or handle._raw == NULL:
__pyx_t_2 = (((PyObject *)__pyx_v_handle) == Py_None);
if (!__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_handle->_raw == NULL);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+1095: return True
{
__pyx_r = 1;
}
goto __pyx_L0;
+1096: memset(&status, 0, sizeof(questdb_token_provider_status))
(void)(memset((&__pyx_v_status), 0, (sizeof(struct questdb_token_provider_status))));
+1097: status.struct_size = sizeof(questdb_token_provider_status)
__pyx_v_status.struct_size = (sizeof(struct questdb_token_provider_status));
+1098: if not questdb_token_provider_get_status(handle._raw, &status):
__pyx_t_1 = (!questdb_token_provider_get_status(__pyx_v_handle->_raw, (&__pyx_v_status)));
if (__pyx_t_1) {
/* … */
}
+1099: return True
{
__pyx_r = 1;
}
goto __pyx_L0;
+1100: return status.closed
{
__pyx_r = __pyx_v_status.closed;
}
goto __pyx_L0;
1101:
1102:
1103: # The only name `RefreshingTokenProvider` keeps in its instance dictionary.
+1104: cdef tuple _REFRESHING_PROVIDER_DICT_ATTRS = ('_handle',)
__Pyx_INCREF(__pyx_mstate_global->__pyx_tuple[67]); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__REFRESHING_PROVIDER_DICT_ATTRS); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__REFRESHING_PROVIDER_DICT_ATTRS, __pyx_mstate_global->__pyx_tuple[67]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[67]); /* … */ { PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_handle_2}; __pyx_mstate_global->__pyx_tuple[67] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[67])) __PYX_ERR(4, 1104, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[67]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[67]);
1105:
1106:
+1107: def _refreshing_provider_init_subclass(cls, **kwargs):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_93_refreshing_provider_init_subclass(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_93_refreshing_provider_init_subclass = {"_refreshing_provider_init_subclass", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_93_refreshing_provider_init_subclass, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_93_refreshing_provider_init_subclass(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_cls = 0;
PyObject *__pyx_v_kwargs = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_refreshing_provider_init_subclass (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
__pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
__Pyx_GOTREF(__pyx_v_kwargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_cls,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 1107, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1107, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, __pyx_v_kwargs, values, kwd_pos_args, __pyx_kwds_len, "_refreshing_provider_init_subclass", 1) < (0)) __PYX_ERR(4, 1107, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_refreshing_provider_init_subclass", 1, 1, 1, i); __PYX_ERR(4, 1107, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1107, __pyx_L3_error)
}
__pyx_v_cls = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_refreshing_provider_init_subclass", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 1107, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
__Pyx_AddTraceback("questdb._client._refreshing_provider_init_subclass", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_92_refreshing_provider_init_subclass(__pyx_self, __pyx_v_cls, __pyx_v_kwargs);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_DECREF(__pyx_v_kwargs);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_92_refreshing_provider_init_subclass(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_kwargs) {
PyObject *__pyx_r = NULL;
/* … */
/* 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_4);
__Pyx_AddTraceback("questdb._client._refreshing_provider_init_subclass", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_93_refreshing_provider_init_subclass, 0, __pyx_mstate_global->__pyx_n_u_refreshing_provider_init_subcla, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[140])); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 1107, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17);
#endif
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_refreshing_provider_init_subcla, __pyx_t_17) < (0)) __PYX_ERR(4, 1107, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+1108: super(RefreshingTokenProvider, cls).__init_subclass__(**kwargs)
__pyx_t_2 = NULL;
__pyx_t_3 = 1;
{
PyObject *__pyx_callargs[3] = {__pyx_t_2, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider), __pyx_v_cls};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1108, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_init_subclass); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1108, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1108, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1108, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1109: _subclass_keeps_generic_setattr(cls, RefreshingTokenProvider)
__pyx_t_4 = __pyx_v_cls; __Pyx_INCREF(__pyx_t_4); if (!(likely(PyType_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("type", __pyx_t_4))) __PYX_ERR(4, 1109, __pyx_L1_error) __pyx_t_5 = __pyx_f_7questdb_7_client__subclass_keeps_generic_setattr(((PyTypeObject*)__pyx_t_4), __pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider); if (unlikely(__pyx_t_5 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(4, 1109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
1110:
1111:
+1112: cdef class RefreshingTokenProvider:
struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider {
PyObject_HEAD
struct __pyx_vtabstruct_7questdb_7_client_RefreshingTokenProvider *__pyx_vtab;
PyObject *__dict__;
PyObject *_name;
};
/* … */
struct __pyx_vtabstruct_7questdb_7_client_RefreshingTokenProvider {
struct __pyx_obj_7questdb_7_client__TokenProviderHandle *(*_require_handle)(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *);
};
static struct __pyx_vtabstruct_7questdb_7_client_RefreshingTokenProvider *__pyx_vtabptr_7questdb_7_client_RefreshingTokenProvider;
1113: """
1114: A proactively refreshing token cache in front of a token source.
1115:
1116: ``source`` fetches a new token however you like -- Azure Identity, an
1117: OAuth2 client-credentials or PKCE flow, a device flow, a secrets vault. It
1118: is a callable, or an object with a ``fetch_token()`` method, returning an
1119: :class:`ExpiringToken`, a ``(token, expires_at)`` tuple, or any object with
1120: ``token`` and ``expires_on`` (epoch seconds) attributes -- Azure Core's
1121: ``AccessToken`` and ``AccessTokenInfo`` (with ``refresh_on``) qualify, so::
1122:
1123: from azure.identity import ManagedIdentityCredential # your dependency
1124: credential = ManagedIdentityCredential()
1125: tokens = RefreshingTokenProvider(
1126: lambda: credential.get_token_info("api://<app-id>/.default"))
1127: with questdb.connect(
1128: "wss::addr=db.example.com:9000;",
1129: bearer_token_provider=tokens) as db:
1130: ...
1131:
1132: To classify a failure, raise :class:`TokenUnavailableError`; any other
1133: exception counts as retryable. A source cannot stop the provider's
1134: clients from reconnecting: :meth:`close` the provider instead.
1135:
1136: The provider calls ``source`` only on its own thread, never concurrently,
1137: starting at once. It refreshes the token in the background at about half
1138: its lifetime, so clients read a cached token and never wait for the
1139: identity platform; it retries failures with jittered backoff, and
1140: refreshes early when a server rejects the token with HTTP 401. A token is
1141: handed out only while more than ``handout_floor`` of its lifetime
1142: remains. Behaviour follows the cross-language dynamic-credential
1143: specification.
1144:
1145: A subclass that overrides :meth:`token` or :meth:`on_rejected` is
1146: attached like any other application provider: clients call those methods
1147: rather than reading the cache past them. Closing it still ends them -- a
1148: failure of its :meth:`token` once it is closed stops them as an
1149: application provider's ``InvalidApiCall`` does, so they report
1150: ``ConfigError`` -- and attaching it once closed fails as for this class.
1151: Closing also ends the clients of a provider of your own that calls
1152: :meth:`token` and lets its error escape, such as
1153: ``bearer_token_provider=lambda: tokens.token()``, and a method bound to a
1154: closed provider, ``tokens.token``, is refused as the provider is.
1155:
1156: The keyword parameters are durations, in seconds or as
1157: :class:`datetime.timedelta`, and default to the specification's values:
1158: ``refresh_margin`` (300), ``min_refresh_interval`` (30), ``handout_floor``
1159: (60), ``cold_wait`` (30: the longest a client waits when no usable token
1160: is held), ``backoff_initial`` (0.5), ``backoff_max`` (60),
1161: ``retry_after_max`` (300), ``forced_min_interval`` (30) and
1162: ``forced_wait`` (5).
1163:
1164: Clients keep the provider alive and never close it: close it, or use it as
1165: a context manager, once no client needs it. Closing it fails every client
1166: that still uses it. Providers and clients must not be used across
1167: ``fork()``. Use ``spawn``/``exec`` workers and construct providers there,
1168: or fork before constructing any providers or clients: a fresh provider
1169: alone does not repair a multithreaded parent's inherited native state.
1170: Its ``repr`` never shows the token.
1171: """
1172: # _handle must be visible to PyPy's collector too: sources may own this
1173: # provider, so a cpyext-only reference here would still root that cycle.
1174: # `__setattr__` keeps every other name out of it.
1175: cdef dict __dict__
1176: cdef str _name
1177:
+1178: def __setattr__(self, name, value):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_23RefreshingTokenProvider_1__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7questdb_7_client_23RefreshingTokenProvider_1__setattr__(PyObject *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__setattr__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_7questdb_7_client_23RefreshingTokenProvider___setattr__(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self), ((PyObject *)__pyx_v_name), ((PyObject *)__pyx_v_value));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_23RefreshingTokenProvider___setattr__(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.__setattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1179: _setattr_without_dict(
__pyx_t_2 = __pyx_f_7questdb_7_client__setattr_without_dict(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, ((PyObject*)__pyx_t_1), __pyx_v_name, __pyx_v_value); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(4, 1179, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1180: self, RefreshingTokenProvider, _REFRESHING_PROVIDER_DICT_ATTRS,
__pyx_t_1 = __pyx_v_7questdb_7_client__REFRESHING_PROVIDER_DICT_ATTRS;
__Pyx_INCREF(__pyx_t_1);
1181: name, value)
1182:
1183: # As `Sender.__init_subclass__`; see `_subclass_keeps_generic_setattr`.
+1184: __init_subclass__ = classmethod(_refreshing_provider_init_subclass)
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_refreshing_provider_init_subcla); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 1184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_5 = __Pyx_Method_ClassMethod(__pyx_t_17); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_init_subclass, __pyx_t_5) < (0)) __PYX_ERR(4, 1184, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
1185:
+1186: def __cinit__(self):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_23RefreshingTokenProvider_3__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_pw_7questdb_7_client_23RefreshingTokenProvider_3__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
#if !CYTHON_VECTORCALL_TPNEW
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
#if !CYTHON_VECTORCALL_TPNEW
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL_TPNEW(__pyx_args, __pyx_nargs);
if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1; }
const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL_TPNEW(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) return -1;
if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); return -1;}
__pyx_r = __pyx_pf_7questdb_7_client_23RefreshingTokenProvider_2__cinit__(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_23RefreshingTokenProvider_2__cinit__(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *__pyx_v_self) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
return __pyx_r;
}
+1187: self._handle = None
if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_handle_2, Py_None) < (0)) __PYX_ERR(4, 1187, __pyx_L1_error)
1188:
+1189: def __init__(
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_23RefreshingTokenProvider_5__init__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_pw_7questdb_7_client_23RefreshingTokenProvider_5__init__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_source = 0;
PyObject *__pyx_v_name = 0;
PyObject *__pyx_v_refresh_margin = 0;
PyObject *__pyx_v_min_refresh_interval = 0;
PyObject *__pyx_v_handout_floor = 0;
PyObject *__pyx_v_cold_wait = 0;
PyObject *__pyx_v_backoff_initial = 0;
PyObject *__pyx_v_backoff_max = 0;
PyObject *__pyx_v_retry_after_max = 0;
PyObject *__pyx_v_forced_min_interval = 0;
PyObject *__pyx_v_forced_wait = 0;
#if !CYTHON_VECTORCALL_TPNEW
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
#if !CYTHON_VECTORCALL_TPNEW
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL_TPNEW(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_source,&__pyx_mstate_global->__pyx_n_u_name,&__pyx_mstate_global->__pyx_n_u_refresh_margin,&__pyx_mstate_global->__pyx_n_u_min_refresh_interval,&__pyx_mstate_global->__pyx_n_u_handout_floor,&__pyx_mstate_global->__pyx_n_u_cold_wait,&__pyx_mstate_global->__pyx_n_u_backoff_initial,&__pyx_mstate_global->__pyx_n_u_backoff_max,&__pyx_mstate_global->__pyx_n_u_retry_after_max,&__pyx_mstate_global->__pyx_n_u_forced_min_interval,&__pyx_mstate_global->__pyx_n_u_forced_wait,0};
PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL_TPNEW(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 1189, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL_TPNEW(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1189, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(4, 1189, __pyx_L3_error)
/* … */
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_23RefreshingTokenProvider_4__init__(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *__pyx_v_self, PyObject *__pyx_v_source, PyObject *__pyx_v_name, PyObject *__pyx_v_refresh_margin, PyObject *__pyx_v_min_refresh_interval, PyObject *__pyx_v_handout_floor, PyObject *__pyx_v_cold_wait, PyObject *__pyx_v_backoff_initial, PyObject *__pyx_v_backoff_max, PyObject *__pyx_v_retry_after_max, PyObject *__pyx_v_forced_min_interval, PyObject *__pyx_v_forced_wait) {
struct questdb_refreshing_token_provider_options __pyx_v_options;
questdb_error *__pyx_v_err;
struct questdb_token_provider *__pyx_v_raw;
PyObject *__pyx_v_name_bytes = 0;
struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_handle = 0;
size_t __pyx_v_callback_id;
PyObject *__pyx_v_fetch = NULL;
PyObject *__pyx_v_field_name = NULL;
PyObject *__pyx_v_value = NULL;
uint64_t __pyx_v_ms;
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_XDECREF(__pyx_t_19);
__Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_name_bytes);
__Pyx_XDECREF((PyObject *)__pyx_v_handle);
__Pyx_XDECREF(__pyx_v_fetch);
__Pyx_XDECREF(__pyx_v_field_name);
__Pyx_XDECREF(__pyx_v_value);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1190: self,
1191: source,
1192: *,
+1193: name=None,
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
+1194: refresh_margin=None,
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
+1195: min_refresh_interval=None,
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
+1196: handout_floor=None,
if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
+1197: cold_wait=None,
if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
+1198: backoff_initial=None,
if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
+1199: backoff_max=None,
if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
+1200: retry_after_max=None,
if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
+1201: forced_min_interval=None,
if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None));
+1202: forced_wait=None):
if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, i); __PYX_ERR(4, 1189, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL_TPNEW(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1189, __pyx_L3_error) /* … */ if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_source = values[0]; __pyx_v_name = values[1]; __pyx_v_refresh_margin = values[2]; __pyx_v_min_refresh_interval = values[3]; __pyx_v_handout_floor = values[4]; __pyx_v_cold_wait = values[5]; __pyx_v_backoff_initial = values[6]; __pyx_v_backoff_max = values[7]; __pyx_v_retry_after_max = values[8]; __pyx_v_forced_min_interval = values[9]; __pyx_v_forced_wait = values[10]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 1189, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_23RefreshingTokenProvider_4__init__(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self), __pyx_v_source, __pyx_v_name, __pyx_v_refresh_margin, __pyx_v_min_refresh_interval, __pyx_v_handout_floor, __pyx_v_cold_wait, __pyx_v_backoff_initial, __pyx_v_backoff_max, __pyx_v_retry_after_max, __pyx_v_forced_min_interval, __pyx_v_forced_wait);
1203: cdef questdb_refreshing_token_provider_options options
+1204: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
1205: cdef questdb_token_provider* raw
+1206: cdef bytes name_bytes = None
__Pyx_INCREF(Py_None);
__pyx_v_name_bytes = ((PyObject*)Py_None);
1207: cdef _TokenProviderHandle handle
1208: cdef size_t callback_id
+1209: if self._handle is not None:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_handle_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 != Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+1210: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1210, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+1211: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_7 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_mstate_global->__pyx_kp_u_RefreshingTokenProvider_is_alrea}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1210, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(4, 1210, __pyx_L1_error)
1212: 'RefreshingTokenProvider is already initialized.')
+1213: fetch = getattr(source, 'fetch_token', None)
__pyx_t_1 = __Pyx_GetAttr3(__pyx_v_source, __pyx_mstate_global->__pyx_n_u_fetch_token, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_fetch = __pyx_t_1; __pyx_t_1 = 0;
+1214: if not callable(fetch):
__pyx_t_2 = __Pyx_PyCallable_Check(__pyx_v_fetch); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(4, 1214, __pyx_L1_error) __pyx_t_8 = (!__pyx_t_2); if (__pyx_t_8) { /* … */ }
+1215: if not callable(source):
__pyx_t_8 = __Pyx_PyCallable_Check(__pyx_v_source); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 1215, __pyx_L1_error) __pyx_t_2 = (!__pyx_t_8); if (unlikely(__pyx_t_2)) { /* … */ }
+1216: raise _ConfigTypeError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ConfigTypeError); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1216, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
+1217: '"source" must be a callable or an object with a '
__pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_source_must_be_a_callable_or_an, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1217, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); assert(__pyx_t_4); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); __pyx_t_7 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(4, 1216, __pyx_L1_error)
+1218: f'fetch_token() method, not {_fqn(type(source))}')
__pyx_t_3 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_source)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1219: fetch = source
__Pyx_INCREF(__pyx_v_source); __Pyx_DECREF_SET(__pyx_v_fetch, __pyx_v_source);
+1220: questdb_refreshing_token_provider_options_init(
questdb_refreshing_token_provider_options_init((&__pyx_v_options), (sizeof(struct questdb_refreshing_token_provider_options)));
1221: &options, sizeof(questdb_refreshing_token_provider_options))
+1222: if name is not None:
__pyx_t_2 = (__pyx_v_name != Py_None);
if (__pyx_t_2) {
/* … */
}
+1223: if not isinstance(name, str):
__pyx_t_2 = PyUnicode_Check(__pyx_v_name);
__pyx_t_8 = (!__pyx_t_2);
if (unlikely(__pyx_t_8)) {
/* … */
}
+1224: raise _ConfigTypeError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ConfigTypeError); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1224, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+1225: f'"name" must be a str, not {_fqn(type(name))}')
__pyx_t_4 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_name)))); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_name_must_be_a_str_not, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); assert(__pyx_t_6); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); __pyx_t_7 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_4}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(4, 1224, __pyx_L1_error)
+1226: if not name.strip():
__pyx_t_3 = __pyx_v_name;
__Pyx_INCREF(__pyx_t_3);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_strip, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1226, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(4, 1226, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_2 = (!__pyx_t_8);
if (unlikely(__pyx_t_2)) {
/* … */
}
+1227: raise _ConfigValueError('"name" must be a non-empty str')
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1227, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_7 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_7 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_name_must_be_a_non_empty_str};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1227, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(4, 1227, __pyx_L1_error)
+1228: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
goto __pyx_L14_try_end;
__pyx_L9_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
__pyx_L11_except_error:;
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
goto __pyx_L1_error;
__pyx_L14_try_end:;
}
+1229: name_bytes = name.encode('utf-8')
__pyx_t_4 = __pyx_v_name;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_utf_8};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1229, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_1);
}
if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_1))) __PYX_ERR(4, 1229, __pyx_L9_error)
__Pyx_DECREF_SET(__pyx_v_name_bytes, ((PyObject*)__pyx_t_1));
__pyx_t_1 = 0;
+1230: except UnicodeEncodeError:
__pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_UnicodeEncodeError)))); if (__pyx_t_12) { __Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(4, 1230, __pyx_L11_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_3);
+1231: raise _ConfigValueError(
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 1231, __pyx_L11_except_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_7 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_13))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_13);
assert(__pyx_t_5);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_13);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_13, __pyx__function);
__pyx_t_7 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_name_must_contain_valid_Unicode};
__pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_13, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1231, __pyx_L11_except_error)
__Pyx_GOTREF(__pyx_t_6);
}
+1232: '"name" must contain valid Unicode text') from None
__Pyx_Raise(__pyx_t_6, 0, 0, Py_None); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(4, 1231, __pyx_L11_except_error) } goto __pyx_L11_except_error;
+1233: options.name = name_bytes
if (unlikely(__pyx_v_name_bytes == Py_None)) {
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(4, 1233, __pyx_L1_error)
}
__pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_name_bytes); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(4, 1233, __pyx_L1_error)
__pyx_v_options.name = __pyx_t_14;
+1234: options.name_len = len(name_bytes)
if (unlikely(__pyx_v_name_bytes == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(4, 1234, __pyx_L1_error)
}
__pyx_t_15 = __Pyx_PyBytes_GET_SIZE(__pyx_v_name_bytes); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(4, 1234, __pyx_L1_error)
__pyx_v_options.name_len = __pyx_t_15;
+1235: for field_name, value in (
__pyx_t_18 = __pyx_t_19; __Pyx_INCREF(__pyx_t_18); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; for (;;) { if (__pyx_t_15 >= 9) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_19 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_18, __pyx_t_15)); #else __pyx_t_19 = __Pyx_PySequence_ITEM(__pyx_t_18, __pyx_t_15); #endif ++__pyx_t_15; if (unlikely(!__pyx_t_19)) __PYX_ERR(4, 1235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); if (!(likely(PyTuple_CheckExact(__pyx_t_19))||((__pyx_t_19) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_19))) __PYX_ERR(4, 1235, __pyx_L1_error) if (likely(__pyx_t_19 != Py_None)) { PyObject* sequence = __pyx_t_19; Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(4, 1235, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_17 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_17); __pyx_t_16 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_16); #else __pyx_t_17 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 1235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_16 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 1235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); #endif __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; } else { __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(4, 1235, __pyx_L1_error) } if (!(likely(PyUnicode_CheckExact(__pyx_t_17))||((__pyx_t_17) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_17))) __PYX_ERR(4, 1235, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_field_name, ((PyObject*)__pyx_t_17)); __pyx_t_17 = 0; __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_16); __pyx_t_16 = 0; /* … */ __pyx_L17_continue:; } __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+1236: ('refresh_margin', refresh_margin),
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1236, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_refresh_margin); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_refresh_margin); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_mstate_global->__pyx_n_u_refresh_margin) != (0)) __PYX_ERR(4, 1236, __pyx_L1_error); __Pyx_INCREF(__pyx_v_refresh_margin); __Pyx_GIVEREF(__pyx_v_refresh_margin); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_refresh_margin) != (0)) __PYX_ERR(4, 1236, __pyx_L1_error); /* … */ __pyx_t_19 = PyTuple_New(9); if (unlikely(!__pyx_t_19)) __PYX_ERR(4, 1236, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_3) != (0)) __PYX_ERR(4, 1236, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_19, 1, __pyx_t_4) != (0)) __PYX_ERR(4, 1236, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_19, 2, __pyx_t_1) != (0)) __PYX_ERR(4, 1236, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_6); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_19, 3, __pyx_t_6) != (0)) __PYX_ERR(4, 1236, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_13); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_19, 4, __pyx_t_13) != (0)) __PYX_ERR(4, 1236, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_19, 5, __pyx_t_5) != (0)) __PYX_ERR(4, 1236, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_16); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_19, 6, __pyx_t_16) != (0)) __PYX_ERR(4, 1236, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_17); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_19, 7, __pyx_t_17) != (0)) __PYX_ERR(4, 1236, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_18); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_19, 8, __pyx_t_18) != (0)) __PYX_ERR(4, 1236, __pyx_L1_error); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_13 = 0; __pyx_t_5 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
+1237: ('min_refresh_interval', min_refresh_interval),
__pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_min_refresh_interval); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_min_refresh_interval); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_mstate_global->__pyx_n_u_min_refresh_interval) != (0)) __PYX_ERR(4, 1237, __pyx_L1_error); __Pyx_INCREF(__pyx_v_min_refresh_interval); __Pyx_GIVEREF(__pyx_v_min_refresh_interval); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_min_refresh_interval) != (0)) __PYX_ERR(4, 1237, __pyx_L1_error);
+1238: ('handout_floor', handout_floor),
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_handout_floor); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_handout_floor); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_mstate_global->__pyx_n_u_handout_floor) != (0)) __PYX_ERR(4, 1238, __pyx_L1_error); __Pyx_INCREF(__pyx_v_handout_floor); __Pyx_GIVEREF(__pyx_v_handout_floor); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_handout_floor) != (0)) __PYX_ERR(4, 1238, __pyx_L1_error);
+1239: ('cold_wait', cold_wait),
__pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_cold_wait); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_cold_wait); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_mstate_global->__pyx_n_u_cold_wait) != (0)) __PYX_ERR(4, 1239, __pyx_L1_error); __Pyx_INCREF(__pyx_v_cold_wait); __Pyx_GIVEREF(__pyx_v_cold_wait); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_cold_wait) != (0)) __PYX_ERR(4, 1239, __pyx_L1_error);
+1240: ('backoff_initial', backoff_initial),
__pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 1240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_backoff_initial); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_backoff_initial); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_mstate_global->__pyx_n_u_backoff_initial) != (0)) __PYX_ERR(4, 1240, __pyx_L1_error); __Pyx_INCREF(__pyx_v_backoff_initial); __Pyx_GIVEREF(__pyx_v_backoff_initial); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_v_backoff_initial) != (0)) __PYX_ERR(4, 1240, __pyx_L1_error);
+1241: ('backoff_max', backoff_max),
__pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_backoff_max); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_backoff_max); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_mstate_global->__pyx_n_u_backoff_max) != (0)) __PYX_ERR(4, 1241, __pyx_L1_error); __Pyx_INCREF(__pyx_v_backoff_max); __Pyx_GIVEREF(__pyx_v_backoff_max); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_backoff_max) != (0)) __PYX_ERR(4, 1241, __pyx_L1_error);
+1242: ('retry_after_max', retry_after_max),
__pyx_t_16 = PyTuple_New(2); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 1242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_retry_after_max); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_retry_after_max); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_mstate_global->__pyx_n_u_retry_after_max) != (0)) __PYX_ERR(4, 1242, __pyx_L1_error); __Pyx_INCREF(__pyx_v_retry_after_max); __Pyx_GIVEREF(__pyx_v_retry_after_max); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_16, 1, __pyx_v_retry_after_max) != (0)) __PYX_ERR(4, 1242, __pyx_L1_error);
+1243: ('forced_min_interval', forced_min_interval),
__pyx_t_17 = PyTuple_New(2); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 1243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_forced_min_interval); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_forced_min_interval); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_mstate_global->__pyx_n_u_forced_min_interval) != (0)) __PYX_ERR(4, 1243, __pyx_L1_error); __Pyx_INCREF(__pyx_v_forced_min_interval); __Pyx_GIVEREF(__pyx_v_forced_min_interval); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_17, 1, __pyx_v_forced_min_interval) != (0)) __PYX_ERR(4, 1243, __pyx_L1_error);
+1244: ('forced_wait', forced_wait)):
__pyx_t_18 = PyTuple_New(2); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 1244, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_forced_wait); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_forced_wait); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_mstate_global->__pyx_n_u_forced_wait) != (0)) __PYX_ERR(4, 1244, __pyx_L1_error); __Pyx_INCREF(__pyx_v_forced_wait); __Pyx_GIVEREF(__pyx_v_forced_wait); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_v_forced_wait) != (0)) __PYX_ERR(4, 1244, __pyx_L1_error);
+1245: if value is None:
__pyx_t_2 = (__pyx_v_value == Py_None);
if (__pyx_t_2) {
/* … */
}
+1246: continue
goto __pyx_L17_continue;
+1247: ms = _tp_duration_ms(value, field_name)
__pyx_t_20 = __pyx_f_7questdb_7_client__tp_duration_ms(__pyx_v_value, __pyx_v_field_name); if (unlikely(__pyx_t_20 == ((uint64_t)0) && PyErr_Occurred())) __PYX_ERR(4, 1247, __pyx_L1_error) __pyx_v_ms = __pyx_t_20;
+1248: if field_name == 'refresh_margin':
__pyx_t_2 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_v_field_name, __pyx_mstate_global->__pyx_n_u_refresh_margin, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 1248, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L20; }
+1249: options.refresh_margin_ms = ms
__pyx_v_options.refresh_margin_ms = __pyx_v_ms;
+1250: elif field_name == 'min_refresh_interval':
__pyx_t_2 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_v_field_name, __pyx_mstate_global->__pyx_n_u_min_refresh_interval, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 1250, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L20; }
+1251: options.min_refresh_interval_ms = ms
__pyx_v_options.min_refresh_interval_ms = __pyx_v_ms;
+1252: elif field_name == 'handout_floor':
__pyx_t_2 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_v_field_name, __pyx_mstate_global->__pyx_n_u_handout_floor, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 1252, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L20; }
+1253: options.handout_floor_ms = ms
__pyx_v_options.handout_floor_ms = __pyx_v_ms;
+1254: elif field_name == 'cold_wait':
__pyx_t_2 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_v_field_name, __pyx_mstate_global->__pyx_n_u_cold_wait, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 1254, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L20; }
+1255: options.cold_wait_ms = ms
__pyx_v_options.cold_wait_ms = __pyx_v_ms;
+1256: elif field_name == 'backoff_initial':
__pyx_t_2 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_v_field_name, __pyx_mstate_global->__pyx_n_u_backoff_initial, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 1256, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L20; }
+1257: options.backoff_initial_ms = ms
__pyx_v_options.backoff_initial_ms = __pyx_v_ms;
+1258: elif field_name == 'backoff_max':
__pyx_t_2 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_v_field_name, __pyx_mstate_global->__pyx_n_u_backoff_max, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 1258, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L20; }
+1259: options.backoff_max_ms = ms
__pyx_v_options.backoff_max_ms = __pyx_v_ms;
+1260: elif field_name == 'retry_after_max':
__pyx_t_2 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_v_field_name, __pyx_mstate_global->__pyx_n_u_retry_after_max, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 1260, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L20; }
+1261: options.retry_after_max_ms = ms
__pyx_v_options.retry_after_max_ms = __pyx_v_ms;
+1262: elif field_name == 'forced_min_interval':
__pyx_t_2 = __Pyx_PyObject_CompareBoolEq_str_str(__pyx_v_field_name, __pyx_mstate_global->__pyx_n_u_forced_min_interval, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 1262, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L20; }
+1263: options.forced_min_interval_ms = ms
__pyx_v_options.forced_min_interval_ms = __pyx_v_ms;
1264: else:
+1265: options.forced_wait_ms = ms
/*else*/ {
__pyx_v_options.forced_wait_ms = __pyx_v_ms;
}
__pyx_L20:;
+1266: handle = _TokenProviderHandle()
__pyx_t_19 = NULL;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_19, NULL};
__pyx_t_18 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client__TokenProviderHandle, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 1266, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_18);
}
__pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_18);
__pyx_t_18 = 0;
+1267: callback_id = _token_callback_register(handle, fetch)
__pyx_t_7 = __pyx_f_7questdb_7_client__token_callback_register(__pyx_v_handle, __pyx_v_fetch); if (unlikely(__pyx_t_7 == ((size_t)0))) __PYX_ERR(4, 1267, __pyx_L1_error)
__pyx_v_callback_id = __pyx_t_7;
+1268: handle._callback_id = callback_id
__pyx_v_handle->_callback_id = __pyx_v_callback_id;
+1269: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L24;
}
__pyx_L24:;
}
}
+1270: raw = questdb_refreshing_token_provider_new(
__pyx_v_raw = questdb_refreshing_token_provider_new(__pyx_f_7questdb_7_client__token_source_trampoline, ((void *)__pyx_v_callback_id), __pyx_f_7questdb_7_client__token_release_trampoline, (&__pyx_v_options), (&__pyx_v_err));
}
1271: _token_source_trampoline,
1272: <void*>callback_id,
1273: _token_release_trampoline,
1274: &options,
1275: &err)
+1276: if raw == NULL:
__pyx_t_2 = (__pyx_v_raw == NULL);
if (unlikely(__pyx_t_2)) {
/* … */
}
+1277: raise c_err_to_py(err)
__pyx_t_18 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 1277, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_Raise(__pyx_t_18, 0, 0, 0); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __PYX_ERR(4, 1277, __pyx_L1_error)
+1278: handle._raw = raw
__pyx_v_handle->_raw = __pyx_v_raw;
+1279: self._handle = handle
if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_handle_2, ((PyObject *)__pyx_v_handle)) < (0)) __PYX_ERR(4, 1279, __pyx_L1_error)
+1280: self._name = name if name is not None else 'token-provider'
__pyx_t_2 = (__pyx_v_name != Py_None);
if (__pyx_t_2) {
__pyx_t_19 = __pyx_v_name;
__Pyx_INCREF(__pyx_t_19);
if (!(likely(PyUnicode_CheckExact(__pyx_t_19))||((__pyx_t_19) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_19))) __PYX_ERR(4, 1280, __pyx_L1_error)
__pyx_t_18 = __pyx_t_19;
__pyx_t_19 = 0;
} else {
__Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_token_provider);
__pyx_t_18 = __pyx_mstate_global->__pyx_kp_u_token_provider;
}
__Pyx_GIVEREF(__pyx_t_18);
__Pyx_GOTREF(__pyx_v_self->_name);
__Pyx_DECREF_SET(__pyx_v_self->_name, ((PyObject*)__pyx_t_18));
__pyx_t_18 = 0;
1281:
+1282: cdef _TokenProviderHandle _require_handle(self):
static struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_f_7questdb_7_client_23RefreshingTokenProvider__require_handle(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *__pyx_v_self) {
struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client.RefreshingTokenProvider._require_handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1283: if self._handle is None:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_handle_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+1284: raise ValueError('RefreshingTokenProvider is not initialized')
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_RefreshingTokenProvider_is_not_i};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1284, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(4, 1284, __pyx_L1_error)
+1285: return self._handle
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_handle_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1285, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__TokenProviderHandle))))) __PYX_ERR(4, 1285, __pyx_L1_error) { struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_1); } __Pyx_XDECREF((PyObject *)__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
1286:
+1287: def token(self) -> str:
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_7token(PyObject *__pyx_v_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_23RefreshingTokenProvider_6token, "\n A usable token: at once when one is held, otherwise after waiting up\n to ``cold_wait`` for a fetch. Releases the GIL while it waits.\n\n :raises TokenUnavailableError: no usable token arrived in time\n (classified like the most recent failed fetch), or the provider\n is closed.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_23RefreshingTokenProvider_7token = {"token", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_7token, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_23RefreshingTokenProvider_6token}; static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_7token(PyObject *__pyx_v_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("token (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("token", 1, 0, 0, __pyx_nargs); return NULL; } const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("token", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_23RefreshingTokenProvider_6token(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_23RefreshingTokenProvider_6token(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *__pyx_v_self) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.token", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1287, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str_2) < (0)) __PYX_ERR(4, 1287, __pyx_L1_error) __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_23RefreshingTokenProvider_7token, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_RefreshingTokenProvider_token, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[141])); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 1287, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_17, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_token, __pyx_t_17) < (0)) __PYX_ERR(4, 1287, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
1288: """
1289: A usable token: at once when one is held, otherwise after waiting up
1290: to ``cold_wait`` for a fetch. Releases the GIL while it waits.
1291:
1292: :raises TokenUnavailableError: no usable token arrived in time
1293: (classified like the most recent failed fetch), or the provider
1294: is closed.
1295: """
+1296: return _tp_token(self._require_handle())
__pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self->__pyx_vtab)->_require_handle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __pyx_f_7questdb_7_client__tp_token(((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(4, 1296, __pyx_L1_error) { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_2); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
1297:
+1298: def headers(self) -> dict:
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_9headers(PyObject *__pyx_v_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_23RefreshingTokenProvider_8headers, "``{\"Authorization\": \"Bearer <token>\"}``, for a client of your\n own."); static PyMethodDef __pyx_mdef_7questdb_7_client_23RefreshingTokenProvider_9headers = {"headers", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_9headers, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_23RefreshingTokenProvider_8headers}; static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_9headers(PyObject *__pyx_v_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("headers (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("headers", 1, 0, 0, __pyx_nargs); return NULL; } const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) return NULL; if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("headers", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_23RefreshingTokenProvider_8headers(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_23RefreshingTokenProvider_8headers(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *__pyx_v_self) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.headers", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 1298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_dict_2) < (0)) __PYX_ERR(4, 1298, __pyx_L1_error) __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_23RefreshingTokenProvider_9headers, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_RefreshingTokenProvider_headers, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[142])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_17); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_headers, __pyx_t_5) < (0)) __PYX_ERR(4, 1298, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
1299: """``{"Authorization": "Bearer <token>"}``, for a client of your
1300: own."""
+1301: return {'Authorization': 'Bearer ' + self.token()}
__pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = ((PyObject *)__pyx_v_self); __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_token, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_t_3 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_Bearer, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_Authorization, __pyx_t_3) < (0)) __PYX_ERR(4, 1301, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_1); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
1302:
+1303: def on_rejected(self, token, http_status=401):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_11on_rejected(PyObject *__pyx_v_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_23RefreshingTokenProvider_10on_rejected, "\n Tell the provider that a server rejected ``token`` with\n ``http_status``, for a client of your own. A 401 for the current token\n refreshes it early -- at most once per ``forced_min_interval`` -- and\n waits up to ``forced_wait`` for the result. A 401 for the same token\n while that refresh is still fetching waits for it too. While the\n provider backs off from failed fetches until after that wait would\n end, no new token can arrive in time, and it returns at once.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_23RefreshingTokenProvider_11on_rejected = {"on_rejected", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_11on_rejected, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_23RefreshingTokenProvider_10on_rejected}; static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_11on_rejected(PyObject *__pyx_v_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_token = 0; PyObject *__pyx_v_http_status = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("on_rejected (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_token,&__pyx_mstate_global->__pyx_n_u_http_status,0}; PyObject* values[2] = {0,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 1303, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 1303, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1303, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "on_rejected", 0) < (0)) __PYX_ERR(4, 1303, __pyx_L3_error) if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_401)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("on_rejected", 0, 1, 2, i); __PYX_ERR(4, 1303, __pyx_L3_error) } } } else { switch (__pyx_nargs) { case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 1303, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1303, __pyx_L3_error) break; default: goto __pyx_L5_argtuple_error; } if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_401)); } __pyx_v_token = values[0]; __pyx_v_http_status = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("on_rejected", 0, 1, 2, __pyx_nargs); __PYX_ERR(4, 1303, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.on_rejected", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_23RefreshingTokenProvider_10on_rejected(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self), __pyx_v_token, __pyx_v_http_status); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_23RefreshingTokenProvider_10on_rejected(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *__pyx_v_self, PyObject *__pyx_v_token, PyObject *__pyx_v_http_status) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.on_rejected", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_23RefreshingTokenProvider_11on_rejected, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_RefreshingTokenProvider_on_rejec, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[143])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[68]); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_on_rejected, __pyx_t_5) < (0)) __PYX_ERR(4, 1303, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* … */ { PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_int_401}; __pyx_mstate_global->__pyx_tuple[68] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[68])) __PYX_ERR(4, 1303, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[68]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[68]);
1304: """
1305: Tell the provider that a server rejected ``token`` with
1306: ``http_status``, for a client of your own. A 401 for the current token
1307: refreshes it early -- at most once per ``forced_min_interval`` -- and
1308: waits up to ``forced_wait`` for the result. A 401 for the same token
1309: while that refresh is still fetching waits for it too. While the
1310: provider backs off from failed fetches until after that wait would
1311: end, no new token can arrive in time, and it returns at once.
1312: """
+1313: _tp_on_rejected(self._require_handle(), token, http_status)
__pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self->__pyx_vtab)->_require_handle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __pyx_f_7questdb_7_client__tp_on_rejected(((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_1), __pyx_v_token, __pyx_v_http_status); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(4, 1313, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1314:
+1315: def await_ready(self, timeout=30.0) -> bool:
/* Python wrapper */ static PyLongObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_13await_ready(PyObject *__pyx_v_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_23RefreshingTokenProvider_12await_ready, "Wait up to ``timeout`` (seconds or a ``timedelta``) for a usable\n token. Returns ``False`` on timeout or once closed."); static PyMethodDef __pyx_mdef_7questdb_7_client_23RefreshingTokenProvider_13await_ready = {"await_ready", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_13await_ready, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_23RefreshingTokenProvider_12await_ready}; static PyLongObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_13await_ready(PyObject *__pyx_v_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_timeout = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyLongObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("await_ready (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_timeout,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 1315, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1315, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "await_ready", 0) < (0)) __PYX_ERR(4, 1315, __pyx_L3_error) if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_float_30_0)); } else { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1315, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_float_30_0)); } __pyx_v_timeout = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("await_ready", 0, 0, 1, __pyx_nargs); __PYX_ERR(4, 1315, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.await_ready", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_23RefreshingTokenProvider_12await_ready(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self), __pyx_v_timeout); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyLongObject *__pyx_pf_7questdb_7_client_23RefreshingTokenProvider_12await_ready(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *__pyx_v_self, PyObject *__pyx_v_timeout) { struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_handle = 0; uint64_t __pyx_v_timeout_ms; int __pyx_v_ready; PyLongObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.await_ready", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_handle); __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(4, 1315, __pyx_L1_error) __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_23RefreshingTokenProvider_13await_ready, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_RefreshingTokenProvider_await_re, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[144])); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 1315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_17, __pyx_mstate_global->__pyx_tuple[69]); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_17, __pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_await_ready, __pyx_t_17) < (0)) __PYX_ERR(4, 1315, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; /* … */ { PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_float_30_0}; __pyx_mstate_global->__pyx_tuple[69] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[69])) __PYX_ERR(4, 1315, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[69]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[69]);
1316: """Wait up to ``timeout`` (seconds or a ``timedelta``) for a usable
1317: token. Returns ``False`` on timeout or once closed."""
+1318: cdef _TokenProviderHandle handle = self._require_handle()
__pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self->__pyx_vtab)->_require_handle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_1); __pyx_t_1 = 0;
+1319: cdef uint64_t timeout_ms = _tp_duration_ms(timeout, 'timeout')
__pyx_t_2 = __pyx_f_7questdb_7_client__tp_duration_ms(__pyx_v_timeout, __pyx_mstate_global->__pyx_n_u_timeout); if (unlikely(__pyx_t_2 == ((uint64_t)0) && PyErr_Occurred())) __PYX_ERR(4, 1319, __pyx_L1_error) __pyx_v_timeout_ms = __pyx_t_2;
1320: cdef bint ready
+1321: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L5;
}
__pyx_L5:;
}
}
+1322: ready = questdb_token_provider_await_ready(handle._raw, timeout_ms)
__pyx_v_ready = questdb_token_provider_await_ready(__pyx_v_handle->_raw, __pyx_v_timeout_ms);
}
+1323: return ready
__pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_ready); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool)))) __PYX_ERR(4, 1323, __pyx_L1_error) { PyLongObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyLongObject *)__pyx_t_1); } __Pyx_XDECREF((PyObject *)__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
1324:
+1325: def close(self, *, bint wait=False, timeout=30.0):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_15close(PyObject *__pyx_v_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_23RefreshingTokenProvider_14close, "Stop refreshing and fail every later token request. Idempotent.\n\n An already-running source cannot be forcibly cancelled. With\n ``wait=True``, wait up to ``timeout`` seconds (or a ``timedelta``) for\n it to return, raising ``TimeoutError`` if it has not. Source I/O must\n have its own deadline: interpreter shutdown must drain callbacks even\n after close, and cannot safely abandon a stuck Python source.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_23RefreshingTokenProvider_15close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_15close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_23RefreshingTokenProvider_14close}; static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_15close(PyObject *__pyx_v_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { int __pyx_v_wait; PyObject *__pyx_v_timeout = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("close (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_wait,&__pyx_mstate_global->__pyx_n_u_timeout,0}; PyObject* values[2] = {0,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 1325, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 0: break; default: goto __pyx_L5_argtuple_error; } if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, 0, __pyx_kwds_len, "close", 0) < (0)) __PYX_ERR(4, 1325, __pyx_L3_error) if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_float_30_0)); } else if (unlikely(__pyx_nargs != 0)) { goto __pyx_L5_argtuple_error; } else { if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_float_30_0)); } if (values[0]) { __pyx_v_wait = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_wait == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 1325, __pyx_L3_error) } else { __pyx_v_wait = ((int)0); } __pyx_v_timeout = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("close", 1, 0, 0, __pyx_nargs); __PYX_ERR(4, 1325, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.close", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_23RefreshingTokenProvider_14close(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self), __pyx_v_wait, __pyx_v_timeout); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_23RefreshingTokenProvider_14close(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *__pyx_v_self, int __pyx_v_wait, PyObject *__pyx_v_timeout) { double __pyx_v_seconds; struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_handle = 0; PyObject *__pyx_v_deadline = NULL; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.close", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_handle); __Pyx_XDECREF(__pyx_v_deadline); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 1325, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_wait, Py_False) < (0)) __PYX_ERR(4, 1325, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_timeout, __pyx_mstate_global->__pyx_float_30_0) < (0)) __PYX_ERR(4, 1325, __pyx_L1_error) __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_23RefreshingTokenProvider_15close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_RefreshingTokenProvider_close, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[145])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1325, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_5, __pyx_t_17); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_5) < (0)) __PYX_ERR(4, 1325, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
1326: """Stop refreshing and fail every later token request. Idempotent.
1327:
1328: An already-running source cannot be forcibly cancelled. With
1329: ``wait=True``, wait up to ``timeout`` seconds (or a ``timedelta``) for
1330: it to return, raising ``TimeoutError`` if it has not. Source I/O must
1331: have its own deadline: interpreter shutdown must drain callbacks even
1332: after close, and cannot safely abandon a stuck Python source.
1333: """
+1334: cdef double seconds = _tp_seconds(timeout, 'timeout')
__pyx_t_1 = __pyx_f_7questdb_7_client__tp_seconds(__pyx_v_timeout, __pyx_mstate_global->__pyx_n_u_timeout); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_1, ((double)(-1.0))) && PyErr_Occurred())) __PYX_ERR(4, 1334, __pyx_L1_error) __pyx_v_seconds = __pyx_t_1;
+1335: cdef _TokenProviderHandle handle = self._handle
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_handle_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__TokenProviderHandle))))) __PYX_ERR(4, 1335, __pyx_L1_error) __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_2); __pyx_t_2 = 0;
+1336: if handle is None or handle._raw == NULL:
__pyx_t_4 = (((PyObject *)__pyx_v_handle) == Py_None);
if (!__pyx_t_4) {
} else {
__pyx_t_3 = __pyx_t_4;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_4 = (__pyx_v_handle->_raw == NULL);
__pyx_t_3 = __pyx_t_4;
__pyx_L4_bool_binop_done:;
if (__pyx_t_3) {
/* … */
}
+1337: return
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+1338: handle._source_closed = True
__pyx_v_handle->_source_closed = 1;
+1339: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L8;
}
__pyx_L8:;
}
}
+1340: questdb_token_provider_close(handle._raw)
questdb_token_provider_close(__pyx_v_handle->_raw);
}
+1341: if wait:
if (__pyx_v_wait) {
/* … */
}
+1342: if handle._source_thread == questdb_thread_ident():
__pyx_t_3 = (__pyx_v_handle->_source_thread == PyThread_get_thread_ident());
if (unlikely(__pyx_t_3)) {
/* … */
}
+1343: raise QuestDBError(
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1343, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
+1344: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); assert(__pyx_t_5); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); __pyx_t_9 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_8, __pyx_mstate_global->__pyx_kp_u_close_wait_True_cannot_wait_for}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(4, 1343, __pyx_L1_error)
1345: 'close(wait=True) cannot wait for its own token source.')
1346: # In slices: a lock wait longer than `threading.TIMEOUT_MAX`
1347: # raises OverflowError instead of waiting, and a timedelta can
1348: # ask for one.
+1349: deadline = time.monotonic() + seconds
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1349, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_monotonic); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1349, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_9 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
assert(__pyx_t_6);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
__pyx_t_9 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1349, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_seconds); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1349, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = __Pyx_PyNumber_Add_object_float(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1349, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_deadline = __pyx_t_6;
__pyx_t_6 = 0;
+1350: while not handle._source_done.wait(
while (1) {
__pyx_t_5 = __pyx_v_handle->_source_done;
__Pyx_INCREF(__pyx_t_5);
/* … */
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 1350, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_4 = (!__pyx_t_3);
if (!__pyx_t_4) break;
+1351: min(seconds, threading.TIMEOUT_MAX)):
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_TIMEOUT_MAX); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = __pyx_v_seconds; __pyx_t_7 = PyFloat_FromDouble(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = __Pyx_PyObject_CompareBoolLt_object_float(__pyx_t_8, __pyx_t_7, Py_LT); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 1351, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_3) { __Pyx_INCREF(__pyx_t_8); __pyx_t_2 = __pyx_t_8; } else { __pyx_t_7 = PyFloat_FromDouble(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __pyx_t_7; __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_2}; __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_wait, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1350, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); }
+1352: seconds = deadline - time.monotonic()
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1352, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_monotonic); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1352, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_9 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_8))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
assert(__pyx_t_2);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
__pyx_t_9 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
__pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1352, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
__pyx_t_8 = __Pyx_PyNumber_Subtract_object_object(__pyx_v_deadline, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1352, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_1 = __Pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(4, 1352, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_v_seconds = __pyx_t_1;
+1353: if seconds <= 0.0:
__pyx_t_4 = (__pyx_v_seconds <= 0.0);
if (unlikely(__pyx_t_4)) {
/* … */
}
}
+1354: raise TimeoutError(
__pyx_t_6 = NULL;
__pyx_t_9 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_The_token_source_has_not_returne};
__pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TimeoutError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1354, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
}
__Pyx_Raise(__pyx_t_8, 0, 0, 0);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__PYX_ERR(4, 1354, __pyx_L1_error)
1355: 'The token source has not returned after close.')
1356:
+1357: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_4name_1__get__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_7questdb_7_client_23RefreshingTokenProvider_4name___get__(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_23RefreshingTokenProvider_4name___get__(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1358: def name(self) -> str:
1359: """The non-secret label used in log lines and errors."""
+1360: return self._name
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_self->_name);
__pyx_r = __pyx_v_self->_name;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
1361:
+1362: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_6closed_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_6closed_1__get__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_7questdb_7_client_23RefreshingTokenProvider_6closed___get__(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_23RefreshingTokenProvider_6closed___get__(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.closed.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1363: def closed(self) -> bool:
1364: """Whether the provider is closed."""
+1365: return bool(_tp_handle_closed(self._require_handle()))
__pyx_t_2 = NULL; __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self->__pyx_vtab)->_require_handle(__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1365, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_f_7questdb_7_client__tp_handle_closed(((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_3))); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1365, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1365, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject *)__pyx_t_1); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
1366:
+1367: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_6status_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_6status_1__get__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_7questdb_7_client_23RefreshingTokenProvider_6status___get__(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_23RefreshingTokenProvider_6status___get__(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *__pyx_v_self) {
struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_handle = 0;
struct questdb_token_provider_status __pyx_v_status;
char __pyx_v_message[1024];
PyObject *__pyx_v_last_failure = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.status.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_handle);
__Pyx_XDECREF(__pyx_v_last_failure);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1368: def status(self):
1369: """A :class:`TokenProviderStatus` snapshot. Never contains the
1370: token."""
+1371: cdef _TokenProviderHandle handle = self._require_handle()
__pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self->__pyx_vtab)->_require_handle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_1); __pyx_t_1 = 0;
1372: cdef questdb_token_provider_status status
1373: cdef char[1024] message
+1374: memset(&status, 0, sizeof(questdb_token_provider_status))
(void)(memset((&__pyx_v_status), 0, (sizeof(struct questdb_token_provider_status))));
+1375: status.struct_size = sizeof(questdb_token_provider_status)
__pyx_v_status.struct_size = (sizeof(struct questdb_token_provider_status));
+1376: status.last_failure_msg = message
__pyx_v_status.last_failure_msg = __pyx_v_message;
+1377: status.last_failure_msg_capacity = sizeof(message)
__pyx_v_status.last_failure_msg_capacity = (sizeof(__pyx_v_message));
+1378: if not questdb_token_provider_get_status(handle._raw, &status):
__pyx_t_2 = (!questdb_token_provider_get_status(__pyx_v_handle->_raw, (&__pyx_v_status)));
if (__pyx_t_2) {
/* … */
}
+1379: return TokenProviderStatus(True, None, None, 0, None)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_TokenProviderStatus); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1379, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[33], NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1379, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_3; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_3 = 0; goto __pyx_L0; /* … */ { PyObject* __pyx_temp[5] = {Py_True, Py_None, Py_None, __pyx_mstate_global->__pyx_int_0, Py_None}; __pyx_mstate_global->__pyx_tuple[33] = __Pyx_PyTuple_FromArray(__pyx_temp, 5); if (unlikely(!__pyx_mstate_global->__pyx_tuple[33])) __PYX_ERR(4, 1379, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[33]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[33]);
+1380: last_failure = None
__Pyx_INCREF(Py_None);
__pyx_v_last_failure = Py_None;
+1381: if status.has_last_failure:
if (__pyx_v_status.has_last_failure) {
/* … */
}
+1382: last_failure = FetchFailure(
__pyx_t_1 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_FetchFailure); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1382, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+1383: bool(status.last_failure_retryable),
__pyx_t_6 = NULL;
__pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_status.last_failure_retryable); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1383, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_8 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_7};
__pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1383, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_5);
}
+1384: (None if status.last_failure_retry_after_ms < 0
__pyx_t_2 = (__pyx_v_status.last_failure_retry_after_ms < 0);
if (__pyx_t_2) {
__Pyx_INCREF(Py_None);
__pyx_t_7 = Py_None;
} else {
+1385: else status.last_failure_retry_after_ms / 1000.0),
__pyx_t_6 = PyFloat_FromDouble((((double)__pyx_v_status.last_failure_retry_after_ms) / 1000.0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __pyx_t_6; __pyx_t_6 = 0; }
+1386: message[:min(status.last_failure_msg_len, sizeof(message))]
__pyx_t_8 = (sizeof(__pyx_v_message));
__pyx_t_9 = __pyx_v_status.last_failure_msg_len;
__pyx_t_2 = (__pyx_t_8 < __pyx_t_9);
if (__pyx_t_2) {
__pyx_t_10 = __pyx_t_8;
} else {
__pyx_t_10 = __pyx_t_9;
}
+1387: .decode('utf-8', 'replace'),
__pyx_t_6 = __Pyx_decode_c_string(__pyx_v_message, 0, __pyx_t_10, NULL, __pyx_k_replace, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1387, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6);
+1388: _tp_datetime_from_ms(status.last_failure_at_ms))
__pyx_t_11 = __pyx_f_7questdb_7_client__tp_datetime_from_ms(__pyx_v_status.last_failure_at_ms); if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 1388, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_1); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[5] = {__pyx_t_1, ((PyObject *)__pyx_t_5), __pyx_t_7, __pyx_t_6, __pyx_t_11}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_10, (5-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF((PyObject *)__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __Pyx_DECREF_SET(__pyx_v_last_failure, __pyx_t_3); __pyx_t_3 = 0;
+1389: return TokenProviderStatus(
__pyx_t_4 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_TokenProviderStatus); if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 1389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11);
+1390: bool(status.closed),
__pyx_t_7 = NULL; __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_status.closed); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_10 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5}; __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1390, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_6); }
+1391: _tp_datetime_from_ms(status.token_expires_at_ms),
__pyx_t_5 = __pyx_f_7questdb_7_client__tp_datetime_from_ms(__pyx_v_status.token_expires_at_ms); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5);
+1392: _tp_datetime_from_ms(status.last_success_at_ms),
__pyx_t_7 = __pyx_f_7questdb_7_client__tp_datetime_from_ms(__pyx_v_status.last_success_at_ms); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1392, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7);
+1393: status.consecutive_failures,
__pyx_t_1 = __Pyx_PyLong_From_uint32_t(__pyx_v_status.consecutive_failures); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1);
+1394: last_failure)
__pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_11); assert(__pyx_t_4); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_11, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[6] = {__pyx_t_4, ((PyObject *)__pyx_t_6), __pyx_t_5, __pyx_t_7, __pyx_t_1, __pyx_v_last_failure}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_10, (6-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF((PyObject *)__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_3; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_3 = 0; goto __pyx_L0;
1395:
+1396: def __enter__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_17__enter__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_23RefreshingTokenProvider_17__enter__ = {"__enter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_17__enter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_17__enter__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__enter__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__enter__", 1, 0, 0, __pyx_nargs); return NULL; }
const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) return NULL;
if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__enter__", __pyx_kwds); return NULL;}
__pyx_r = __pyx_pf_7questdb_7_client_23RefreshingTokenProvider_16__enter__(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_23RefreshingTokenProvider_16__enter__(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_23RefreshingTokenProvider_17__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_RefreshingTokenProvider___enter, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[146])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1396, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
#endif
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_enter, __pyx_t_5) < (0)) __PYX_ERR(4, 1396, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1397: return self
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_self);
__pyx_r = ((PyObject *)__pyx_v_self);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
1398:
+1399: def __exit__(self, exc_type, exc_value, traceback):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_19__exit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_23RefreshingTokenProvider_19__exit__ = {"__exit__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_19__exit__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_19__exit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_exc_type = 0;
CYTHON_UNUSED PyObject *__pyx_v_exc_value = 0;
CYTHON_UNUSED PyObject *__pyx_v_traceback = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__exit__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_exc_type,&__pyx_mstate_global->__pyx_n_u_exc_value,&__pyx_mstate_global->__pyx_n_u_traceback_2,0};
PyObject* values[3] = {0,0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 1399, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 3:
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 1399, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 2:
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 1399, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1399, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__exit__", 0) < (0)) __PYX_ERR(4, 1399, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, i); __PYX_ERR(4, 1399, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 3)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1399, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 1399, __pyx_L3_error)
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(4, 1399, __pyx_L3_error)
}
__pyx_v_exc_type = values[0];
__pyx_v_exc_value = values[1];
__pyx_v_traceback = values[2];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(4, 1399, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_23RefreshingTokenProvider_18__exit__(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self), __pyx_v_exc_type, __pyx_v_exc_value, __pyx_v_traceback);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_23RefreshingTokenProvider_18__exit__(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exc_type, CYTHON_UNUSED PyObject *__pyx_v_exc_value, CYTHON_UNUSED PyObject *__pyx_v_traceback) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_23RefreshingTokenProvider_19__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_RefreshingTokenProvider___exit, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[147])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1399, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
#endif
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_exit, __pyx_t_5) < (0)) __PYX_ERR(4, 1399, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1400: self.close()
__pyx_t_2 = ((PyObject *)__pyx_v_self); __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1401: return False
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(Py_False);
__pyx_r = Py_False;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
1402:
+1403: def __repr__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_21__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_23RefreshingTokenProvider_21__repr__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_7questdb_7_client_23RefreshingTokenProvider_20__repr__(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_23RefreshingTokenProvider_20__repr__(struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("questdb._client.RefreshingTokenProvider.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1404: return f'RefreshingTokenProvider(name={self._name!r})'
__pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_self->_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1404, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2[0] = __pyx_mstate_global->__pyx_kp_u_RefreshingTokenProvider_name; __pyx_t_2[1] = __pyx_t_1; __pyx_t_2[2] = __pyx_mstate_global->__pyx_kp_u__11; __pyx_t_3 = 30; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2[1]); #endif __pyx_t_4 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_4 |= __Pyx_PyUnicode_KIND_04(__pyx_t_2[1]); #endif __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1404, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_5; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_5 = 0; goto __pyx_L0;
1405:
1406:
+1407: cdef bint _tp_reads_native_cache(object provider) except -1:
static int __pyx_f_7questdb_7_client__tp_reads_native_cache(PyObject *__pyx_v_provider) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client._tp_reads_native_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
return __pyx_r;
}
1408: """Whether clients may read ``provider``, a `RefreshingTokenProvider`,
1409: from its native cache: neither ``token`` nor ``on_rejected`` is overridden,
1410: by a subclass or by an instance attribute. Otherwise the override runs
1411: where Python calls it -- ``headers()``, the PG-wire adapters,
1412: ``bearer_token_provider=tokens.token`` -- and clients must call it too.
1413: """
1414: return (
+1415: _method_not_overridden(provider, RefreshingTokenProvider, 'token')
__pyx_t_2 = __pyx_f_7questdb_7_client__method_not_overridden(__pyx_v_provider, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_token); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(4, 1415, __pyx_L1_error)
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L3_bool_binop_done;
}
+1416: and _method_not_overridden(
__pyx_t_2 = __pyx_f_7questdb_7_client__method_not_overridden(__pyx_v_provider, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_on_rejected); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(4, 1416, __pyx_L1_error)
__pyx_t_1 = __pyx_t_2;
__pyx_L3_bool_binop_done:;
{
__pyx_r = __pyx_t_1;
}
goto __pyx_L0;
1417: provider, RefreshingTokenProvider, 'on_rejected'))
1418:
1419:
+1420: cdef bint _tp_closed_refreshing_provider(object provider) except -1:
static int __pyx_f_7questdb_7_client__tp_closed_refreshing_provider(PyObject *__pyx_v_provider) {
PyObject *__pyx_v_handle = NULL;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client._tp_closed_refreshing_provider", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_handle);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1421: """Whether ``provider`` is a closed `RefreshingTokenProvider`: an
1422: application provider whose callback raised -- a subclass that overrides
1423: ``token()`` or ``on_rejected()`` -- or the owner of a method passed as
1424: ``bearer_token_provider=`` (see `_tp_resolve_bearer_token_provider`).
1425: """
+1426: if not isinstance(provider, RefreshingTokenProvider):
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_provider, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider);
__pyx_t_2 = (!__pyx_t_1);
if (__pyx_t_2) {
/* … */
}
+1427: return False
{
__pyx_r = 0;
}
goto __pyx_L0;
+1428: handle = getattr(provider, '_handle', None)
__pyx_t_3 = __Pyx_GetAttr3(__pyx_v_provider, __pyx_mstate_global->__pyx_n_u_handle_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1428, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_handle = __pyx_t_3; __pyx_t_3 = 0;
+1429: return (isinstance(handle, _TokenProviderHandle)
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_handle, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__TokenProviderHandle);
if (__pyx_t_1) {
} else {
__pyx_t_2 = __pyx_t_1;
goto __pyx_L4_bool_binop_done;
}
+1430: and _tp_handle_closed(<_TokenProviderHandle>handle))
__pyx_t_1 = __pyx_f_7questdb_7_client__tp_handle_closed(((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_v_handle));
__pyx_t_2 = __pyx_t_1;
__pyx_L4_bool_binop_done:;
{
__pyx_r = __pyx_t_2;
}
goto __pyx_L0;
1431:
1432:
+1433: cdef class _ApplicationTokenProvider:
struct __pyx_obj_7questdb_7_client__ApplicationTokenProvider {
PyObject_HEAD
PyObject *__dict__;
PyObject *__weakref__;
};
1434: """Bridges a Python provider -- a callable returning a token, or an object
1435: with ``token()`` and an optional ``on_rejected()`` -- to the native
1436: function table."""
1437: cdef dict __dict__
1438: cdef object __weakref__
1439:
+1440: def __cinit__(self):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_25_ApplicationTokenProvider_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_pw_7questdb_7_client_25_ApplicationTokenProvider_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
#if !CYTHON_VECTORCALL_TPNEW
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
#if !CYTHON_VECTORCALL_TPNEW
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL_TPNEW(__pyx_args, __pyx_nargs);
if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1; }
const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL_TPNEW(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) return -1;
if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); return -1;}
__pyx_r = __pyx_pf_7questdb_7_client_25_ApplicationTokenProvider___cinit__(((struct __pyx_obj_7questdb_7_client__ApplicationTokenProvider *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_25_ApplicationTokenProvider___cinit__(struct __pyx_obj_7questdb_7_client__ApplicationTokenProvider *__pyx_v_self) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client._ApplicationTokenProvider.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
return __pyx_r;
}
+1441: self._handle = None
if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_handle_2, Py_None) < (0)) __PYX_ERR(4, 1441, __pyx_L1_error)
1442:
+1443: def __init__(self, target):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_25_ApplicationTokenProvider_3__init__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_pw_7questdb_7_client_25_ApplicationTokenProvider_3__init__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_target = 0;
#if !CYTHON_VECTORCALL_TPNEW
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
#if !CYTHON_VECTORCALL_TPNEW
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL_TPNEW(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_target,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL_TPNEW(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 1443, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL_TPNEW(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1443, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(4, 1443, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, i); __PYX_ERR(4, 1443, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL_TPNEW(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1443, __pyx_L3_error)
}
__pyx_v_target = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 1443, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client._ApplicationTokenProvider.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_25_ApplicationTokenProvider_2__init__(((struct __pyx_obj_7questdb_7_client__ApplicationTokenProvider *)__pyx_v_self), __pyx_v_target);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_25_ApplicationTokenProvider_2__init__(struct __pyx_obj_7questdb_7_client__ApplicationTokenProvider *__pyx_v_self, PyObject *__pyx_v_target) {
struct questdb_token_provider_vtable __pyx_v_vtable;
questdb_error *__pyx_v_err;
struct questdb_token_provider *__pyx_v_raw;
struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_handle = 0;
size_t __pyx_v_callback_id;
PyObject *__pyx_v_adapter = 0;
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._ApplicationTokenProvider.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_handle);
__Pyx_XDECREF(__pyx_v_adapter);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1444: cdef questdb_token_provider_vtable vtable
+1445: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
1446: cdef questdb_token_provider* raw
+1447: cdef _TokenProviderHandle handle = _TokenProviderHandle()
__pyx_t_2 = NULL;
__pyx_t_3 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client__TokenProviderHandle, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1447, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_1);
}
__pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_1);
__pyx_t_1 = 0;
1448: cdef size_t callback_id
+1449: cdef object adapter = target
__Pyx_INCREF(__pyx_v_target);
__pyx_v_adapter = __pyx_v_target;
+1450: if getattr(target, 'token', None) is None or not callable(target.token):
__pyx_t_1 = __Pyx_GetAttr3(__pyx_v_target, __pyx_mstate_global->__pyx_n_u_token, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!__pyx_t_5) { } else { __pyx_t_4 = __pyx_t_5; goto __pyx_L4_bool_binop_done; } __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_mstate_global->__pyx_n_u_token); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyCallable_Check(__pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(4, 1450, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = (!__pyx_t_5); __pyx_t_4 = __pyx_t_6; __pyx_L4_bool_binop_done:; if (__pyx_t_4) { /* … */ }
+1451: if not callable(target):
__pyx_t_4 = __Pyx_PyCallable_Check(__pyx_v_target); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(4, 1451, __pyx_L1_error) __pyx_t_6 = (!__pyx_t_4); if (unlikely(__pyx_t_6)) { /* … */ }
+1452: raise _ConfigTypeError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ConfigTypeError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1452, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+1453: '"bearer_token_provider" must be a RefreshingTokenProvider, '
__pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_bearer_token_provider_must_be_a, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_3 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); __pyx_t_3 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_8}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(4, 1452, __pyx_L1_error)
1454: 'a callable returning a token, or an object with a token() '
+1455: f'method, not {_fqn(type(target))}')
__pyx_t_8 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_target)))); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+1456: adapter = _CallableTokenProvider(target)
__pyx_t_7 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_CallableTokenProvider); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1456, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_3 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_8))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
assert(__pyx_t_7);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
__pyx_t_3 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_target};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1456, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF_SET(__pyx_v_adapter, __pyx_t_1);
__pyx_t_1 = 0;
+1457: callback_id = _token_callback_register(handle, adapter)
__pyx_t_3 = __pyx_f_7questdb_7_client__token_callback_register(__pyx_v_handle, __pyx_v_adapter); if (unlikely(__pyx_t_3 == ((size_t)0))) __PYX_ERR(4, 1457, __pyx_L1_error)
__pyx_v_callback_id = __pyx_t_3;
+1458: handle._callback_id = callback_id
__pyx_v_handle->_callback_id = __pyx_v_callback_id;
+1459: vtable.struct_size = sizeof(questdb_token_provider_vtable)
__pyx_v_vtable.struct_size = (sizeof(struct questdb_token_provider_vtable));
+1460: vtable.get_token = _token_get_trampoline
__pyx_v_vtable.get_token = __pyx_f_7questdb_7_client__token_get_trampoline;
+1461: vtable.on_rejected = _token_rejected_trampoline
__pyx_v_vtable.on_rejected = __pyx_f_7questdb_7_client__token_rejected_trampoline;
+1462: vtable.release = _token_release_trampoline
__pyx_v_vtable.release = __pyx_f_7questdb_7_client__token_release_trampoline;
+1463: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L9;
}
__pyx_L9:;
}
}
+1464: raw = questdb_token_provider_new(&vtable, <void*>callback_id, &err)
__pyx_v_raw = questdb_token_provider_new((&__pyx_v_vtable), ((void *)__pyx_v_callback_id), (&__pyx_v_err));
}
+1465: if raw == NULL:
__pyx_t_6 = (__pyx_v_raw == NULL);
if (unlikely(__pyx_t_6)) {
/* … */
}
+1466: raise c_err_to_py(err)
__pyx_t_1 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1466, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(4, 1466, __pyx_L1_error)
+1467: handle._raw = raw
__pyx_v_handle->_raw = __pyx_v_raw;
+1468: self._handle = handle
if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_handle_2, ((PyObject *)__pyx_v_handle)) < (0)) __PYX_ERR(4, 1468, __pyx_L1_error)
1469:
1470:
+1471: class _CallableTokenProvider:
__pyx_t_5 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_CallableTokenProvider, __pyx_mstate_global->__pyx_n_u_CallableTokenProvider, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); /* … */ __pyx_t_17 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_CallableTokenProvider, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_5, NULL, 0, 0); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 1471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_CallableTokenProvider, __pyx_t_17) < (0)) __PYX_ERR(4, 1471, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1472: __slots__ = ('_fn',)
if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_slots, __pyx_mstate_global->__pyx_tuple[70]) < (0)) __PYX_ERR(4, 1472, __pyx_L1_error) /* … */ { PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_fn_2}; __pyx_mstate_global->__pyx_tuple[70] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[70])) __PYX_ERR(4, 1472, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[70]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[70]);
1473:
+1474: def __init__(self, fn):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_22_CallableTokenProvider_1__init__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_22_CallableTokenProvider_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_22_CallableTokenProvider_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_22_CallableTokenProvider_1__init__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_fn = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_fn,0};
PyObject* values[2] = {0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 1474, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 2:
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 1474, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1474, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(4, 1474, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(4, 1474, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 2)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1474, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 1474, __pyx_L3_error)
}
__pyx_v_self = values[0];
__pyx_v_fn = values[1];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(4, 1474, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client._CallableTokenProvider.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_22_CallableTokenProvider___init__(__pyx_self, __pyx_v_self, __pyx_v_fn);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_22_CallableTokenProvider___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_fn) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client._CallableTokenProvider.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_22_CallableTokenProvider_1__init__, 0, __pyx_mstate_global->__pyx_n_u_CallableTokenProvider___init, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[152])); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 1474, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17);
#endif
if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_17) < (0)) __PYX_ERR(4, 1474, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+1475: self._fn = fn
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_fn_2, __pyx_v_fn) < (0)) __PYX_ERR(4, 1475, __pyx_L1_error)
1476:
+1477: def token(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_22_CallableTokenProvider_3token(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_22_CallableTokenProvider_3token = {"token", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_22_CallableTokenProvider_3token, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_22_CallableTokenProvider_3token(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("token (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 1477, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1477, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "token", 0) < (0)) __PYX_ERR(4, 1477, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("token", 1, 1, 1, i); __PYX_ERR(4, 1477, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1477, __pyx_L3_error)
}
__pyx_v_self = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("token", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 1477, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client._CallableTokenProvider.token", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_22_CallableTokenProvider_2token(__pyx_self, __pyx_v_self);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_22_CallableTokenProvider_2token(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client._CallableTokenProvider.token", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_22_CallableTokenProvider_3token, 0, __pyx_mstate_global->__pyx_n_u_CallableTokenProvider_token, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[153])); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 1477, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17);
#endif
if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_token, __pyx_t_17) < (0)) __PYX_ERR(4, 1477, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+1478: return self._fn()
__pyx_t_2 = __pyx_v_self; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_fn_2, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1478, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
1479:
1480:
+1481: def _token_application_provider_collected(key, reference):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_95_token_application_provider_collected(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_95_token_application_provider_collected = {"_token_application_provider_collected", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_95_token_application_provider_collected, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_95_token_application_provider_collected(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_key = 0;
PyObject *__pyx_v_reference = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_token_application_provider_collected (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_key,&__pyx_mstate_global->__pyx_n_u_reference,0};
PyObject* values[2] = {0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 1481, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 2:
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 1481, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1481, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_token_application_provider_collected", 0) < (0)) __PYX_ERR(4, 1481, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_token_application_provider_collected", 1, 2, 2, i); __PYX_ERR(4, 1481, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 2)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1481, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(4, 1481, __pyx_L3_error)
}
__pyx_v_key = values[0];
__pyx_v_reference = values[1];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_token_application_provider_collected", 1, 2, 2, __pyx_nargs); __PYX_ERR(4, 1481, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client._token_application_provider_collected", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_94_token_application_provider_collected(__pyx_self, __pyx_v_key, __pyx_v_reference);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_94_token_application_provider_collected(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_key, PyObject *__pyx_v_reference) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("questdb._client._token_application_provider_collected", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_95_token_application_provider_collected, 0, __pyx_mstate_global->__pyx_n_u_token_application_provider_coll, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[154])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1481, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5);
#endif
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_token_application_provider_coll, __pyx_t_5) < (0)) __PYX_ERR(4, 1481, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1482: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L4_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
__pyx_L8_try_end:;
}
+1483: with _TOKEN_CALLBACKS_LOCK:
/*with:*/ {
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1483, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_6 = NULL;
__pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1483, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_8 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
assert(__pyx_t_6);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
__pyx_t_8 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
__pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1483, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_5);
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
goto __pyx_L18_try_end;
__pyx_L13_error:;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client._token_application_provider_collected", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_6) < 0) __PYX_ERR(4, 1483, __pyx_L15_except_error)
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_6);
{
PyObject* __pyx_temp[3] = {__pyx_t_5, __pyx_t_7, __pyx_t_6};
__pyx_t_14 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_14)) __PYX_ERR(4, 1483, __pyx_L15_except_error)
__Pyx_GOTREF(__pyx_t_14);
}
__pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, NULL);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (unlikely(!__pyx_t_15)) __PYX_ERR(4, 1483, __pyx_L15_except_error)
__Pyx_GOTREF(__pyx_t_15);
__pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_15);
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
if (__pyx_t_12 < (0)) __PYX_ERR(4, 1483, __pyx_L15_except_error)
__pyx_t_16 = (!__pyx_t_12);
if (unlikely(__pyx_t_16)) {
__Pyx_GIVEREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_7, __pyx_t_6);
__pyx_t_5 = 0; __pyx_t_7 = 0; __pyx_t_6 = 0;
__PYX_ERR(4, 1483, __pyx_L15_except_error)
}
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L14_exception_handled;
}
__pyx_L15_except_error:;
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
goto __pyx_L3_error;
__pyx_L14_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
__pyx_L18_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_4) {
__pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 1483, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
}
goto __pyx_L12;
}
__pyx_L12:;
}
goto __pyx_L23;
__pyx_L9_error:;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L3_error;
__pyx_L23:;
}
+1484: if _APPLICATION_TOKEN_PROVIDERS.get(key) is reference:
if (unlikely(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
__PYX_ERR(4, 1484, __pyx_L13_error)
}
__pyx_t_5 = __Pyx_PyDict_GetItemDefault(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS, __pyx_v_key, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1484, __pyx_L13_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_12 = (__pyx_t_5 == __pyx_v_reference);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_12) {
/* … */
}
+1485: _APPLICATION_TOKEN_PROVIDERS.pop(key, None)
if (unlikely(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "pop");
__PYX_ERR(4, 1485, __pyx_L13_error)
}
__pyx_t_13 = __Pyx_PyDict_Pop_ignore(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS, __pyx_v_key, Py_None); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(4, 1485, __pyx_L13_error)
+1486: except BaseException:
__pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_13) { __Pyx_ErrRestore(0,0,0); goto __pyx_L4_exception_handled; } goto __pyx_L5_except_error;
1487: # Weakref callbacks must also tolerate module teardown, like the
1488: # native-handle registry's best-effort unregister path.
1489: pass
1490:
1491:
+1492: cdef object _tp_resolve_bearer_token_provider(object provider):
static PyObject *__pyx_f_7questdb_7_client__tp_resolve_bearer_token_provider(PyObject *__pyx_v_provider) {
struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_handle = 0;
PyObject *__pyx_v_owner = 0;
PyObject *__pyx_v_key = NULL;
PyObject *__pyx_v_reference = NULL;
PyObject *__pyx_v_holder = NULL;
struct __pyx_obj_7questdb_7_client__ApplicationTokenProvider *__pyx_v_candidate = NULL;
PyObject *__pyx_v_previous = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_AddTraceback("questdb._client._tp_resolve_bearer_token_provider", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_handle);
__Pyx_XDECREF(__pyx_v_owner);
__Pyx_XDECREF(__pyx_v_key);
__Pyx_XDECREF(__pyx_v_reference);
__Pyx_XDECREF(__pyx_v_holder);
__Pyx_XDECREF((PyObject *)__pyx_v_candidate);
__Pyx_XDECREF(__pyx_v_previous);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1493: """The native-backed holder for a ``bearer_token_provider=`` argument: a
1494: ``RefreshingTokenProvider`` as is, anything else -- a subclass overriding
1495: ``token()`` or ``on_rejected()`` included -- wrapped in an
1496: ``_ApplicationTokenProvider``. The caller keeps the holder alive."""
1497: cdef _TokenProviderHandle handle
1498: cdef object owner
+1499: if isinstance(provider, RefreshingTokenProvider):
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_provider, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider);
if (__pyx_t_1) {
/* … */
}
1500: # Refused as an uninitialized `oidc_auth=` is, as a `QuestDBError`.
+1501: if getattr(provider, '_handle', None) is None:
__pyx_t_2 = __Pyx_GetAttr3(__pyx_v_provider, __pyx_mstate_global->__pyx_n_u_handle_2, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = (__pyx_t_2 == Py_None); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(__pyx_t_1)) { /* … */ }
+1502: raise _ConfigValueError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1502, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_bearer_token_provider_is_not_in};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1502, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(4, 1502, __pyx_L1_error)
1503: '"bearer_token_provider" is not initialized')
+1504: handle = (<RefreshingTokenProvider>provider)._require_handle()
__pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_7questdb_7_client_RefreshingTokenProvider *)((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_provider)->__pyx_vtab)->_require_handle(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_provider))); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_2); __pyx_t_2 = 0;
+1505: if _tp_reads_native_cache(provider):
__pyx_t_1 = __pyx_f_7questdb_7_client__tp_reads_native_cache(__pyx_v_provider); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 1505, __pyx_L1_error)
if (__pyx_t_1) {
/* … */
}
+1506: return provider
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_provider);
__pyx_r = __pyx_v_provider;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
1507: # Native refuses to attach a closed provider, but the application
1508: # provider below wraps it unchecked. Refuse it with the same error:
1509: # a closed provider fails every token request as permanent.
+1510: if _tp_handle_closed(handle):
__pyx_t_1 = __pyx_f_7questdb_7_client__tp_handle_closed(__pyx_v_handle);
if (__pyx_t_1) {
/* … */
}
+1511: _tp_token(handle)
__pyx_t_2 = __pyx_f_7questdb_7_client__tp_token(__pyx_v_handle); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1512: owner = getattr(provider, '__self__', None)
__pyx_t_2 = __Pyx_GetAttr3(__pyx_v_provider, __pyx_mstate_global->__pyx_n_u_self_2, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1512, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_owner = __pyx_t_2; __pyx_t_2 = 0;
1513: # A method bound to a closed one, `tokens.token`, is refused the same
1514: # way. A closure that calls one cannot be inspected: its first token
1515: # request stops its clients instead (see `_tp_token`).
+1516: if _tp_closed_refreshing_provider(owner):
__pyx_t_1 = __pyx_f_7questdb_7_client__tp_closed_refreshing_provider(__pyx_v_owner); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 1516, __pyx_L1_error)
if (__pyx_t_1) {
/* … */
}
+1517: _tp_token(owner._handle)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_owner, __pyx_mstate_global->__pyx_n_u_handle_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__TokenProviderHandle))))) __PYX_ERR(4, 1517, __pyx_L1_error) __pyx_t_4 = __pyx_f_7questdb_7_client__tp_token(((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_2)); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1518: if isinstance(provider, OidcDeviceAuth) or isinstance(
__pyx_t_6 = __Pyx_TypeCheck(__pyx_v_provider, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_OidcDeviceAuth);
if (!__pyx_t_6) {
} else {
__pyx_t_1 = __pyx_t_6;
goto __pyx_L9_bool_binop_done;
}
/* … */
if (unlikely(__pyx_t_1)) {
/* … */
}
+1519: owner, OidcDeviceAuth):
__pyx_t_6 = __Pyx_TypeCheck(__pyx_v_owner, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_OidcDeviceAuth);
__pyx_t_1 = __pyx_t_6;
__pyx_L9_bool_binop_done:;
+1520: raise _ConfigTypeError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ConfigTypeError); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1520, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
assert(__pyx_t_2);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Pass_an_OidcDeviceAuth_as_oidc_a};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1520, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_ERR(4, 1520, __pyx_L1_error)
1521: 'Pass an OidcDeviceAuth as "oidc_auth=", not as '
1522: '"bearer_token_provider=".')
1523: # Each Python bound-method lookup creates a new object. Normalize it to
1524: # its owner/function identity so attachments still share single-flight.
+1525: key = ((id(provider.__self__), id(provider.__func__))
__pyx_t_2 = NULL;
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_provider, __pyx_mstate_global->__pyx_n_u_self_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1525, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_7};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_id, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1525, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
__pyx_t_2 = NULL;
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_provider, __pyx_mstate_global->__pyx_n_u_func_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1525, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_8};
__pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_id, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1525, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
__pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1525, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_GIVEREF(__pyx_t_3);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3) != (0)) __PYX_ERR(4, 1525, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_7);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7) != (0)) __PYX_ERR(4, 1525, __pyx_L1_error);
__pyx_t_3 = 0;
__pyx_t_7 = 0;
__pyx_t_4 = __pyx_t_8;
__pyx_t_8 = 0;
} else {
+1526: if isinstance(provider, _TokenBoundMethod) else (id(provider),))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_TokenBoundMethod); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyObject_IsInstance(__pyx_v_provider, __pyx_t_3); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(4, 1526, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_1) { /* … */ __pyx_t_7 = NULL; __pyx_t_5 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_provider}; __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_id, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); } __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_8); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8) != (0)) __PYX_ERR(4, 1526, __pyx_L1_error); __pyx_t_8 = 0; __pyx_t_4 = __pyx_t_7; __pyx_t_7 = 0; } __pyx_v_key = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+1527: with _TOKEN_CALLBACKS_LOCK:
/*with:*/ {
__pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 1527, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_7 = NULL;
__pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1527, __pyx_L11_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_8))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
assert(__pyx_t_7);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1527, __pyx_L11_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
goto __pyx_L20_try_end;
__pyx_L15_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client._tp_resolve_bearer_token_provider", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_3) < 0) __PYX_ERR(4, 1527, __pyx_L17_except_error)
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_8);
__Pyx_XGOTREF(__pyx_t_3);
{
PyObject* __pyx_temp[3] = {__pyx_t_4, __pyx_t_8, __pyx_t_3};
__pyx_t_7 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1527, __pyx_L17_except_error)
__Pyx_GOTREF(__pyx_t_7);
}
__pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 1527, __pyx_L17_except_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_13);
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (__pyx_t_1 < (0)) __PYX_ERR(4, 1527, __pyx_L17_except_error)
__pyx_t_6 = (!__pyx_t_1);
if (unlikely(__pyx_t_6)) {
__Pyx_GIVEREF(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_8, __pyx_t_3);
__pyx_t_4 = 0; __pyx_t_8 = 0; __pyx_t_3 = 0;
__PYX_ERR(4, 1527, __pyx_L17_except_error)
}
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L16_exception_handled;
}
__pyx_L17_except_error:;
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
goto __pyx_L1_error;
__pyx_L19_try_return:;
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
goto __pyx_L12_return;
__pyx_L16_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
__pyx_L20_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_9) {
__pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 1527, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
}
goto __pyx_L14;
}
__pyx_L12_return: {
__pyx_t_12 = __pyx_r;
__pyx_r = 0;
if (__pyx_t_9) {
__pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 1527, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
}
__pyx_r = __pyx_t_12;
__pyx_t_12 = 0;
goto __pyx_L0;
}
__pyx_L14:;
}
goto __pyx_L25;
__pyx_L11_error:;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L1_error;
__pyx_L25:;
}
+1528: reference = _APPLICATION_TOKEN_PROVIDERS.get(key)
if (unlikely(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
__PYX_ERR(4, 1528, __pyx_L15_error)
}
__pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS, __pyx_v_key, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1528, __pyx_L15_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_reference = __pyx_t_4;
__pyx_t_4 = 0;
+1529: holder = reference() if reference is not None else None
__pyx_t_1 = (__pyx_v_reference != Py_None);
if (__pyx_t_1) {
__pyx_t_7 = NULL;
__Pyx_INCREF(__pyx_v_reference);
__pyx_t_3 = __pyx_v_reference;
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
assert(__pyx_t_7);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1529, __pyx_L15_error)
__Pyx_GOTREF(__pyx_t_8);
}
__pyx_t_4 = __pyx_t_8;
__pyx_t_8 = 0;
} else {
__Pyx_INCREF(Py_None);
__pyx_t_4 = Py_None;
}
__pyx_v_holder = __pyx_t_4;
__pyx_t_4 = 0;
+1530: if holder is not None:
__pyx_t_1 = (__pyx_v_holder != Py_None);
if (__pyx_t_1) {
/* … */
}
+1531: return holder
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_holder);
__pyx_r = __pyx_v_holder;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L19_try_return;
1532: # Introspection of an application target can execute arbitrary Python;
1533: # never do it while holding the callback registry lock. Concurrent misses
1534: # may construct unused candidates, but only the atomically published holder
1535: # is returned and attached to native clients.
+1536: candidate = _ApplicationTokenProvider(provider)
__pyx_t_8 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_provider};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client__ApplicationTokenProvider, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1536, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_3);
}
__pyx_v_candidate = ((struct __pyx_obj_7questdb_7_client__ApplicationTokenProvider *)__pyx_t_3);
__pyx_t_3 = 0;
+1537: reference = weakref.ref(
__pyx_t_8 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_weakref); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ref); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1538: candidate, _token_partial(_token_application_provider_collected, key))
__pyx_t_2 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_token_partial); if (unlikely(!__pyx_t_14)) __PYX_ERR(4, 1538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_token_application_provider_coll); if (unlikely(!__pyx_t_15)) __PYX_ERR(4, 1538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_5 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_14))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_14); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_14); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_14, __pyx__function); __pyx_t_5 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_15, __pyx_v_key}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_14, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_5 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); assert(__pyx_t_8); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); __pyx_t_5 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_8, ((PyObject *)__pyx_v_candidate), __pyx_t_4}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __Pyx_XDECREF_SET(__pyx_v_reference, __pyx_t_3); __pyx_t_3 = 0;
+1539: with _TOKEN_CALLBACKS_LOCK:
/*with:*/ {
__pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 1539, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_7 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1539, __pyx_L26_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_7);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1539, __pyx_L26_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L35_try_end;
__pyx_L30_error:;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client._tp_resolve_bearer_token_provider", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_4) < 0) __PYX_ERR(4, 1539, __pyx_L32_except_error)
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_4);
{
PyObject* __pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4};
__pyx_t_8 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1539, __pyx_L32_except_error)
__Pyx_GOTREF(__pyx_t_8);
}
__pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 1539, __pyx_L32_except_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_13);
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (__pyx_t_6 < (0)) __PYX_ERR(4, 1539, __pyx_L32_except_error)
__pyx_t_1 = (!__pyx_t_6);
if (unlikely(__pyx_t_1)) {
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_7, __pyx_t_4);
__pyx_t_3 = 0; __pyx_t_7 = 0; __pyx_t_4 = 0;
__PYX_ERR(4, 1539, __pyx_L32_except_error)
}
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L31_exception_handled;
}
__pyx_L32_except_error:;
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10);
goto __pyx_L1_error;
__pyx_L31_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10);
__pyx_L35_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_9) {
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 1539, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
goto __pyx_L29;
}
__pyx_L29:;
}
goto __pyx_L40;
__pyx_L26_error:;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L1_error;
__pyx_L40:;
}
+1540: previous = _APPLICATION_TOKEN_PROVIDERS.setdefault(key, reference)
if (unlikely(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "setdefault");
__PYX_ERR(4, 1540, __pyx_L30_error)
}
__pyx_t_3 = __Pyx_PyDict_SetDefault(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS, __pyx_v_key, __pyx_v_reference); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1540, __pyx_L30_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_v_previous = __pyx_t_3;
__pyx_t_3 = 0;
+1541: holder = previous()
__pyx_t_4 = NULL;
__Pyx_INCREF(__pyx_v_previous);
__pyx_t_7 = __pyx_v_previous;
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
assert(__pyx_t_4);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1541, __pyx_L30_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_XDECREF_SET(__pyx_v_holder, __pyx_t_3);
__pyx_t_3 = 0;
+1542: if holder is None:
__pyx_t_6 = (__pyx_v_holder == Py_None);
if (__pyx_t_6) {
/* … */
}
+1543: _APPLICATION_TOKEN_PROVIDERS[key] = reference
if (unlikely(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(4, 1543, __pyx_L30_error)
}
if (unlikely((PyDict_SetItem(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS, __pyx_v_key, __pyx_v_reference) < 0))) __PYX_ERR(4, 1543, __pyx_L30_error)
+1544: holder = candidate
__Pyx_INCREF((PyObject *)__pyx_v_candidate); __Pyx_DECREF_SET(__pyx_v_holder, ((PyObject *)__pyx_v_candidate));
+1545: return holder
if (unlikely(!__pyx_v_holder)) { __Pyx_RaiseUnboundLocalError("holder"); __PYX_ERR(4, 1545, __pyx_L1_error) }
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_holder);
__pyx_r = __pyx_v_holder;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
1546:
1547:
+1548: cdef const questdb_token_provider* _tp_holder_raw(object holder) except NULL:
static struct questdb_token_provider const *__pyx_f_7questdb_7_client__tp_holder_raw(PyObject *__pyx_v_holder) {
struct __pyx_obj_7questdb_7_client__TokenProviderHandle *__pyx_v_handle = 0;
struct questdb_token_provider const *__pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("questdb._client._tp_holder_raw", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_handle);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1549: cdef _TokenProviderHandle handle
+1550: if isinstance(holder, RefreshingTokenProvider):
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_holder, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider);
if (__pyx_t_1) {
/* … */
goto __pyx_L3;
}
+1551: handle = (<RefreshingTokenProvider>holder)._require_handle()
__pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_7questdb_7_client_RefreshingTokenProvider *)((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_holder)->__pyx_vtab)->_require_handle(((struct __pyx_obj_7questdb_7_client_RefreshingTokenProvider *)__pyx_v_holder))); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_2); __pyx_t_2 = 0;
1552: else:
+1553: handle = (<_ApplicationTokenProvider>holder)._handle
/*else*/ {
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_holder, __pyx_mstate_global->__pyx_n_u_handle_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1553, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__TokenProviderHandle))))) __PYX_ERR(4, 1553, __pyx_L1_error)
__pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_2);
__pyx_t_2 = 0;
}
__pyx_L3:;
+1554: if handle is None or handle._raw == NULL:
__pyx_t_3 = (((PyObject *)__pyx_v_handle) == Py_None);
if (!__pyx_t_3) {
} else {
__pyx_t_1 = __pyx_t_3;
goto __pyx_L5_bool_binop_done;
}
__pyx_t_3 = (__pyx_v_handle->_raw == NULL);
__pyx_t_1 = __pyx_t_3;
__pyx_L5_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
/* … */
}
+1555: raise _ConfigValueError('"bearer_token_provider" is not initialized')
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1555, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
assert(__pyx_t_4);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
__pyx_t_6 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_bearer_token_provider_is_not_in};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1555, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(4, 1555, __pyx_L1_error)
+1556: return handle._raw
{
__pyx_r = __pyx_v_handle->_raw;
}
goto __pyx_L0;
1557:
1558:
+1559: cdef object _tp_err_to_py(line_sender_error* err):
static PyObject *__pyx_f_7questdb_7_client__tp_err_to_py(struct line_sender_error *__pyx_v_err) {
struct questdb_token_unavailable_view __pyx_v_view;
PyObject *__pyx_v_tup = 0;
PyObject *__pyx_v_exc = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("questdb._client._tp_err_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_tup);
__Pyx_XDECREF(__pyx_v_exc);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1560: """A ``TokenUnavailableError`` for a native error a token provider caused,
1561: keeping the transport's code and message; ``None`` for any other. Frees
1562: ``err`` only when it returns an exception."""
1563: cdef questdb_token_unavailable_view view
+1564: memset(&view, 0, sizeof(questdb_token_unavailable_view))
(void)(memset((&__pyx_v_view), 0, (sizeof(struct questdb_token_unavailable_view))));
+1565: view.struct_size = sizeof(questdb_token_unavailable_view)
__pyx_v_view.struct_size = (sizeof(struct questdb_token_unavailable_view));
+1566: if not questdb_error_token_unavailable_get_view(err, &view):
__pyx_t_1 = (!questdb_error_token_unavailable_get_view(__pyx_v_err, (&__pyx_v_view)));
if (__pyx_t_1) {
/* … */
}
+1567: return None
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+1568: cdef object tup = c_err_to_fields(err)
__pyx_t_2 = __pyx_f_7questdb_7_client_c_err_to_fields(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1568, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_tup = __pyx_t_2; __pyx_t_2 = 0;
+1569: exc = TokenUnavailableError(
__pyx_t_3 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_TokenUnavailableError); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); /* … */ #endif __pyx_t_9 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_9 = 0; } #endif { PyObject *__pyx_callargs[5] = {__pyx_t_3, __pyx_t_5, ((PyObject *)__pyx_t_6), __pyx_t_8, __pyx_t_7}; #if CYTHON_VECTORCALL __pyx_t_10 = __pyx_mstate_global->__pyx_tuple[34]; if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 1569, __pyx_L1_error) __Pyx_INCREF(__pyx_t_10); #else { PyObject *__pyx_temp[3] = {__pyx_mstate_global->__pyx_n_u_retryable, __pyx_mstate_global->__pyx_n_u_retry_after, __pyx_mstate_global->__pyx_n_u_code}; __pyx_t_10 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 3); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 1569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); } #endif __pyx_t_2 = __Pyx_Object_VectorcallKwds((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_10); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; #if CYTHON_VECTORCALL #endif __Pyx_DECREF((PyObject *)__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_v_exc = __pyx_t_2; __pyx_t_2 = 0; /* … */ { PyObject* __pyx_temp[3] = {__pyx_mstate_global->__pyx_n_u_retryable, __pyx_mstate_global->__pyx_n_u_retry_after, __pyx_mstate_global->__pyx_n_u_code}; __pyx_mstate_global->__pyx_tuple[34] = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_mstate_global->__pyx_tuple[34])) __PYX_ERR(4, 1569, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[34]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[34]);
+1570: tup[1],
__pyx_t_5 = __Pyx_GetItemInt(__pyx_v_tup, 1, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5);
+1571: retryable=bool(view.retryable),
__pyx_t_7 = NULL; __pyx_t_8 = __Pyx_PyBool_FromLong(__pyx_v_view.retryable); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_8}; __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1571, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_6); }
+1572: retry_after=(None if view.retry_after_ms < 0
__pyx_t_1 = (__pyx_v_view.retry_after_ms < 0);
if (__pyx_t_1) {
__Pyx_INCREF(Py_None);
__pyx_t_8 = Py_None;
} else {
+1573: else view.retry_after_ms / 1000.0),
__pyx_t_7 = PyFloat_FromDouble((((double)__pyx_v_view.retry_after_ms) / 1000.0)); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __pyx_t_7; __pyx_t_7 = 0; }
+1574: code=tup[0])
__pyx_t_7 = __Pyx_GetItemInt(__pyx_v_tup, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #if CYTHON_VECTORCALL
+1575: exc._sender_error = tup[2]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_tup, 2, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__Pyx_PyObject_SetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_sender_error_2, __pyx_t_2) < (0)) __PYX_ERR(4, 1575, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1576: exc._in_doubt = bool(tup[3])
__pyx_t_4 = NULL; __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_tup, 3, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 1576, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_9 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_10}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1576, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_2); } if (__Pyx_PyObject_SetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_in_doubt_2, ((PyObject *)__pyx_t_2)) < (0)) __PYX_ERR(4, 1576, __pyx_L1_error) __Pyx_DECREF((PyObject *)__pyx_t_2); __pyx_t_2 = 0;
+1577: return exc
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_exc);
__pyx_r = __pyx_v_exc;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
1578:
1579:
1580: # Whether the cleartext warning below was given. A race between two first
1581: # attachments can give it twice, which is harmless.
+1582: _tp_cleartext_warned = False
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_tp_cleartext_warned, Py_False) < (0)) __PYX_ERR(4, 1582, __pyx_L1_error)
1583:
1584:
+1585: def _tp_warn_if_cleartext(protocol):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_97_tp_warn_if_cleartext(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_96_tp_warn_if_cleartext, "Warn once per process that a token provider the application attached\n (``bearer_token_provider=`` or ``oidc_auth=``) is used over a protocol\n without TLS: every token then crosses the network in cleartext\n (design/qwp-token-provider-spec.md, section 9). The native core logs the\n same warning through Rust\047s ``log`` facade, which Python does not see."); static PyMethodDef __pyx_mdef_7questdb_7_client_97_tp_warn_if_cleartext = {"_tp_warn_if_cleartext", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_97_tp_warn_if_cleartext, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_96_tp_warn_if_cleartext}; static PyObject *__pyx_pw_7questdb_7_client_97_tp_warn_if_cleartext(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_protocol = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_tp_warn_if_cleartext (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_protocol,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(4, 1585, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1585, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_tp_warn_if_cleartext", 0) < (0)) __PYX_ERR(4, 1585, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_tp_warn_if_cleartext", 1, 1, 1, i); __PYX_ERR(4, 1585, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(4, 1585, __pyx_L3_error) } __pyx_v_protocol = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_tp_warn_if_cleartext", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 1585, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client._tp_warn_if_cleartext", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_96_tp_warn_if_cleartext(__pyx_self, __pyx_v_protocol); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_96_tp_warn_if_cleartext(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_protocol) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("questdb._client._tp_warn_if_cleartext", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_97_tp_warn_if_cleartext, 0, __pyx_mstate_global->__pyx_n_u_tp_warn_if_cleartext, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[155])); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_5); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_tp_warn_if_cleartext, __pyx_t_5) < (0)) __PYX_ERR(4, 1585, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
1586: """Warn once per process that a token provider the application attached
1587: (``bearer_token_provider=`` or ``oidc_auth=``) is used over a protocol
1588: without TLS: every token then crosses the network in cleartext
1589: (design/qwp-token-provider-spec.md, section 9). The native core logs the
1590: same warning through Rust's ``log`` facade, which Python does not see."""
1591: global _tp_cleartext_warned
+1592: if protocol.tls_enabled or _tp_cleartext_warned:
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_protocol, __pyx_mstate_global->__pyx_n_u_tls_enabled); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 1592, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_tp_cleartext_warned); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 1592, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+1593: return
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+1594: _tp_cleartext_warned = True
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_tp_cleartext_warned, Py_True) < (0)) __PYX_ERR(4, 1594, __pyx_L1_error)
+1595: logging.getLogger('questdb').warning(
__pyx_t_6 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_logging); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1595, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_getLogger); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1595, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); assert(__pyx_t_6); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_8, __pyx__function); __pyx_t_9 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_n_u_questdb}; __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1595, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4);
1596: 'a token provider is used over %s:: (no TLS): bearer tokens cross '
1597: 'the network in cleartext; use %ss:: in production',
+1598: protocol.tag, protocol.tag)
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_protocol, __pyx_mstate_global->__pyx_n_u_tag); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_protocol, __pyx_mstate_global->__pyx_n_u_tag); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 1598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = 0; { PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_a_token_provider_is_used_over_s, __pyx_t_8, __pyx_t_6}; __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_warning, __pyx_callargs+__pyx_t_9, (4-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1595, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1599:
1600:
1601: _TOKEN_PROVIDER_CONF_KEYS = (
+1602: 'token_provider', 'azure_resource', 'azure_client_id', 'azure_credential')
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TOKEN_PROVIDER_CONF_KEYS, __pyx_mstate_global->__pyx_tuple[71]) < (0)) __PYX_ERR(4, 1601, __pyx_L1_error) /* … */ { PyObject* __pyx_temp[4] = {__pyx_mstate_global->__pyx_n_u_token_provider_2, __pyx_mstate_global->__pyx_n_u_azure_resource, __pyx_mstate_global->__pyx_n_u_azure_client_id, __pyx_mstate_global->__pyx_n_u_azure_credential}; __pyx_mstate_global->__pyx_tuple[71] = __Pyx_PyTuple_FromArray(__pyx_temp, 4); if (unlikely(!__pyx_mstate_global->__pyx_tuple[71])) __PYX_ERR(4, 1602, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[71]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[71]);
1603:
1604:
+1605: cdef void_int _tp_reject_conf_keys(dict params) except -1:
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__tp_reject_conf_keys(PyObject *__pyx_v_params) {
PyObject *__pyx_v_key = NULL;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("questdb._client._tp_reject_conf_keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_key);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1606: """Reject the connect-string keys reserved for selecting a token provider.
1607: This client selects none from a connect string; native rejects them too,
1608: but the Python sender drops keys it does not forward on ILP schemas."""
+1609: for key in _TOKEN_PROVIDER_CONF_KEYS:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_TOKEN_PROVIDER_CONF_KEYS); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 1609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 1609, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 1609, __pyx_L1_error) #endif if (__pyx_t_3 >= __pyx_temp) break; } __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_2, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_3; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(4, 1609, __pyx_L1_error) #endif if (__pyx_t_3 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3)); #else __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); #endif ++__pyx_t_3; } if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1609, __pyx_L1_error) } else { __pyx_t_1 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(4, 1609, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1610: if key in params:
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not iterable");
__PYX_ERR(4, 1610, __pyx_L1_error)
}
__pyx_t_5 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_params, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(4, 1610, __pyx_L1_error)
if (unlikely(__pyx_t_5)) {
/* … */
}
+1611: raise QuestDBError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1611, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+1612: QuestDBErrorCode.ConfigError,
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 1612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+1613: f'"{key}" selects a connect-string token provider, which this '
__pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_key, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 1613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10[0] = __pyx_mstate_global->__pyx_kp_u__26; __pyx_t_10[1] = __pyx_t_8; __pyx_t_10[2] = __pyx_mstate_global->__pyx_kp_u_selects_a_connect_string_token; __pyx_t_11 = 224; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_11 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10[1]); #endif __pyx_t_12 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_12 |= __Pyx_PyUnicode_KIND_04(__pyx_t_10[1]); #endif __pyx_t_13 = __Pyx_PyUnicode_Join(__pyx_t_10, 3, __pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 1613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_14 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); assert(__pyx_t_6); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); __pyx_t_14 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_9, __pyx_t_13}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_14, (3-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 1611, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(4, 1611, __pyx_L1_error)
1614: 'client does not support. Pass a token provider instead: '
1615: '"bearer_token_provider=RefreshingTokenProvider(source)", '
1616: 'whose source can call Azure Identity or any OAuth2 flow.')
+1617: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;