Generated by Cython 3.2.8

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_4 = __pyx_t_3;
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_weakref, __pyx_t_4) < (0)) __PYX_ERR(4, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 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_4 = __pyx_t_3;
  __Pyx_GOTREF(__pyx_t_4);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_partial};
    __pyx_t_9 = 0; {
      __pyx_t_17 = __Pyx_ImportFrom(__pyx_t_4, __pyx_imported_names[__pyx_t_9]); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 49, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_17);
      switch (__pyx_t_9) {
        case 0:
        if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_token_partial, __pyx_t_17) < (0)) __PYX_ERR(4, 49, __pyx_L1_error)
        break;
        default:;
      }
      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 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_4 = __pyx_t_3;
  __Pyx_GOTREF(__pyx_t_4);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_MethodType};
    __pyx_t_9 = 0; {
      __pyx_t_17 = __Pyx_ImportFrom(__pyx_t_4, __pyx_imported_names[__pyx_t_9]); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 50, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_17);
      switch (__pyx_t_9) {
        case 0:
        if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TokenBoundMethod, __pyx_t_17) < (0)) __PYX_ERR(4, 50, __pyx_L1_error)
        break;
        default:;
      }
      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 0051: 
+0052: cdef dict _TOKEN_CALLBACKS = {}
  __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_XGOTREF(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS);
  __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS, ((PyObject*)__pyx_t_4));
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 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_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_XGOTREF(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS);
  __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__APPLICATION_TOKEN_PROVIDERS, ((PyObject*)__pyx_t_4));
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 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_17 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_threading); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_RLock); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_17, NULL};
    __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_18, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __Pyx_XGOTREF(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK);
  __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 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_4 = __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_4)) __PYX_ERR(4, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_token_after_fork_in_child, __pyx_t_4) < (0)) __PYX_ERR(4, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 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_4, __pyx_mstate_global->__pyx_n_u_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = __Pyx_HasAttr(__pyx_t_4, __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_4); __pyx_t_4 = 0;
  if (__pyx_t_8) {
/* … */
  }
+0073:     os.register_at_fork(after_in_child=_token_after_fork_in_child)
    __pyx_t_18 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_os); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 73, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_register_at_fork); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 73, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_20);
    __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_token_after_fork_in_child); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 73, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_18, NULL};
      __pyx_t_16 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 73, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_16);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_after_in_child, __pyx_t_17, __pyx_t_16, __pyx_callargs+1, 0) < (0)) __PYX_ERR(4, 73, __pyx_L1_error)
      __pyx_t_4 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_20, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_16);
      __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 73, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 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_20 = NULL;
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_20, __pyx_mstate_global->__pyx_kp_u_Could_not_create_the_QuestDB_tok};
      __pyx_t_4 = __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_20); __pyx_t_20 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 88, __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, 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_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_20 = PyTuple_Pack(1, __pyx_t_4); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PEP560_update_bases(__pyx_t_20); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_16 = __Pyx_CalculateMetaclass(NULL, __pyx_t_4); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  __pyx_t_17 = __Pyx_Py3MetaclassPrepare(__pyx_t_16, __pyx_t_4, __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_17)) __PYX_ERR(4, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_17);
  if (__pyx_t_4 != __pyx_t_20) {
    if (unlikely((PyDict_SetItemString(__pyx_t_17, "__orig_bases__", __pyx_t_20) < 0))) __PYX_ERR(4, 132, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
  __pyx_t_20 = PyList_New(0); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
/* … */
  __pyx_t_18 = __Pyx_Py3ClassCreate(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_ConfigArgumentError, __pyx_t_4, __pyx_t_17, NULL, 0, 0); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
  #endif
  if (__Pyx_CyFunction_InitClassCell(__pyx_t_20, __pyx_t_18) < (0)) __PYX_ERR(4, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ConfigArgumentError, __pyx_t_18) < (0)) __PYX_ERR(4, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_18 = __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_18)) __PYX_ERR(4, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
  #endif
  PyList_Append(__pyx_t_20, __pyx_t_18);
  if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_18) < (0)) __PYX_ERR(4, 141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 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_4, __pyx_mstate_global->__pyx_n_u_ConfigArgumentError); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_16 = PyTuple_Pack(2, __pyx_t_4, ((PyObject *)(((PyTypeObject*)PyExc_TypeError)))); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PEP560_update_bases(__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_17 = __Pyx_CalculateMetaclass(NULL, __pyx_t_4); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_17);
  __pyx_t_18 = __Pyx_Py3MetaclassPrepare(__pyx_t_17, __pyx_t_4, __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_18)) __PYX_ERR(4, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (__pyx_t_4 != __pyx_t_16) {
    if (unlikely((PyDict_SetItemString(__pyx_t_18, "__orig_bases__", __pyx_t_16) < 0))) __PYX_ERR(4, 145, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __pyx_t_16 = __Pyx_Py3ClassCreate(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_ConfigTypeError, __pyx_t_4, __pyx_t_18, NULL, 0, 0); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_16);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ConfigTypeError, __pyx_t_16) < (0)) __PYX_ERR(4, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 0146:     """An argument of the wrong type."""
 0147: 
 0148: 
+0149: class _ConfigValueError(_ConfigArgumentError, ValueError):
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ConfigArgumentError); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_17 = PyTuple_Pack(2, __pyx_t_4, ((PyObject *)(((PyTypeObject*)PyExc_ValueError)))); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_17);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PEP560_update_bases(__pyx_t_17); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_18 = __Pyx_CalculateMetaclass(NULL, __pyx_t_4); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __pyx_t_16 = __Pyx_Py3MetaclassPrepare(__pyx_t_18, __pyx_t_4, __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_16)) __PYX_ERR(4, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  if (__pyx_t_4 != __pyx_t_17) {
    if (unlikely((PyDict_SetItemString(__pyx_t_16, "__orig_bases__", __pyx_t_17) < 0))) __PYX_ERR(4, 149, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
  __pyx_t_17 = __Pyx_Py3ClassCreate(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_ConfigValueError, __pyx_t_4, __pyx_t_16, NULL, 0, 0); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 149, __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_ConfigValueError, __pyx_t_17) < (0)) __PYX_ERR(4, 149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 0150:     """An argument of the right type whose value is not allowed."""
 0151: 
 0152: 
+0153: class ExpiringToken:
  __pyx_t_4 = __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_4)) __PYX_ERR(4, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
/* … */
  __pyx_t_16 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ExpiringToken, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_4, NULL, 0, 0); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_16);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ExpiringToken, __pyx_t_16) < (0)) __PYX_ERR(4, 153, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 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_4, __pyx_mstate_global->__pyx_n_u_slots, __pyx_mstate_global->__pyx_tuple[25]) < (0)) __PYX_ERR(4, 172, __pyx_L1_error)
/* … */
  __pyx_mstate_global->__pyx_tuple[25] = PyTuple_Pack(3, __pyx_mstate_global->__pyx_n_u_token, __pyx_mstate_global->__pyx_n_u_expires_at, __pyx_mstate_global->__pyx_n_u_refresh_at); if (unlikely(!__pyx_mstate_global->__pyx_tuple[25])) __PYX_ERR(4, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[25]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[25]);
 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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_18 = __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_18)) __PYX_ERR(4, 174, __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_CyFunction_SetDefaultsTuple(__pyx_t_18, __pyx_mstate_global->__pyx_tuple[24]);
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_18) < (0)) __PYX_ERR(4, 174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_18 = __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_18)) __PYX_ERR(4, 186, __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_CyFunction_SetDefaultsTuple(__pyx_t_18, __pyx_mstate_global->__pyx_tuple[24]);
  __pyx_t_16 = __Pyx_Method_ClassMethod(__pyx_t_18); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_expires_in, __pyx_t_16) < (0)) __PYX_ERR(4, 186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 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_XDECREF(__pyx_r);
  __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 = PyNumber_Add(__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);
  }
  __pyx_r = __pyx_t_1;
  __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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_16 = __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_16)) __PYX_ERR(4, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_16);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_repr, __pyx_t_16) < (0)) __PYX_ERR(4, 203, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+0204:         return (
  __Pyx_XDECREF(__pyx_r);
+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_4 = __Pyx_PyUnicode_Join(__pyx_t_5, 5, 25 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 20 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3));
  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;
  __pyx_r = __pyx_t_4;
  __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__5;
 0207: 
 0208: 
+0209: class TokenUnavailableError(QuestDBError):
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_16 = PyTuple_Pack(1, __pyx_t_4); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PEP560_update_bases(__pyx_t_16); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_18 = __Pyx_CalculateMetaclass(NULL, __pyx_t_4); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __pyx_t_17 = __Pyx_Py3MetaclassPrepare(__pyx_t_18, __pyx_t_4, __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_17)) __PYX_ERR(4, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_17);
  if (__pyx_t_4 != __pyx_t_16) {
    if (unlikely((PyDict_SetItemString(__pyx_t_17, "__orig_bases__", __pyx_t_16) < 0))) __PYX_ERR(4, 209, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __pyx_t_16 = PyList_New(0); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
/* … */
  __pyx_t_25 = __Pyx_Py3ClassCreate(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_TokenUnavailableError, __pyx_t_4, __pyx_t_17, 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_16, __pyx_t_25) < (0)) __PYX_ERR(4, 209, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 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_17); __pyx_t_17 = 0;
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_20 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_20)) __PYX_ERR(4, 236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  if (PyDict_SetItem(__pyx_t_20, __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_16, __pyx_t_25);
  __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_25, __pyx_t_20);
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_17, __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_20, __pyx_mstate_global->__pyx_n_u_retry_after, Py_None) < (0)) __PYX_ERR(4, 236, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_20, __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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_20 = 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_20, __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_20); __pyx_t_20 = 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_17, __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_XDECREF((PyObject *)__pyx_r);
  __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)
  __pyx_r = ((PyLongObject *)__pyx_t_1);
  __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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_20 = __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_20)) __PYX_ERR(4, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_20);
  #endif
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_19, __pyx_t_20};
    __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_20); __pyx_t_20 = 0;
    if (unlikely(!__pyx_t_25)) __PYX_ERR(4, 252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_25);
  }
  if (__Pyx_SetNameInClass(__pyx_t_17, __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_XDECREF(__pyx_r);
  __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);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 0256: 
 0257: 
+0258: class FetchFailure:
  __pyx_t_4 = __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_4)) __PYX_ERR(4, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
/* … */
  __pyx_t_18 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_FetchFailure, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_4, NULL, 0, 0); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_FetchFailure, __pyx_t_18) < (0)) __PYX_ERR(4, 258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 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_4, __pyx_mstate_global->__pyx_n_u_slots, __pyx_mstate_global->__pyx_tuple[26]) < (0)) __PYX_ERR(4, 261, __pyx_L1_error)
/* … */
  __pyx_mstate_global->__pyx_tuple[26] = PyTuple_Pack(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); if (unlikely(!__pyx_mstate_global->__pyx_tuple[26])) __PYX_ERR(4, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[26]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[26]);
 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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_18 = __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_18)) __PYX_ERR(4, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_18) < (0)) __PYX_ERR(4, 263, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_18 = __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_18)) __PYX_ERR(4, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_repr, __pyx_t_18) < (0)) __PYX_ERR(4, 273, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+0274:         return (
  __Pyx_XDECREF(__pyx_r);
+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_1 = __Pyx_PyUnicode_Join(__pyx_t_6, 9, 23 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 14 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 5 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 10 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  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;
  __pyx_r = __pyx_t_1;
  __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__5;
 0278: 
 0279: 
+0280: class TokenProviderStatus:
  __pyx_t_4 = __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_4)) __PYX_ERR(4, 280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
/* … */
  __pyx_t_18 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_TokenProviderStatus, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_4, NULL, 0, 0); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TokenProviderStatus, __pyx_t_18) < (0)) __PYX_ERR(4, 280, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 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_4, __pyx_mstate_global->__pyx_n_u_slots, __pyx_mstate_global->__pyx_tuple[27]) < (0)) __PYX_ERR(4, 283, __pyx_L1_error)
/* … */
  __pyx_mstate_global->__pyx_tuple[27] = PyTuple_Pack(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); if (unlikely(!__pyx_mstate_global->__pyx_tuple[27])) __PYX_ERR(4, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[27]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[27]);
 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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_18 = __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_18)) __PYX_ERR(4, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_18) < (0)) __PYX_ERR(4, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_18 = __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_18)) __PYX_ERR(4, 301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_repr, __pyx_t_18) < (0)) __PYX_ERR(4, 301, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+0302:         return (
  __Pyx_XDECREF(__pyx_r);
+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_1 = __Pyx_PyUnicode_Join(__pyx_t_7, 11, 27 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 19 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 23 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 15 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6));
  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;
  __pyx_r = __pyx_t_1;
  __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__5;
 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_18);
  __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 = __Pyx_PyUnicode_Join(__pyx_t_17, 3, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16) + 41, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16));
        if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 319, __pyx_L10_except_error)
        __Pyx_GOTREF(__pyx_t_18);
        __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_18};
          __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_18); __pyx_t_18 = 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_15 = __Pyx_PyUnicode_Join(__pyx_t_19, 4, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13) + 50 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_18), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_18));
    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_18); __pyx_t_18 = 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_18 = __Pyx_PyUnicode_Unicode(__pyx_t_15); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 323, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_18);
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    __pyx_t_19[0] = __pyx_mstate_global->__pyx_kp_u__26;
    __pyx_t_19[1] = __pyx_t_13;
    __pyx_t_19[2] = __pyx_mstate_global->__pyx_kp_u_must_be_a_number_of_seconds_or;
    __pyx_t_19[3] = __pyx_t_18;
+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 = __Pyx_PyUnicode_Join(__pyx_t_17, 3, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 41, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
    if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 326, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_18);
    __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_18};
      __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_18); __pyx_t_18 = 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_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
  __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_18, __pyx_mstate_global->__pyx_tuple[1], __pyx_t_4); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_17);
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_XGOTREF(__pyx_v_7questdb_7_client__TP_EPOCH);
  __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__TP_EPOCH, __pyx_t_17);
  __Pyx_GIVEREF(__pyx_t_17);
  __pyx_t_17 = 0;
+0334:     1970, 1, 1, tzinfo=datetime.timezone.utc)
  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_17);
  __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __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_17); __pyx_t_17 = 0;
  __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_17);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_17) < (0)) __PYX_ERR(4, 334, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
 0335: cdef object _TP_MIN_DELTA = (
+0336:     datetime.datetime.min.replace(tzinfo=datetime.timezone.utc) - _TP_EPOCH)
  __Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __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_18); __pyx_t_18 = 0;
  __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_mstate_global->__pyx_n_u_min); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __pyx_t_4 = __pyx_t_18;
  __Pyx_INCREF(__pyx_t_4);
  __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_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 336, __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, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_25);
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __pyx_t_6 = 0;
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_4, NULL};
    __pyx_t_16 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 336, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_16);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_25, __pyx_t_16, __pyx_callargs+1, 0) < (0)) __PYX_ERR(4, 336, __pyx_L1_error)
    __pyx_t_17 = __Pyx_Object_VectorcallMethod_CallFromBuilder((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_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
    __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
    if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 336, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
  }
  __pyx_t_18 = PyNumber_Subtract(__pyx_t_17, __pyx_v_7questdb_7_client__TP_EPOCH); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
  __Pyx_XGOTREF(__pyx_v_7questdb_7_client__TP_MIN_DELTA);
  __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__TP_MIN_DELTA, __pyx_t_18);
  __Pyx_GIVEREF(__pyx_t_18);
  __pyx_t_18 = 0;
 0337: cdef object _TP_MAX_DELTA = (
+0338:     datetime.datetime.max.replace(tzinfo=datetime.timezone.utc) - _TP_EPOCH)
  __Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __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_16); __pyx_t_16 = 0;
  __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_mstate_global->__pyx_n_u_max); 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_17 = __pyx_t_16;
  __Pyx_INCREF(__pyx_t_17);
  __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_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
  __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __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_4); __pyx_t_4 = 0;
  __pyx_t_6 = 0;
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_17, NULL};
    __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 338, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_25, __pyx_t_4, __pyx_callargs+1, 0) < (0)) __PYX_ERR(4, 338, __pyx_L1_error)
    __pyx_t_18 = __Pyx_Object_VectorcallMethod_CallFromBuilder((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_4);
    __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
    __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
    if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 338, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_18);
  }
  __pyx_t_16 = PyNumber_Subtract(__pyx_t_18, __pyx_v_7questdb_7_client__TP_EPOCH); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_XGOTREF(__pyx_v_7questdb_7_client__TP_MAX_DELTA);
  __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__TP_MAX_DELTA, __pyx_t_16);
  __Pyx_GIVEREF(__pyx_t_16);
  __pyx_t_16 = 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_XDECREF(__pyx_r);
      __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);
      }
      __pyx_r = __pyx_t_4;
      __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_XDECREF(__pyx_r);
      __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);
      __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 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, NULL};
        __pyx_t_13 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 353, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_13);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_9, __pyx_t_13, __pyx_callargs+1, 0) < (0)) __PYX_ERR(4, 353, __pyx_L5_except_error)
        __pyx_t_6 = __Pyx_Object_Vectorcall_CallFromBuilder((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;
        __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 = PyNumber_Add(__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;
      __pyx_r = __pyx_t_12;
      __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;
 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_7);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_XDECREF(__pyx_t_19);
  __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 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 61, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
      if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 361, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_8 = 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_8 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_7};
        __pyx_t_2 = __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_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 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 = PyNumber_Subtract(__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_2 = PyObject_RichCompare(__pyx_v_7questdb_7_client__TP_MIN_DELTA, __pyx_v_delta, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 366, __pyx_L1_error)
    if (__Pyx_PyObject_IsTrue(__pyx_t_2)) {
      __Pyx_DECREF(__pyx_t_2);
      __pyx_t_2 = PyObject_RichCompare(__pyx_v_delta, __pyx_v_7questdb_7_client__TP_MAX_DELTA, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 366, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 366, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_9 = (!__pyx_t_3);
    if (unlikely(__pyx_t_9)) {
/* … */
    }
+0367:             raise _ConfigValueError(
      __pyx_t_4 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 367, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
+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_5 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 44, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
      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_8 = 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_8 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __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_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 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_7 = __pyx_v_delta;
    __Pyx_INCREF(__pyx_t_7);
    __pyx_t_8 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_total_seconds, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 373, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_10 = __Pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_10 == (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_10;
+0374:         if seconds * 1000.0 > _TP_MAX_EPOCH_MS:
    __pyx_t_9 = ((__pyx_v_seconds * 1000.0) > __pyx_v_7questdb_7_client__TP_MAX_EPOCH_MS);
    if (__pyx_t_9) {
/* … */
    }
+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_11 = PyLong_Check(__pyx_v_value); 
  if (!__pyx_t_11) {
  } else {
    __pyx_t_3 = __pyx_t_11;
    goto __pyx_L9_bool_binop_done;
  }
  __pyx_t_11 = PyFloat_Check(__pyx_v_value); 
  __pyx_t_3 = __pyx_t_11;
  __pyx_L9_bool_binop_done:;
  if (__pyx_t_3) {
  } else {
    __pyx_t_9 = __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_11 = (!__pyx_t_3);
  __pyx_t_9 = __pyx_t_11;
  __pyx_L7_bool_binop_done:;
  if (likely(__pyx_t_9)) {
/* … */
    goto __pyx_L3;
  }
+0378:         if value != value or value in (float('inf'), float('-inf')):
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_value, __pyx_v_value, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 378, __pyx_L1_error)
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(4, 378, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (!__pyx_t_11) {
    } else {
      __pyx_t_9 = __pyx_t_11;
      goto __pyx_L12_bool_binop_done;
    }
    __pyx_t_10 = __Pyx_PyUnicode_AsDouble(__pyx_mstate_global->__pyx_n_u_inf); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_10, ((double)((double)-1))) && PyErr_Occurred())) __PYX_ERR(4, 378, __pyx_L1_error)
    __pyx_t_12 = __Pyx_PyUnicode_AsDouble(__pyx_mstate_global->__pyx_kp_u_inf_2); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_12, ((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_7 = PyFloat_FromDouble(__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 378, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 378, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 378, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (!__pyx_t_3) {
    } else {
      __pyx_t_11 = __pyx_t_3;
      goto __pyx_L14_bool_binop_done;
    }
    __pyx_t_5 = PyFloat_FromDouble(__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 378, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = PyObject_RichCompare(__pyx_t_2, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 378, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 378, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_11 = __pyx_t_3;
    __pyx_L14_bool_binop_done:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_3 = __pyx_t_11;
    __pyx_t_9 = __pyx_t_3;
    __pyx_L12_bool_binop_done:;
    if (unlikely(__pyx_t_9)) {
/* … */
    }
+0379:             raise _ConfigValueError(f'"{name}" must be finite')
      __pyx_t_7 = 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_1 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 16, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4));
      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_8 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
        assert(__pyx_t_7);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
        __pyx_t_8 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_1};
        __pyx_t_2 = __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_7); __pyx_t_7 = 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_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 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_7); __pyx_t_7 = 0;
/* … */
      __pyx_L18_except_error:;
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      goto __pyx_L1_error;
      __pyx_L21_try_end:;
    }
+0381:             seconds = value
        __pyx_t_10 = __Pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(4, 381, __pyx_L16_error)
        __pyx_v_seconds = __pyx_t_10;
+0382:         except OverflowError:
      __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_OverflowError))));
      if (__pyx_t_16) {
        __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_17, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 383, __pyx_L18_except_error)
        __Pyx_GOTREF(__pyx_t_17);
+0384:                 f'"{name}" must be representable as a Python datetime') from None
        __pyx_t_18 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 384, __pyx_L18_except_error)
        __Pyx_GOTREF(__pyx_t_18);
        __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u__26;
        __pyx_t_6[1] = __pyx_t_18;
        __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u_must_be_representable_as_a_Pyth;
        __pyx_t_19 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_18) + 44, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_18));
        if (unlikely(!__pyx_t_19)) __PYX_ERR(4, 384, __pyx_L18_except_error)
        __Pyx_GOTREF(__pyx_t_19);
        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
        __pyx_t_8 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_17))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_17);
          assert(__pyx_t_4);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_17);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_17, __pyx__function);
          __pyx_t_8 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_19};
          __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_17, __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_19); __pyx_t_19 = 0;
          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 383, __pyx_L18_except_error)
          __Pyx_GOTREF(__pyx_t_7);
        }
        __Pyx_Raise(__pyx_t_7, 0, 0, Py_None);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 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_7 = __Pyx_PyUnicode_Unicode(__pyx_v_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
/* … */
    __pyx_t_17 = __Pyx_PyUnicode_Join(__pyx_t_20, 4, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 43 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_19), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_19));
    if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
    __pyx_t_8 = 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_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_17};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __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_17); __pyx_t_17 = 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_17 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_value)))); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 388, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_17);
    __pyx_t_19 = __Pyx_PyUnicode_Unicode(__pyx_t_17); if (unlikely(!__pyx_t_19)) __PYX_ERR(4, 388, __pyx_L1_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__26;
    __pyx_t_20[1] = __pyx_t_7;
    __pyx_t_20[2] = __pyx_mstate_global->__pyx_kp_u_must_be_a_datetime_or_epoch_sec;
    __pyx_t_20[3] = __pyx_t_19;
 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_15); __pyx_t_15 = 0;
    __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    goto __pyx_L29_try_end;
    __pyx_L24_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 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_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_7); __pyx_t_7 = 0;
/* … */
    __pyx_L26_except_error:;
    __Pyx_XGIVEREF(__pyx_t_15);
    __Pyx_XGIVEREF(__pyx_t_14);
    __Pyx_XGIVEREF(__pyx_t_13);
    __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_14, __pyx_t_13);
    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_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_OverflowError)))) || __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_OSError)))) || __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
    if (__pyx_t_16) {
      __Pyx_AddTraceback("questdb._client._tp_epoch_seconds", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_17) < 0) __PYX_ERR(4, 393, __pyx_L26_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_17);
+0394:         raise _ConfigValueError(
      __pyx_t_19 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ConfigValueError); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 394, __pyx_L26_except_error)
      __Pyx_GOTREF(__pyx_t_7);
+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_18 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 44, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4));
      if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 395, __pyx_L26_except_error)
      __Pyx_GOTREF(__pyx_t_18);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_8 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_19 = PyMethod_GET_SELF(__pyx_t_7);
        assert(__pyx_t_19);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_19);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
        __pyx_t_8 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_19, __pyx_t_18};
        __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
        __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 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_XDECREF(__pyx_r);
    __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);
    }
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
+0405:     return _tp_instant(seconds)
  __Pyx_XDECREF(__pyx_r);
  __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);
  __pyx_r = __pyx_t_2;
  __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_XDECREF(__pyx_r);
    __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);
    }
    __pyx_r = __pyx_t_2;
    __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_XDECREF(__pyx_r);
      __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);
      }
      __pyx_r = __pyx_t_2;
      __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_XDECREF(__pyx_r);
      __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);
      __pyx_r = __pyx_t_11;
      __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
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    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_XDECREF(__pyx_r);
  __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);
  __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 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, NULL};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 426, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_milliseconds, __pyx_t_4, __pyx_t_7, __pyx_callargs+1, 0) < (0)) __PYX_ERR(4, 426, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder((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;
    __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 = PyNumber_Add(__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;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;
 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, 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, 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, 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, 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 (
  __Pyx_XDECREF(__pyx_r);
+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;
  __pyx_r = ((PyObject*)__pyx_t_8);
  __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, "'NoneType' 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, "'NoneType' 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'
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_TypeError);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_TypeError;
    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'
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_ValueError);
    __pyx_r = __pyx_mstate_global->__pyx_n_u_ValueError;
    goto __pyx_L0;
+0538:     return type(exc).__qualname__
  __Pyx_XDECREF(__pyx_r);
  __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)
  __pyx_r = ((PyObject*)__pyx_t_1);
  __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_PyUnicode_Equals(__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_12);
  __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_12); __pyx_t_12 = 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_PyException_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_;
        __pyx_t_11[2] = __pyx_t_8;
        __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_11, 3, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8));
        if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 600, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_7 = __pyx_t_12;
        __pyx_t_12 = 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_13 = __Pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_13 == (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_13);
+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_12, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 619, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __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_12); __pyx_t_12 = 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_12));
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 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_;
      __pyx_t_11[2] = __pyx_t_8;
      __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_11, 3, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8));
      if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 625, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_12);
      __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_14 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException))));
    if (__pyx_t_14) {
      __Pyx_AddTraceback("questdb._client._tp_sink_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_8, &__pyx_t_7) < 0) __PYX_ERR(4, 626, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_12);
      __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_12); __pyx_t_12 = 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_PyException_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 'NoneType' 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_23 = __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_23;
      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_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __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_16); __pyx_t_16 = 0;
      __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
      __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 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_1 = __Pyx_PyUnicode_Join(__pyx_t_15, 3, 51 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11) + 65, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11));
          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 = __pyx_t_11;
            /*try:*/ {
/* … */
            /*finally:*/ {
              __pyx_L55_error:;
              /*exception exit:*/{
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0;
                __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
                __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
                 __Pyx_ExceptionSwap(&__pyx_t_25, &__pyx_t_26, &__pyx_t_27);
                if ( unlikely(__Pyx_GetException(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24) < 0)) __Pyx_ErrFetch(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24);
                __Pyx_XGOTREF(__pyx_t_22);
                __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_t_8 = __pyx_lineno; __pyx_t_20 = __pyx_clineno; __pyx_t_21 = __pyx_filename;
                {
                  __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
                }
                __Pyx_XGIVEREF(__pyx_t_25);
                __Pyx_XGIVEREF(__pyx_t_26);
                __Pyx_XGIVEREF(__pyx_t_27);
                __Pyx_ExceptionReset(__pyx_t_25, __pyx_t_26, __pyx_t_27);
                __Pyx_XGIVEREF(__pyx_t_22);
                __Pyx_XGIVEREF(__pyx_t_23);
                __Pyx_XGIVEREF(__pyx_t_24);
                __Pyx_ErrRestore(__pyx_t_22, __pyx_t_23, __pyx_t_24);
                __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0;
                __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_20; __pyx_filename = __pyx_t_21;
                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_16));
              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
 0842:                 sink, False, -1,
+0843:                 'ValueError: the token provider returned a str that is not '
              __pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_19, 5, 73 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17) + 13 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_18) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_17) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_18));
              if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 843, __pyx_L55_error)
              __Pyx_GOTREF(__pyx_t_16);
              __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
              __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+0844:                 f'valid Unicode ({exc.reason} at position {exc.start})')
              __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_reason); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 844, __pyx_L55_error)
              __Pyx_GOTREF(__pyx_t_16);
              __pyx_t_17 = __Pyx_PyObject_FormatSimple(__pyx_t_16, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_17)) __PYX_ERR(4, 844, __pyx_L55_error)
              __Pyx_GOTREF(__pyx_t_17);
              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
              __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_start); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 844, __pyx_L55_error)
              __Pyx_GOTREF(__pyx_t_16);
              __pyx_t_18 = __Pyx_PyObject_FormatSimple(__pyx_t_16, __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_16); __pyx_t_16 = 0;
              __pyx_t_19[0] = __pyx_mstate_global->__pyx_kp_u_ValueError_the_token_provider_re;
              __pyx_t_19[1] = __pyx_t_17;
              __pyx_t_19[2] = __pyx_mstate_global->__pyx_kp_u_at_position;
              __pyx_t_19[3] = __pyx_t_18;
              __pyx_t_19[4] = __pyx_mstate_global->__pyx_kp_u__5;
+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_28 = __Pyx_PyBytes_AsString(__pyx_v_encoded); if (unlikely((!__pyx_t_28) && PyErr_Occurred())) __PYX_ERR(4, 846, __pyx_L7_error)
        if (unlikely(__pyx_v_encoded == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
          __PYX_ERR(4, 846, __pyx_L7_error)
        }
        __pyx_t_29 = __Pyx_PyBytes_GET_SIZE(__pyx_v_encoded); if (unlikely(__pyx_t_29 == ((Py_ssize_t)-1))) __PYX_ERR(4, 846, __pyx_L7_error)
        __pyx_t_14 = (!questdb_token_sink_set_token(__pyx_v_sink, __pyx_t_28, __pyx_t_29, 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_20 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException))));
      if (__pyx_t_20) {
        __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_16); __pyx_t_16 = 0;
      __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
      __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 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_20 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_30 = __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_20; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_30;
      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);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_4, __pyx_t_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[3], 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[3], 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, "'NoneType' 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);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_2, __pyx_t_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[3], 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, "'NoneType' object has no attribute '%.30s'", "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()
  __Pyx_XDECREF((PyObject *)__pyx_r);
  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)
  __pyx_r = ((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_3);
  __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);
              __pyx_t_12 = PyTuple_Pack(3, __pyx_t_7, __pyx_t_5, __pyx_t_6); 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[3], 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, "'NoneType' object has no attribute '%.30s'", "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_16 = __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_16)) __PYX_ERR(4, 991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_16);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_debug_token_callbacks_size, __pyx_t_16) < (0)) __PYX_ERR(4, 991, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 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);
          __pyx_t_10 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_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[3], 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[3], 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_XDECREF(__pyx_r);
          __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 'NoneType' 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);
          __pyx_r = __pyx_t_2;
          __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_16 = __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_16)) __PYX_ERR(4, 996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_16);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_debug_token_callbacks_ids, __pyx_t_16) < (0)) __PYX_ERR(4, 996, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 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);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_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[3], 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[3], 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_XDECREF(__pyx_r);
          __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);
          __pyx_r = __pyx_t_2;
          __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_16 = __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_16)) __PYX_ERR(4, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_16);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_debug_token_callbacks_lock, __pyx_t_16) < (0)) __PYX_ERR(4, 1001, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
 1002:     """Internal hook for a deterministic inherited-lock subprocess test."""
+1003:     return _TOKEN_CALLBACKS_LOCK
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK);
  __pyx_r = __pyx_v_7questdb_7_client__TOKEN_CALLBACKS_LOCK;
  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, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7questdb_7_client_20_TokenProviderHandle_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #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
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__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_VARARGS(__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(__pyx_v_self->_source_done);
  __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_XDECREF(__pyx_r);
/* … */
    __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);
    __pyx_r = __pyx_t_2;
    __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_5 = PyObject_RichCompare(__pyx_mstate_global->__pyx_int_0, __pyx_v_http_status, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1073, __pyx_L1_error)
  if (__Pyx_PyObject_IsTrue(__pyx_t_5)) {
    __Pyx_DECREF(__pyx_t_5);
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_http_status, __pyx_mstate_global->__pyx_int_65535, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 1073, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 1073, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __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, "'NoneType' object has no attribute '%.30s'", "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[28]);
  __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[28]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[28]);
/* … */
  __pyx_mstate_global->__pyx_tuple[28] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_n_u_handle_2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[28])) __PYX_ERR(4, 1104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[28]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[28]);
 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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_16 = __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_16)) __PYX_ERR(4, 1107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_16);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_refreshing_provider_init_subcla, __pyx_t_16) < (0)) __PYX_ERR(4, 1107, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 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_16, __pyx_mstate_global->__pyx_n_u_refreshing_provider_init_subcla); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  __pyx_t_18 = __Pyx_Method_ClassMethod(__pyx_t_16); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_init_subclass, __pyx_t_18) < (0)) __PYX_ERR(4, 1184, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
 1185: 
+1186:     def __cinit__(self):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_23RefreshingTokenProvider_3__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7questdb_7_client_23RefreshingTokenProvider_3__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #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
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__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_VARARGS(__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, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7questdb_7_client_23RefreshingTokenProvider_5__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  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;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #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
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__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_VARARGS(__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_VARARGS(__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_VARARGS(__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 'NoneType' 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(__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)
    }
    __Pyx_XDECREF_SET(__pyx_v_field_name, __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_19 = __pyx_v_field_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, 1247, __pyx_L1_error)
    __pyx_t_20 = __pyx_f_7questdb_7_client__tp_duration_ms(__pyx_v_value, ((PyObject*)__pyx_t_19)); if (unlikely(__pyx_t_20 == ((uint64_t)0) && PyErr_Occurred())) __PYX_ERR(4, 1247, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
    __pyx_v_ms = __pyx_t_20;
+1248:             if field_name == 'refresh_margin':
    __pyx_t_2 = (__Pyx_PyUnicode_Equals(__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_PyUnicode_Equals(__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_PyUnicode_Equals(__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_PyUnicode_Equals(__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_PyUnicode_Equals(__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_PyUnicode_Equals(__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_PyUnicode_Equals(__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_PyUnicode_Equals(__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(__pyx_v_self->_name);
  __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_XDECREF((PyObject *)__pyx_r);
  __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)
  __pyx_r = ((struct __pyx_obj_7questdb_7_client__TokenProviderHandle *)__pyx_t_1);
  __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_METH_FASTCALL
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_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  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_METH_FASTCALL
  #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_18 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 1287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (PyDict_SetItem(__pyx_t_18, __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_16 = __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_16)) __PYX_ERR(4, 1287, __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_SetAnnotationsDict(__pyx_t_16, __pyx_t_18);
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_token, __pyx_t_16) < (0)) __PYX_ERR(4, 1287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 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_XDECREF(__pyx_r);
  __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)
  __pyx_r = ((PyObject*)__pyx_t_2);
  __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_METH_FASTCALL
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_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  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_METH_FASTCALL
  #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_16 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 1298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  if (PyDict_SetItem(__pyx_t_16, __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_18 = __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_18)) __PYX_ERR(4, 1298, __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_CyFunction_SetAnnotationsDict(__pyx_t_18, __pyx_t_16);
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_headers, __pyx_t_18) < (0)) __PYX_ERR(4, 1298, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
 1299:         """``{"Authorization": "Bearer <token>"}``, for a client of your
 1300:         own."""
+1301:         return {'Authorization': 'Bearer ' + self.token()}
  __Pyx_XDECREF(__pyx_r);
  __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;
  __pyx_r = ((PyObject*)__pyx_t_1);
  __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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_18 = __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_18)) __PYX_ERR(4, 1303, __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_CyFunction_SetDefaultsTuple(__pyx_t_18, __pyx_mstate_global->__pyx_tuple[29]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_on_rejected, __pyx_t_18) < (0)) __PYX_ERR(4, 1303, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
/* … */
  __pyx_mstate_global->__pyx_tuple[29] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_int_401); if (unlikely(!__pyx_mstate_global->__pyx_tuple[29])) __PYX_ERR(4, 1303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[29]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[29]);
 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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_18 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_18)) __PYX_ERR(4, 1315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(4, 1315, __pyx_L1_error)
  __pyx_t_16 = __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_16)) __PYX_ERR(4, 1315, __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[30]);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_16, __pyx_t_18);
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_await_ready, __pyx_t_16) < (0)) __PYX_ERR(4, 1315, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
/* … */
  __pyx_mstate_global->__pyx_tuple[30] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_float_30_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[30])) __PYX_ERR(4, 1315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[30]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[30]);
 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_XDECREF((PyObject *)__pyx_r);
  __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)
  __pyx_r = ((PyLongObject *)__pyx_t_1);
  __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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_XDECREF(__pyx_t_10);
  __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_16 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 1325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  if (PyDict_SetItem(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_wait, Py_False) < (0)) __PYX_ERR(4, 1325, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_timeout, __pyx_mstate_global->__pyx_float_30_0) < (0)) __PYX_ERR(4, 1325, __pyx_L1_error)
  __pyx_t_18 = __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_18)) __PYX_ERR(4, 1325, __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_CyFunction_SetDefaultsKwDict(__pyx_t_18, __pyx_t_16);
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_18) < (0)) __PYX_ERR(4, 1325, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 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
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    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 = PyNumber_Add(__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_10 = PyObject_RichCompare(__pyx_t_8, __pyx_t_7, Py_LT); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 1351, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 1351, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (__pyx_t_3) {
        __Pyx_INCREF(__pyx_t_8);
        __pyx_t_2 = __pyx_t_8;
      } else {
        __pyx_t_10 = PyFloat_FromDouble(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 1351, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_2 = __pyx_t_10;
        __pyx_t_10 = 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 = PyNumber_Subtract(__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
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_name);
  __pyx_r = __pyx_v_self->_name;
  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_XDECREF(__pyx_r);
  __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);
  }
  __pyx_r = ((PyObject *)__pyx_t_1);
  __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_XDECREF(__pyx_r);
    __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[9], 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;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
/* … */
  __pyx_mstate_global->__pyx_tuple[9] = PyTuple_Pack(5, Py_True, Py_None, Py_None, __pyx_mstate_global->__pyx_int_0, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[9])) __PYX_ERR(4, 1379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[9]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[9]);
+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_XDECREF(__pyx_r);
  __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);
  }
  __pyx_r = __pyx_t_3;
  __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_METH_FASTCALL
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_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  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_METH_FASTCALL
  #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_18 = __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_18)) __PYX_ERR(4, 1396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_enter, __pyx_t_18) < (0)) __PYX_ERR(4, 1396, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+1397:         return self
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_18 = __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_18)) __PYX_ERR(4, 1399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_RefreshingTokenProvider, __pyx_mstate_global->__pyx_n_u_exit, __pyx_t_18) < (0)) __PYX_ERR(4, 1399, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 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
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_False);
  __pyx_r = Py_False;
  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_3);
  __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_XDECREF(__pyx_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__5;
  __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, 29 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
  if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 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, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7questdb_7_client_25_ApplicationTokenProvider_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #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
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__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_VARARGS(__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, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7questdb_7_client_25_ApplicationTokenProvider_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_target = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #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
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__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_VARARGS(__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_VARARGS(__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_VARARGS(__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_18 = __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_18)) __PYX_ERR(4, 1471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
/* … */
  __pyx_t_16 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_CallableTokenProvider, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_18, NULL, 0, 0); if (unlikely(!__pyx_t_16)) __PYX_ERR(4, 1471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_16);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_CallableTokenProvider, __pyx_t_16) < (0)) __PYX_ERR(4, 1471, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+1472:     __slots__ = ('_fn',)
  if (__Pyx_SetNameInClass(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_slots, __pyx_mstate_global->__pyx_tuple[31]) < (0)) __PYX_ERR(4, 1472, __pyx_L1_error)
/* … */
  __pyx_mstate_global->__pyx_tuple[31] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_n_u_fn_2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[31])) __PYX_ERR(4, 1472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[31]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[31]);
 1473: 
+1474:     def __init__(self, fn):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_22_CallableTokenProvider_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_16 = __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_16)) __PYX_ERR(4, 1474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_16);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_16) < (0)) __PYX_ERR(4, 1474, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_16 = __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_16)) __PYX_ERR(4, 1477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_16);
  #endif
  if (__Pyx_SetNameInClass(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_token, __pyx_t_16) < (0)) __PYX_ERR(4, 1477, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1478:         return self._fn()
  __Pyx_XDECREF(__pyx_r);
  __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);
  }
  __pyx_r = __pyx_t_1;
  __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_METH_FASTCALL
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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_18 = __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_18)) __PYX_ERR(4, 1481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_token_application_provider_coll, __pyx_t_18) < (0)) __PYX_ERR(4, 1481, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 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);
              __pyx_t_14 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_7, __pyx_t_6); 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[3], 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, "'NoneType' object has no attribute '%.30s'", "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, "'NoneType' object has no attribute '%.30s'", "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
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_provider);
      __pyx_r = __pyx_v_provider;
      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);
          __pyx_t_7 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_8, __pyx_t_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[3], 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[3], 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, "'NoneType' object has no attribute '%.30s'", "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
            __Pyx_XDECREF(__pyx_r);
            __Pyx_INCREF(__pyx_v_holder);
            __pyx_r = __pyx_v_holder;
            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);
          __pyx_t_8 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_7, __pyx_t_4); 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[3], 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, "'NoneType' object has no attribute '%.30s'", "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, "'NoneType' 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
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(!__pyx_v_holder)) { __Pyx_RaiseUnboundLocalError("holder"); __PYX_ERR(4, 1545, __pyx_L1_error) }
  __Pyx_INCREF(__pyx_v_holder);
  __pyx_r = __pyx_v_holder;
  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
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    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);
+1570:         tup[1],
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_tup, 1, long, 1, __Pyx_PyLong_From_long, 0, 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, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 1574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __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[2 + ((CYTHON_VECTORCALL) ? 3 : 0)] = {__pyx_t_3, __pyx_t_5};
    __pyx_t_10 = __Pyx_MakeVectorcallBuilderKwds(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 1569, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_retryable, ((PyObject *)__pyx_t_6), __pyx_t_10, __pyx_callargs+2, 0) < (0)) __PYX_ERR(4, 1569, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_retry_after, __pyx_t_8, __pyx_t_10, __pyx_callargs+2, 1) < (0)) __PYX_ERR(4, 1569, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_code, __pyx_t_7, __pyx_t_10, __pyx_callargs+2, 2) < (0)) __PYX_ERR(4, 1569, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder((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;
    __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;
+1575:     exc._sender_error = tup[2]
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_tup, 2, long, 1, __Pyx_PyLong_From_long, 0, 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, 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
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_exc);
  __pyx_r = __pyx_v_exc;
  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_METH_FASTCALL
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's ``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_METH_FASTCALL
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_METH_FASTCALL
  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_METH_FASTCALL
  #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_18 = __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_18)) __PYX_ERR(4, 1585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_tp_warn_if_cleartext, __pyx_t_18) < (0)) __PYX_ERR(4, 1585, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 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
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    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[32]) < (0)) __PYX_ERR(4, 1601, __pyx_L1_error)
/* … */
  __pyx_mstate_global->__pyx_tuple[32] = PyTuple_Pack(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); if (unlikely(!__pyx_mstate_global->__pyx_tuple[32])) __PYX_ERR(4, 1602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[32]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[32]);
 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_11);
  __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_GetItemRefFast(__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, "'NoneType' 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 = __Pyx_PyUnicode_Join(__pyx_t_10, 3, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8) + 223, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8));
      if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 1613, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_12 = 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_12 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_9, __pyx_t_11};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_12, (3-__pyx_t_12) | (__pyx_t_12*__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_11); __pyx_t_11 = 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;