Generated by Cython 3.2.9
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: _client.c
+0001: ################################################################################
__pyx_t_13 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_13) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
0002: ## ___ _ ____ ____
0003: ## / _ \ _ _ ___ ___| |_| _ \| __ )
0004: ## | | | | | | |/ _ \/ __| __| | | | _ \
0005: ## | |_| | |_| | __/\__ \ |_| |_| | |_) |
0006: ## \__\_\\__,_|\___||___/\__|____/|____/
0007: ##
0008: ## Copyright (c) 2014-2019 Appsicle
0009: ## Copyright (c) 2019-2024 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: # distutils: language=c
0026: # cython: language_level=3
0027: # cython: binding=True
0028:
0029: """
0030: API for fast data ingestion into and querying from QuestDB.
0031: """
0032:
+0033: __all__ = [
__pyx_t_4 = __Pyx_PyList_Pack(25, __pyx_mstate_global->__pyx_n_u_ConnectionEvent, __pyx_mstate_global->__pyx_n_u_ConnectionEventKind, __pyx_mstate_global->__pyx_n_u_PooledReader, __pyx_mstate_global->__pyx_n_u_PooledSender, __pyx_mstate_global->__pyx_n_u_Protocol, __pyx_mstate_global->__pyx_n_u_QueryResult, __pyx_mstate_global->__pyx_n_u_QuestDB, __pyx_mstate_global->__pyx_n_u_QuestDBError, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode, __pyx_mstate_global->__pyx_n_u_QuestDBServerRejectionError, __pyx_mstate_global->__pyx_n_u_QwpWsProgress, __pyx_mstate_global->__pyx_n_u_Sender, __pyx_mstate_global->__pyx_n_u_SenderError, __pyx_mstate_global->__pyx_n_u_SenderErrorCategory, __pyx_mstate_global->__pyx_n_u_SenderErrorPolicy, __pyx_mstate_global->__pyx_n_u_SenderTransaction, __pyx_mstate_global->__pyx_n_u_ServerInfo, __pyx_mstate_global->__pyx_n_u_ServerRole, __pyx_mstate_global->__pyx_n_u_ServerTimestamp, __pyx_mstate_global->__pyx_n_u_ServerTimestampType, __pyx_mstate_global->__pyx_n_u_TimestampMicros_2, __pyx_mstate_global->__pyx_n_u_TimestampNanos_2, __pyx_mstate_global->__pyx_n_u_TlsCa, __pyx_mstate_global->__pyx_n_u_UnsupportedDataFrameShapeError, __pyx_mstate_global->__pyx_n_u_WARN_HIGH_RECONNECTS); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 33, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_all, __pyx_t_4) < (0)) __PYX_ERR(0, 33, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
0034: 'ConnectionEvent',
0035: 'ConnectionEventKind',
0036: 'PooledReader',
0037: 'PooledSender',
0038: 'Protocol',
0039: 'QueryResult',
0040: 'QuestDB',
0041: 'QuestDBError',
0042: 'QuestDBErrorCode',
0043: 'QuestDBServerRejectionError',
0044: 'QwpWsProgress',
0045: 'Sender',
0046: 'SenderError',
0047: 'SenderErrorCategory',
0048: 'SenderErrorPolicy',
0049: 'SenderTransaction',
0050: 'ServerInfo',
0051: 'ServerRole',
0052: 'ServerTimestamp',
0053: 'ServerTimestampType',
0054: 'TimestampMicros',
0055: 'TimestampNanos',
0056: 'TlsCa',
0057: 'UnsupportedDataFrameShapeError',
0058: 'WARN_HIGH_RECONNECTS'
0059: ]
0060:
0061: # For prototypes: https://github.com/cython/cython/tree/master/Cython/Includes
0062: from libc.stdint cimport uint8_t, uint64_t, int64_t, int32_t, uint32_t, \
0063: uintptr_t, INT64_MAX, INT64_MIN
0064: from libc.stdlib cimport malloc, calloc, realloc, free, qsort
0065: from libc.string cimport strncmp, memset, memcpy, strlen
0066: from libc.math cimport isnan, floor
0067: from cpython.datetime cimport datetime as cp_datetime
0068: from cpython.datetime cimport timedelta as cp_timedelta
0069: from cpython.datetime cimport (
0070: PyDateTime_GET_YEAR, PyDateTime_GET_MONTH, PyDateTime_GET_DAY,
0071: PyDateTime_DATE_GET_HOUR, PyDateTime_DATE_GET_MINUTE,
0072: PyDateTime_DATE_GET_SECOND, PyDateTime_DATE_GET_MICROSECOND,
0073: )
0074: from cpython.bool cimport bool
0075: from cpython.weakref cimport PyWeakref_NewRef, PyWeakref_GetObject
0076: from cpython.object cimport PyObject
0077: from cpython.buffer cimport Py_buffer, PyObject_CheckBuffer, \
0078: PyObject_GetBuffer, PyBuffer_Release, PyBUF_SIMPLE
0079: from cpython.pycapsule cimport (PyCapsule_GetPointer, PyCapsule_IsValid,
0080: PyCapsule_New)
0081: from cpython.ref cimport Py_INCREF, Py_DECREF
0082:
0083: from .line_sender cimport *
0084: from .rpyutils cimport *
0085: from .conf_str cimport *
0086: from .arrow_c_data_interface cimport *
0087: from .extra_cpython cimport *
0088: from ._client_helper cimport *
0089:
0090: # An int we use only for error reporting.
0091: # 0 is success.
0092: # -1 is failure.
0093: ctypedef int void_int
0094:
0095: import cython
0096: include "dataframe.pxi"
0097: include "egress.pxi"
0098:
+0099: from enum import Enum
{
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Enum};
__pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_enum, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error)
}
__pyx_t_4 = __pyx_t_1;
__Pyx_GOTREF(__pyx_t_4);
{
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_Enum};
__pyx_t_9 = 0; {
__pyx_t_15 = __Pyx_ImportFrom(__pyx_t_4, __pyx_imported_names[__pyx_t_9]); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 99, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_9], __pyx_t_15) < (0)) __PYX_ERR(0, 99, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
}
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0100: from typing import List, Dict, Union, Any, Optional
{
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_List,__pyx_mstate_global->__pyx_n_u_Dict,__pyx_mstate_global->__pyx_n_u_Union,__pyx_mstate_global->__pyx_n_u_Any,__pyx_mstate_global->__pyx_n_u_Optional};
__pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_typing, __pyx_imported_names, 5, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error)
}
__pyx_t_4 = __pyx_t_1;
__Pyx_GOTREF(__pyx_t_4);
{
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_List,__pyx_mstate_global->__pyx_n_u_Dict,__pyx_mstate_global->__pyx_n_u_Union,__pyx_mstate_global->__pyx_n_u_Any,__pyx_mstate_global->__pyx_n_u_Optional};
for (__pyx_t_9=0; __pyx_t_9 < 5; __pyx_t_9++) {
__pyx_t_15 = __Pyx_ImportFrom(__pyx_t_4, __pyx_imported_names[__pyx_t_9]); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 100, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_9], __pyx_t_15) < (0)) __PYX_ERR(0, 100, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
}
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0101: from dataclasses import dataclass
{
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_dataclass};
__pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_dataclasses, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error)
}
__pyx_t_4 = __pyx_t_1;
__Pyx_GOTREF(__pyx_t_4);
{
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_dataclass};
__pyx_t_9 = 0; {
__pyx_t_15 = __Pyx_ImportFrom(__pyx_t_4, __pyx_imported_names[__pyx_t_9]); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 101, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_9], __pyx_t_15) < (0)) __PYX_ERR(0, 101, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
}
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
0102: from cpython.bytes cimport (PyBytes_FromStringAndSize,
0103: PyBytes_GET_SIZE, PyBytes_AsString)
0104:
+0105: import datetime
__pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_datetime, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error) __pyx_t_4 = __pyx_t_1; __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_datetime, __pyx_t_4) < (0)) __PYX_ERR(0, 105, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0106: import os
__pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_os, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) __pyx_t_4 = __pyx_t_1; __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_os, __pyx_t_4) < (0)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0107: import threading
__pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_threading, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error) __pyx_t_4 = __pyx_t_1; __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_threading, __pyx_t_4) < (0)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0108: import time
__pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_time, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) __pyx_t_4 = __pyx_t_1; __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_time, __pyx_t_4) < (0)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0109: import uuid
__pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_uuid_2, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) __pyx_t_4 = __pyx_t_1; __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_uuid_2, __pyx_t_4) < (0)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0110: import warnings
__pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error) __pyx_t_4 = __pyx_t_1; __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_warnings, __pyx_t_4) < (0)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0111: import logging
__pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_logging, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error) __pyx_t_4 = __pyx_t_1; __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_logging, __pyx_t_4) < (0)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
0112:
+0113: import numpy
__pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_numpy, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error) __pyx_t_4 = __pyx_t_1; __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_numpy, __pyx_t_4) < (0)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
0114: cimport numpy as cnp
0115: from numpy cimport NPY_DOUBLE, PyArrayObject
0116:
0117: # Functions we need to import as `PyObject` to avoid Cython's `object` type
0118: from .extra_numpy cimport *
0119:
+0120: cnp.import_array()
__pyx_t_28 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_28 == ((int)-1))) __PYX_ERR(0, 120, __pyx_L1_error)
0121:
+0122: cdef bint _dataframe_columnar_count_io_stats = False
__pyx_v_7questdb_7_client__dataframe_columnar_count_io_stats = 0;
+0123: cdef uint64_t _dataframe_columnar_flush_calls = 0
__pyx_v_7questdb_7_client__dataframe_columnar_flush_calls = 0;
+0124: cdef uint64_t _dataframe_columnar_flush_ns = 0
__pyx_v_7questdb_7_client__dataframe_columnar_flush_ns = 0;
+0125: cdef uint64_t _dataframe_columnar_sync_calls = 0
__pyx_v_7questdb_7_client__dataframe_columnar_sync_calls = 0;
+0126: cdef uint64_t _dataframe_columnar_sync_ns = 0
__pyx_v_7questdb_7_client__dataframe_columnar_sync_ns = 0;
+0127: cdef uint64_t _dataframe_columnar_flush_retry_syncs = 0
__pyx_v_7questdb_7_client__dataframe_columnar_flush_retry_syncs = 0;
0128:
+0129: cdef size_t _QWP_MAX_DEFERRED_ARROW_FRAMES = 100
__pyx_v_7questdb_7_client__QWP_MAX_DEFERRED_ARROW_FRAMES = 0x64;
0130:
0131: # Default rows per columnar batch. Only a pipelining-granularity default: the
0132: # column sender splits any frame exceeding the negotiated batch cap regardless
0133: # of this size. Mirrors the Rust core's `DEFAULT_MAX_CHUNK_ROWS`; both sides
0134: # pin the value in tests so it cannot drift. Keep them in sync when changing it.
+0135: DEFAULT_MAX_CHUNK_ROWS = 16384
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_DEFAULT_MAX_CHUNK_ROWS, __pyx_mstate_global->__pyx_int_16384) < (0)) __PYX_ERR(0, 135, __pyx_L1_error)
0136:
0137:
0138: # This value is automatically updated by the `bump2version` tool.
0139: # If you need to update it, also update the search definition in
0140: # .bumpversion.cfg.
+0141: VERSION = '5.0.0'
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_VERSION, __pyx_mstate_global->__pyx_kp_u_5_0_0) < (0)) __PYX_ERR(0, 141, __pyx_L1_error)
0142:
+0143: WARN_HIGH_RECONNECTS = True
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_WARN_HIGH_RECONNECTS, Py_True) < (0)) __PYX_ERR(0, 143, __pyx_L1_error)
0144:
0145:
+0146: cdef bint _has_gil(PyThreadState** gs):
static int __pyx_f_7questdb_7_client__has_gil(PyThreadState **__pyx_v_gs) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
+0147: return gs[0] == NULL
__pyx_r = ((__pyx_v_gs[0]) == NULL); goto __pyx_L0;
0148:
0149:
+0150: cdef bint _ensure_doesnt_have_gil(PyThreadState** gs):
static int __pyx_f_7questdb_7_client__ensure_doesnt_have_gil(PyThreadState **__pyx_v_gs) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client._ensure_doesnt_have_gil", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
return __pyx_r;
}
0151: """Returns True if previously had the GIL, False otherwise."""
+0152: if _has_gil(gs):
__pyx_t_1 = __pyx_f_7questdb_7_client__has_gil(__pyx_v_gs); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 152, __pyx_L1_error) if (__pyx_t_1) { /* … */ }
+0153: gs[0] = PyEval_SaveThread()
(__pyx_v_gs[0]) = PyEval_SaveThread();
+0154: return True
__pyx_r = 1;
goto __pyx_L0;
+0155: return False
__pyx_r = 0; goto __pyx_L0;
0156:
0157:
+0158: cdef void _ensure_has_gil(PyThreadState** gs):
static void __pyx_f_7questdb_7_client__ensure_has_gil(PyThreadState **__pyx_v_gs) {
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client._ensure_has_gil", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_L0:;
}
+0159: if not _has_gil(gs):
__pyx_t_1 = __pyx_f_7questdb_7_client__has_gil(__pyx_v_gs); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 159, __pyx_L1_error) __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { /* … */ }
+0160: PyEval_RestoreThread(gs[0])
PyEval_RestoreThread((__pyx_v_gs[0]));
+0161: gs[0] = NULL
(__pyx_v_gs[0]) = NULL;
0162:
0163:
+0164: class QuestDBErrorCode(Enum):
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_15 = PyTuple_Pack(1, __pyx_t_4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PEP560_update_bases(__pyx_t_15); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_16 = __Pyx_CalculateMetaclass(NULL, __pyx_t_4); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_13 = __Pyx_Py3MetaclassPrepare(__pyx_t_16, __pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_Category_of_Error); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (__pyx_t_4 != __pyx_t_15) { if (unlikely((PyDict_SetItemString(__pyx_t_13, "__orig_bases__", __pyx_t_15) < 0))) __PYX_ERR(0, 164, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; /* … */ __pyx_t_14 = __Pyx_Py3ClassCreate(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode, __pyx_t_4, __pyx_t_13, NULL, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_14); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode, __pyx_t_14) < (0)) __PYX_ERR(0, 164, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
0165: """Category of Error."""
+0166: CouldNotResolveAddr = line_sender_error_could_not_resolve_addr
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_could_not_resolve_addr); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_CouldNotResolveAddr, __pyx_t_15) < (0)) __PYX_ERR(0, 166, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0167: InvalidApiCall = line_sender_error_invalid_api_call
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_invalid_api_call); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 167, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_InvalidApiCall, __pyx_t_15) < (0)) __PYX_ERR(0, 167, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0168: SocketError = line_sender_error_socket_error
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_socket_error); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_SocketError, __pyx_t_15) < (0)) __PYX_ERR(0, 168, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0169: InvalidUtf8 = line_sender_error_invalid_utf8
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_invalid_utf8); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_InvalidUtf8, __pyx_t_15) < (0)) __PYX_ERR(0, 169, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0170: InvalidName = line_sender_error_invalid_name
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_invalid_name); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_InvalidName, __pyx_t_15) < (0)) __PYX_ERR(0, 170, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0171: InvalidTimestamp = line_sender_error_invalid_timestamp
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_invalid_timestamp); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_InvalidTimestamp, __pyx_t_15) < (0)) __PYX_ERR(0, 171, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0172: AuthError = line_sender_error_auth_error
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_auth_error); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_AuthError, __pyx_t_15) < (0)) __PYX_ERR(0, 172, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0173: TlsError = line_sender_error_tls_error
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_tls_error); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_TlsError, __pyx_t_15) < (0)) __PYX_ERR(0, 173, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0174: HttpNotSupported = line_sender_error_http_not_supported
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_http_not_supported); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_HttpNotSupported, __pyx_t_15) < (0)) __PYX_ERR(0, 174, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0175: ServerFlushError = line_sender_error_server_flush_error
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_server_flush_error); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ServerFlushError, __pyx_t_15) < (0)) __PYX_ERR(0, 175, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0176: ServerRejection = line_sender_error_server_rejection
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_server_rejection); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ServerRejection, __pyx_t_15) < (0)) __PYX_ERR(0, 176, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0177: RoleMismatch = line_sender_error_role_mismatch
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_role_mismatch); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_RoleMismatch, __pyx_t_15) < (0)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0178: ConfigError = line_sender_error_config_error
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_config_error); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ConfigError, __pyx_t_15) < (0)) __PYX_ERR(0, 178, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0179: ArrayError = line_sender_error_array_error
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_array_error); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ArrayError, __pyx_t_15) < (0)) __PYX_ERR(0, 179, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0180: ProtocolVersionError = line_sender_error_protocol_version_error
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_protocol_version_error); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ProtocolVersionError, __pyx_t_15) < (0)) __PYX_ERR(0, 180, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0181: DecimalError = line_sender_error_invalid_decimal
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_invalid_decimal); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_DecimalError, __pyx_t_15) < (0)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0182: ArrowUnsupportedColumnKind = line_sender_error_arrow_unsupported_column_kind
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_arrow_unsupported_column_kind); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ArrowUnsupportedColumnKind, __pyx_t_15) < (0)) __PYX_ERR(0, 182, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0183: ArrowIngest = line_sender_error_arrow_ingest
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_arrow_ingest); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ArrowIngest, __pyx_t_15) < (0)) __PYX_ERR(0, 183, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0184: FailoverRetry = line_sender_error_failover_retry
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_failover_retry); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_FailoverRetry, __pyx_t_15) < (0)) __PYX_ERR(0, 184, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0185: ConnectTimeout = line_sender_error_connect_timeout
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_connect_timeout); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 185, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ConnectTimeout, __pyx_t_15) < (0)) __PYX_ERR(0, 185, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
0186: # Query / reader (egress) categories. The error model is unified across
0187: # ingest and query, so these are real FFI codes (no longer bucketed).
+0188: HandshakeError = line_sender_error_handshake_error
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_handshake_error); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 188, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_HandshakeError, __pyx_t_15) < (0)) __PYX_ERR(0, 188, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0189: UnsupportedServer = line_sender_error_unsupported_server
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_unsupported_server); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_UnsupportedServer, __pyx_t_15) < (0)) __PYX_ERR(0, 189, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0190: ProtocolError = line_sender_error_protocol_error
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_protocol_error); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ProtocolError, __pyx_t_15) < (0)) __PYX_ERR(0, 190, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0191: InvalidBind = line_sender_error_invalid_bind
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_invalid_bind); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_InvalidBind, __pyx_t_15) < (0)) __PYX_ERR(0, 191, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0192: ServerSchemaMismatch = line_sender_error_server_schema_mismatch
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_server_schema_mismatch); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ServerSchemaMismatch, __pyx_t_15) < (0)) __PYX_ERR(0, 192, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0193: ServerParseError = line_sender_error_server_parse_error
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_server_parse_error); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ServerParseError, __pyx_t_15) < (0)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0194: ServerInternalError = line_sender_error_server_internal_error
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_server_internal_error); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ServerInternalError, __pyx_t_15) < (0)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0195: ServerSecurityError = line_sender_error_server_security_error
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_server_security_error); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ServerSecurityError, __pyx_t_15) < (0)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0196: LimitExceeded = line_sender_error_limit_exceeded
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_limit_exceeded); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 196, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_LimitExceeded, __pyx_t_15) < (0)) __PYX_ERR(0, 196, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0197: ServerLimitExceeded = line_sender_error_server_limit_exceeded
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_server_limit_exceeded); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ServerLimitExceeded, __pyx_t_15) < (0)) __PYX_ERR(0, 197, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0198: Cancelled = line_sender_error_cancelled
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_cancelled); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_Cancelled, __pyx_t_15) < (0)) __PYX_ERR(0, 198, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0199: FailoverWouldDuplicate = line_sender_error_failover_would_duplicate
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_failover_would_duplicate); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_FailoverWouldDuplicate, __pyx_t_15) < (0)) __PYX_ERR(0, 199, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0200: SchemaDrift = line_sender_error_schema_drift
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_schema_drift); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_SchemaDrift, __pyx_t_15) < (0)) __PYX_ERR(0, 200, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0201: NoSchema = line_sender_error_no_schema
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_no_schema); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_NoSchema, __pyx_t_15) < (0)) __PYX_ERR(0, 201, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0202: ArrowExport = line_sender_error_arrow_export
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_arrow_export); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 202, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ArrowExport, __pyx_t_15) < (0)) __PYX_ERR(0, 202, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0203: BatchTooLarge = line_sender_error_batch_too_large
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_batch_too_large); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_BatchTooLarge, __pyx_t_15) < (0)) __PYX_ERR(0, 203, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+0204: StoreResendRequired = line_sender_error_store_resend_required
__pyx_t_15 = __Pyx_PyLong_From_enum__line_sender_error_code(line_sender_error_store_resend_required); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_StoreResendRequired, __pyx_t_15) < (0)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
0205: # Python-only sentinel with no backing FFI code: raised by the Cython
0206: # DataFrame-shape validation path. Sits in a reserved high band, disjoint
0207: # from the contiguous FFI code space, so an appended FFI variant can never
0208: # collide with it. Compared by identity; never sent over FFI.
+0209: BadDataFrame = 0x10000
if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_BadDataFrame, __pyx_mstate_global->__pyx_int_65536) < (0)) __PYX_ERR(0, 209, __pyx_L1_error)
0210:
+0211: def __str__(self) -> str:
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_16QuestDBErrorCode_1__str__(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_16QuestDBErrorCode___str__, "Return the name of the enum."); static PyMethodDef __pyx_mdef_7questdb_7_client_16QuestDBErrorCode_1__str__ = {"__str__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_16QuestDBErrorCode_1__str__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_16QuestDBErrorCode___str__}; static PyObject *__pyx_pw_7questdb_7_client_16QuestDBErrorCode_1__str__(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("__str__ (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(0, 211, __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(0, 211, __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, "__str__", 0) < (0)) __PYX_ERR(0, 211, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__str__", 1, 1, 1, i); __PYX_ERR(0, 211, __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(0, 211, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__str__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 211, __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.QuestDBErrorCode.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_16QuestDBErrorCode___str__(__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_16QuestDBErrorCode___str__(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.QuestDBErrorCode.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_15 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (PyDict_SetItem(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(0, 211, __pyx_L1_error) __pyx_t_14 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_16QuestDBErrorCode_1__str__, 0, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode___str, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[41])); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_14); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_14, __pyx_t_15); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_str_2, __pyx_t_14) < (0)) __PYX_ERR(0, 211, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
0212: """Return the name of the enum."""
+0213: return self.name
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 213, __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(0, 213, __pyx_L1_error) __pyx_r = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0;
0214:
0215:
+0216: class QuestDBError(Exception):
__pyx_t_4 = PyTuple_Pack(1, ((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_16 = __Pyx_PEP560_update_bases(__pyx_t_4); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_13 = __Pyx_CalculateMetaclass(NULL, __pyx_t_16); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_14 = __Pyx_Py3MetaclassPrepare(__pyx_t_13, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_QuestDBError, __pyx_mstate_global->__pyx_n_u_QuestDBError, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_An_error_whilst_using_the_QuestD); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (__pyx_t_16 != __pyx_t_4) { if (unlikely((PyDict_SetItemString(__pyx_t_14, "__orig_bases__", __pyx_t_4) < 0))) __PYX_ERR(0, 216, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); /* … */ __pyx_t_17 = __Pyx_Py3ClassCreate(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_QuestDBError, __pyx_t_16, __pyx_t_14, NULL, 0, 0); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (__Pyx_CyFunction_InitClassCell(__pyx_t_4, __pyx_t_17) < (0)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_QuestDBError, __pyx_t_17) < (0)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
0217: """An error whilst using the QuestDB client."""
+0218: def __init__(self, code, msg, sender_error=None, *, in_doubt=False):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_12QuestDBError_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_12QuestDBError_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12QuestDBError_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_12QuestDBError_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_code = 0;
PyObject *__pyx_v_msg = 0;
PyObject *__pyx_v_sender_error = 0;
PyObject *__pyx_v_in_doubt = 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_code,&__pyx_mstate_global->__pyx_n_u_msg,&__pyx_mstate_global->__pyx_n_u_sender_error,&__pyx_mstate_global->__pyx_n_u_in_doubt,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(0, 218, __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(0, 218, __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(0, 218, __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(0, 218, __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(0, 218, __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(0, 218, __pyx_L3_error)
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)((PyObject*)Py_False)));
for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, i); __PYX_ERR(0, 218, __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(0, 218, __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(0, 218, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 218, __pyx_L3_error)
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 218, __pyx_L3_error)
break;
default: goto __pyx_L5_argtuple_error;
}
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)((PyObject*)Py_False)));
}
__pyx_v_self = values[0];
__pyx_v_code = values[1];
__pyx_v_msg = values[2];
__pyx_v_sender_error = values[3];
__pyx_v_in_doubt = values[4];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, __pyx_nargs); __PYX_ERR(0, 218, __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.QuestDBError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_12QuestDBError___init__(__pyx_self, __pyx_v_self, __pyx_v_code, __pyx_v_msg, __pyx_v_sender_error, __pyx_v_in_doubt);
/* 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_12QuestDBError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_msg, PyObject *__pyx_v_sender_error, PyObject *__pyx_v_in_doubt) {
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.QuestDBError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_15 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 218, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
if (PyDict_SetItem(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_in_doubt, ((PyObject*)Py_False)) < (0)) __PYX_ERR(0, 218, __pyx_L1_error)
__pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12QuestDBError_1__init__, 0, __pyx_mstate_global->__pyx_n_u_QuestDBError___init, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[42])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 218, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17);
#endif
PyList_Append(__pyx_t_4, __pyx_t_17);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_17, __pyx_mstate_global->__pyx_tuple[7]);
__Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_17, __pyx_t_15);
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
if (__Pyx_SetNameInClass(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_17) < (0)) __PYX_ERR(0, 218, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+0219: super().__init__(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(0, 219, __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(0, 219, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_msg}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__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_1)) __PYX_ERR(0, 219, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0220: self._code = code
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_code_2, __pyx_v_code) < (0)) __PYX_ERR(0, 220, __pyx_L1_error)
+0221: self._sender_error = sender_error
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_sender_error_2, __pyx_v_sender_error) < (0)) __PYX_ERR(0, 221, __pyx_L1_error)
+0222: self._in_doubt = bool(in_doubt)
__pyx_t_3 = NULL;
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_in_doubt};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_1);
}
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_in_doubt_2, ((PyObject *)__pyx_t_1)) < (0)) __PYX_ERR(0, 222, __pyx_L1_error)
__Pyx_DECREF((PyObject *)__pyx_t_1); __pyx_t_1 = 0;
0223:
+0224: @property
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12QuestDBError_3code(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_12QuestDBError_2code, "Return the error code."); static PyMethodDef __pyx_mdef_7questdb_7_client_12QuestDBError_3code = {"code", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12QuestDBError_3code, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12QuestDBError_2code}; static PyObject *__pyx_pw_7questdb_7_client_12QuestDBError_3code(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("code (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(0, 224, __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(0, 224, __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, "code", 0) < (0)) __PYX_ERR(0, 224, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("code", 1, 1, 1, i); __PYX_ERR(0, 224, __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(0, 224, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("code", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 224, __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.QuestDBError.code", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_12QuestDBError_2code(__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_12QuestDBError_2code(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.QuestDBError.code", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_15 = NULL; __pyx_t_18 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 224, __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_QuestDBErrorCode) < (0)) __PYX_ERR(0, 224, __pyx_L1_error) __pyx_t_19 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12QuestDBError_3code, 0, __pyx_mstate_global->__pyx_n_u_QuestDBError_code, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[43])); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 224, __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_18); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_t_19}; __pyx_t_17 = __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_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); } if (__Pyx_SetNameInClass(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_code, __pyx_t_17) < (0)) __PYX_ERR(0, 224, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
0225: def code(self) -> QuestDBErrorCode:
0226: """Return the error code."""
+0227: return self._code
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_code_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
0228:
+0229: @property
/* Python wrapper */ static PyLongObject *__pyx_pw_7questdb_7_client_12QuestDBError_5in_doubt(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_12QuestDBError_4in_doubt, "\n Whether the failed operation may already have delivered its input.\n\n Retrying the same input when this is true can duplicate rows unless the\n destination table has an appropriate deduplication guarantee.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12QuestDBError_5in_doubt = {"in_doubt", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12QuestDBError_5in_doubt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12QuestDBError_4in_doubt}; static PyLongObject *__pyx_pw_7questdb_7_client_12QuestDBError_5in_doubt(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("in_doubt (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(0, 229, __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(0, 229, __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, "in_doubt", 0) < (0)) __PYX_ERR(0, 229, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("in_doubt", 1, 1, 1, i); __PYX_ERR(0, 229, __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(0, 229, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("in_doubt", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 229, __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.QuestDBError.in_doubt", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_12QuestDBError_4in_doubt(__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_12QuestDBError_4in_doubt(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.QuestDBError.in_doubt", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_19 = NULL; __pyx_t_15 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (PyDict_SetItem(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(0, 229, __pyx_L1_error) __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12QuestDBError_5in_doubt, 0, __pyx_mstate_global->__pyx_n_u_QuestDBError_in_doubt, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[44])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 229, __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_15); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_19, __pyx_t_18}; __pyx_t_17 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_property, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); } if (__Pyx_SetNameInClass(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_in_doubt, __pyx_t_17) < (0)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
0230: def in_doubt(self) -> bool:
0231: """
0232: Whether the failed operation may already have delivered its input.
0233:
0234: Retrying the same input when this is true can duplicate rows unless the
0235: destination table has an appropriate deduplication guarantee.
0236: """
+0237: return self._in_doubt
__Pyx_XDECREF((PyObject *)__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_in_doubt_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 237, __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(0, 237, __pyx_L1_error) __pyx_r = ((PyLongObject *)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0;
0238:
+0239: @property
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12QuestDBError_7sender_error(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_12QuestDBError_6sender_error, "\n Return the structured QWP/WebSocket diagnostic, if this error carries\n one from a QWP/WebSocket sender failure.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12QuestDBError_7sender_error = {"sender_error", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12QuestDBError_7sender_error, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12QuestDBError_6sender_error}; static PyObject *__pyx_pw_7questdb_7_client_12QuestDBError_7sender_error(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("sender_error (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(0, 239, __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(0, 239, __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, "sender_error", 0) < (0)) __PYX_ERR(0, 239, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("sender_error", 1, 1, 1, i); __PYX_ERR(0, 239, __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(0, 239, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("sender_error", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 239, __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.QuestDBError.sender_error", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_12QuestDBError_6sender_error(__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_12QuestDBError_6sender_error(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_XDECREF(__pyx_t_5); __Pyx_AddTraceback("questdb._client.QuestDBError.sender_error", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = NULL; __pyx_t_19 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12QuestDBError_7sender_error, 0, __pyx_mstate_global->__pyx_n_u_QuestDBError_sender_error, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[45])); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 239, __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_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_18, __pyx_t_19}; __pyx_t_17 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_property, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); } if (__Pyx_SetNameInClass(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_sender_error, __pyx_t_17) < (0)) __PYX_ERR(0, 239, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
0240: def sender_error(self):
0241: """
0242: Return the structured QWP/WebSocket diagnostic, if this error carries
0243: one from a QWP/WebSocket sender failure.
0244: """
+0245: if self._sender_error is not None:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_sender_error_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __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) { /* … */ }
+0246: self._sender_error = _sender_error_from_raw(self._sender_error)
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_sender_error_from_raw); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 246, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_sender_error_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 246, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = 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_6 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_sender_error_2, __pyx_t_1) < (0)) __PYX_ERR(0, 246, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0247: return self._sender_error
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_sender_error_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
0248:
0249:
+0250: class QuestDBServerRejectionError(QuestDBError):
__Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_13 = PyTuple_Pack(1, __pyx_t_16); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_16 = __Pyx_PEP560_update_bases(__pyx_t_13); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_14 = __Pyx_CalculateMetaclass(NULL, __pyx_t_16); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_17 = __Pyx_Py3MetaclassPrepare(__pyx_t_14, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_QuestDBServerRejectionError, __pyx_mstate_global->__pyx_n_u_QuestDBServerRejectionError, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_A_terminal_QWP_WebSocket_server); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (__pyx_t_16 != __pyx_t_13) { if (unlikely((PyDict_SetItemString(__pyx_t_17, "__orig_bases__", __pyx_t_13) < 0))) __PYX_ERR(0, 250, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_QuestDBServerRejectionError, __pyx_t_16, __pyx_t_17, NULL, 0, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_QuestDBServerRejectionError, __pyx_t_13) < (0)) __PYX_ERR(0, 250, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
0251: """
0252: A terminal QWP/WebSocket server rejection.
0253:
0254: The structured server payload is available through
0255: :attr:`QuestDBError.sender_error`.
0256: """
0257:
0258:
+0259: class UnsupportedDataFrameShapeError(QuestDBError):
__Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 259, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_14 = PyTuple_Pack(1, __pyx_t_16); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 259, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_16 = __Pyx_PEP560_update_bases(__pyx_t_14); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 259, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = __Pyx_CalculateMetaclass(NULL, __pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 259, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_13 = __Pyx_Py3MetaclassPrepare(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_UnsupportedDataFrameShapeError, __pyx_mstate_global->__pyx_n_u_UnsupportedDataFrameShapeError, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_A_DataFrame_shape_is_not_suppor); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 259, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (__pyx_t_16 != __pyx_t_14) { if (unlikely((PyDict_SetItemString(__pyx_t_13, "__orig_bases__", __pyx_t_14) < 0))) __PYX_ERR(0, 259, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = PyList_New(0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 259, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); /* … */ __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_UnsupportedDataFrameShapeError, __pyx_t_16, __pyx_t_13, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 259, __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 (__Pyx_CyFunction_InitClassCell(__pyx_t_14, __pyx_t_4) < (0)) __PYX_ERR(0, 259, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_UnsupportedDataFrameShapeError, __pyx_t_4) < (0)) __PYX_ERR(0, 259, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
0260: """
0261: A DataFrame shape is not supported by the optimized columnar client path.
0262:
0263: ``column_failures`` carries structured per-column rejection details where
0264: available; each is a ``dict`` with ``column`` (name or ``None`` for a
0265: whole-frame issue), ``target``, ``source_code``, and ``reason``. The same
0266: per-column reasons are also folded into ``str(exc)`` so a bare
0267: ``print(exc)`` explains *why* the frame was rejected, and — when the
0268: designated timestamp is at fault — how to fix it on
0269: :meth:`QuestDB.dataframe` (name a valid timestamp column, or pass
0270: ``ServerTimestamp``).
0271: """
+0272: def __init__(self, msg, column_failures=None):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_30UnsupportedDataFrameShapeError_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_30UnsupportedDataFrameShapeError_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_30UnsupportedDataFrameShapeError_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_30UnsupportedDataFrameShapeError_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;
PyObject *__pyx_v_column_failures = 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,&__pyx_mstate_global->__pyx_n_u_column_failures,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(0, 272, __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(0, 272, __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(0, 272, __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(0, 272, __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(0, 272, __pyx_L3_error)
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, i); __PYX_ERR(0, 272, __pyx_L3_error) }
}
} else {
switch (__pyx_nargs) {
case 3:
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 272, __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(0, 272, __pyx_L3_error)
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 272, __pyx_L3_error)
break;
default: goto __pyx_L5_argtuple_error;
}
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
}
__pyx_v_self = values[0];
__pyx_v_msg = values[1];
__pyx_v_column_failures = values[2];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, __pyx_nargs); __PYX_ERR(0, 272, __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.UnsupportedDataFrameShapeError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_30UnsupportedDataFrameShapeError___init__(__pyx_self, __pyx_v_self, __pyx_v_msg, __pyx_v_column_failures);
/* 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_30UnsupportedDataFrameShapeError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_msg, PyObject *__pyx_v_column_failures) {
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_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client.UnsupportedDataFrameShapeError.__init__", __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_30UnsupportedDataFrameShapeError_1__init__, 0, __pyx_mstate_global->__pyx_n_u_UnsupportedDataFrameShapeError_2, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[46])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 272, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4);
#endif
PyList_Append(__pyx_t_14, __pyx_t_4);
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[7]);
if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_4) < (0)) __PYX_ERR(0, 272, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0273: self.column_failures = tuple(column_failures or ())
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_column_failures); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 273, __pyx_L1_error) if (!__pyx_t_2) { } else { __Pyx_INCREF(__pyx_v_column_failures); __pyx_t_1 = __pyx_v_column_failures; goto __pyx_L3_bool_binop_done; } __Pyx_INCREF(__pyx_mstate_global->__pyx_empty_tuple); __pyx_t_1 = __pyx_mstate_global->__pyx_empty_tuple; __pyx_L3_bool_binop_done:; __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_column_failures, __pyx_t_3) < (0)) __PYX_ERR(0, 273, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0274: super().__init__(
__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(0, 274, __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(0, 274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1);
+0275: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 275, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 275, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+0276: _format_unsupported_dataframe_msg(msg, self.column_failures))
__pyx_t_6 = __pyx_v_msg; __Pyx_INCREF(__pyx_t_6); if (!(likely(PyUnicode_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_6))) __PYX_ERR(0, 276, __pyx_L1_error) __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_column_failures); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (!(likely(PyTuple_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_8))) __PYX_ERR(0, 276, __pyx_L1_error) __pyx_t_9 = __pyx_f_7questdb_7_client__format_unsupported_dataframe_msg(((PyObject*)__pyx_t_6), ((PyObject*)__pyx_t_8)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_7 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_5, __pyx_t_9}; __pyx_t_3 = __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_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
0277:
0278:
+0279: cdef str _format_unsupported_dataframe_msg(str msg, tuple column_failures):
static PyObject *__pyx_f_7questdb_7_client__format_unsupported_dataframe_msg(PyObject *__pyx_v_msg, PyObject *__pyx_v_column_failures) {
PyObject *__pyx_v_lines = 0;
PyObject *__pyx_v_failure = 0;
PyObject *__pyx_v_column = 0;
PyObject *__pyx_v_reason = 0;
int __pyx_v_ts_related;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._format_unsupported_dataframe_msg", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_lines);
__Pyx_XDECREF(__pyx_v_failure);
__Pyx_XDECREF(__pyx_v_column);
__Pyx_XDECREF(__pyx_v_reason);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0280: # Surface the per-column reasons (otherwise stranded on the
0281: # `.column_failures` attribute) so a plain `str(exc)` says what to fix
0282: # instead of a bare "columnar v1". When the designated timestamp is the
0283: # problem, point at the two client-side remedies (name a valid column,
0284: # or let the server stamp) — keeping the user on QuestDB.dataframe()
0285: # rather than steering them off to the row path.
+0286: if not column_failures:
if (__pyx_v_column_failures == Py_None) __pyx_t_1 = 0;
else
{
Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_v_column_failures);
if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 286, __pyx_L1_error)
__pyx_t_1 = (__pyx_temp != 0);
}
__pyx_t_2 = (!__pyx_t_1);
if (__pyx_t_2) {
/* … */
}
+0287: return msg
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_msg); __pyx_r = __pyx_v_msg; goto __pyx_L0;
+0288: cdef list lines = [msg]
__pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 288, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_msg); __Pyx_GIVEREF(__pyx_v_msg); if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_msg) != (0)) __PYX_ERR(0, 288, __pyx_L1_error); __pyx_v_lines = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
0289: cdef object failure, column, reason
+0290: cdef bint ts_related = False
__pyx_v_ts_related = 0;
+0291: for failure in column_failures:
if (unlikely(__pyx_v_column_failures == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
__PYX_ERR(0, 291, __pyx_L1_error)
}
__pyx_t_3 = __pyx_v_column_failures; __Pyx_INCREF(__pyx_t_3);
__pyx_t_4 = 0;
for (;;) {
{
Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
#if !CYTHON_ASSUME_SAFE_SIZE
if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 291, __pyx_L1_error)
#endif
if (__pyx_t_4 >= __pyx_temp) break;
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_5 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4));
#else
__pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4);
#endif
++__pyx_t_4;
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XDECREF_SET(__pyx_v_failure, __pyx_t_5);
__pyx_t_5 = 0;
/* … */
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0292: if isinstance(failure, dict):
__pyx_t_2 = PyDict_Check(__pyx_v_failure);
if (__pyx_t_2) {
/* … */
goto __pyx_L6;
}
+0293: column = failure.get('column')
__pyx_t_6 = __pyx_v_failure;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_n_u_column_2};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 293, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
__Pyx_XDECREF_SET(__pyx_v_column, __pyx_t_5);
__pyx_t_5 = 0;
+0294: reason = failure.get('reason', failure)
__pyx_t_6 = __pyx_v_failure;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_mstate_global->__pyx_n_u_reason, __pyx_v_failure};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 294, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
__Pyx_XDECREF_SET(__pyx_v_reason, __pyx_t_5);
__pyx_t_5 = 0;
+0295: if (failure.get('target') == 'designated timestamp'
__pyx_t_6 = __pyx_v_failure;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_n_u_target};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 295, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
__pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_designated_timestamp, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 295, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (!__pyx_t_1) {
} else {
__pyx_t_2 = __pyx_t_1;
goto __pyx_L8_bool_binop_done;
}
/* … */
if (__pyx_t_2) {
/* … */
}
+0296: or 'ServerTimestamp' in str(reason)):
__pyx_t_5 = __Pyx_PyObject_Unicode(__pyx_v_reason); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = (__Pyx_PyUnicode_ContainsTF(__pyx_mstate_global->__pyx_n_u_ServerTimestamp, __pyx_t_5, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 296, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_2 = __pyx_t_1; __pyx_L8_bool_binop_done:;
+0297: ts_related = True
__pyx_v_ts_related = 1;
0298: else:
+0299: column, reason = None, failure
/*else*/ {
__pyx_t_5 = Py_None;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = __pyx_v_failure;
__Pyx_INCREF(__pyx_t_6);
__Pyx_XDECREF_SET(__pyx_v_column, __pyx_t_5);
__pyx_t_5 = 0;
__Pyx_XDECREF_SET(__pyx_v_reason, __pyx_t_6);
__pyx_t_6 = 0;
}
__pyx_L6:;
+0300: if column is not None:
__pyx_t_2 = (__pyx_v_column != Py_None);
if (__pyx_t_2) {
/* … */
goto __pyx_L10;
}
+0301: lines.append(f' - column {column!r}: {reason}')
__pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_column), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_reason, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_column_3; __pyx_t_8[1] = __pyx_t_6; __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_; __pyx_t_8[3] = __pyx_t_5; __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_8, 4, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_lines, __pyx_t_9); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 301, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
0302: else:
+0303: lines.append(f' - {reason}')
/*else*/ {
__pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_reason, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 303, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u__20, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 303, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_10 = __Pyx_PyList_Append(__pyx_v_lines, __pyx_t_5); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 303, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__pyx_L10:;
+0304: if ts_related:
if (__pyx_v_ts_related) {
/* … */
}
+0305: lines.append(
__pyx_t_10 = __Pyx_PyList_Append(__pyx_v_lines, __pyx_mstate_global->__pyx_kp_u_For_the_designated_timestamp_na); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 305, __pyx_L1_error)
0306: " For the designated timestamp, name a valid timestamp column "
0307: "with at='<column>', or pass at=ServerTimestamp to have the "
0308: "server assign each row's timestamp on arrival.")
+0309: return '\n'.join(lines)
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__21, __pyx_v_lines); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 309, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0;
0310:
0311:
+0312: cdef inline object c_err_code_to_py(line_sender_error_code code):
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client_c_err_code_to_py(enum line_sender_error_code __pyx_v_code) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.c_err_code_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0313: if code == line_sender_error_could_not_resolve_addr:
switch (__pyx_v_code) {
case line_sender_error_could_not_resolve_addr:
/* … */
break;
case line_sender_error_invalid_api_call:
+0314: return QuestDBErrorCode.CouldNotResolveAddr
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_CouldNotResolveAddr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0315: elif code == line_sender_error_invalid_api_call:
break;
case line_sender_error_socket_error:
+0316: return QuestDBErrorCode.InvalidApiCall
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0317: elif code == line_sender_error_socket_error:
break;
case line_sender_error_invalid_utf8:
+0318: return QuestDBErrorCode.SocketError
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_SocketError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0319: elif code == line_sender_error_invalid_utf8:
break;
case line_sender_error_invalid_name:
+0320: return QuestDBErrorCode.InvalidUtf8
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_InvalidUtf8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0321: elif code == line_sender_error_invalid_name:
break;
case line_sender_error_invalid_timestamp:
+0322: return QuestDBErrorCode.InvalidName
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_InvalidName); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0323: elif code == line_sender_error_invalid_timestamp:
break;
case line_sender_error_auth_error:
+0324: return QuestDBErrorCode.InvalidTimestamp
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 324, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_InvalidTimestamp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0325: elif code == line_sender_error_auth_error:
break;
case line_sender_error_tls_error:
+0326: return QuestDBErrorCode.AuthError
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_AuthError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0327: elif code == line_sender_error_tls_error:
break;
case line_sender_error_http_not_supported:
+0328: return QuestDBErrorCode.TlsError
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_TlsError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0329: elif code == line_sender_error_http_not_supported:
break;
case line_sender_error_server_flush_error:
+0330: return QuestDBErrorCode.HttpNotSupported
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_HttpNotSupported); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0331: elif code == line_sender_error_server_flush_error:
break;
case line_sender_error_server_rejection:
+0332: return QuestDBErrorCode.ServerFlushError
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0333: elif code == line_sender_error_server_rejection:
break;
case line_sender_error_role_mismatch:
+0334: return QuestDBErrorCode.ServerRejection
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ServerRejection); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0335: elif code == line_sender_error_role_mismatch:
break;
case line_sender_error_config_error:
+0336: return QuestDBErrorCode.RoleMismatch
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_RoleMismatch); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0337: elif code == line_sender_error_config_error:
break;
case line_sender_error_array_error:
+0338: return QuestDBErrorCode.ConfigError
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0339: elif code == line_sender_error_array_error:
break;
case line_sender_error_protocol_version_error:
+0340: return QuestDBErrorCode.ArrayError
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ArrayError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0341: elif code == line_sender_error_protocol_version_error:
break;
case line_sender_error_invalid_decimal:
+0342: return QuestDBErrorCode.ProtocolVersionError
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ProtocolVersionError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0343: elif code == line_sender_error_invalid_decimal:
break;
case line_sender_error_arrow_unsupported_column_kind:
+0344: return QuestDBErrorCode.DecimalError
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_DecimalError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0345: elif code == line_sender_error_arrow_unsupported_column_kind:
break;
case line_sender_error_arrow_ingest:
+0346: return QuestDBErrorCode.ArrowUnsupportedColumnKind
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ArrowUnsupportedColumnKind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0347: elif code == line_sender_error_arrow_ingest:
break;
case line_sender_error_failover_retry:
+0348: return QuestDBErrorCode.ArrowIngest
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ArrowIngest); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 348, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0349: elif code == line_sender_error_failover_retry:
break;
case line_sender_error_connect_timeout:
+0350: return QuestDBErrorCode.FailoverRetry
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 350, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_FailoverRetry); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 350, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0351: elif code == line_sender_error_connect_timeout:
break;
case line_sender_error_handshake_error:
+0352: return QuestDBErrorCode.ConnectTimeout
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ConnectTimeout); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0353: elif code == line_sender_error_handshake_error:
break;
case line_sender_error_unsupported_server:
+0354: return QuestDBErrorCode.HandshakeError
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 354, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_HandshakeError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 354, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0355: elif code == line_sender_error_unsupported_server:
break;
case line_sender_error_protocol_error:
+0356: return QuestDBErrorCode.UnsupportedServer
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_UnsupportedServer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0357: elif code == line_sender_error_protocol_error:
break;
case line_sender_error_invalid_bind:
+0358: return QuestDBErrorCode.ProtocolError
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 358, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ProtocolError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 358, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0359: elif code == line_sender_error_invalid_bind:
break;
case line_sender_error_server_schema_mismatch:
+0360: return QuestDBErrorCode.InvalidBind
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_InvalidBind); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0361: elif code == line_sender_error_server_schema_mismatch:
break;
case line_sender_error_server_parse_error:
+0362: return QuestDBErrorCode.ServerSchemaMismatch
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ServerSchemaMismatch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0363: elif code == line_sender_error_server_parse_error:
break;
case line_sender_error_server_internal_error:
+0364: return QuestDBErrorCode.ServerParseError
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ServerParseError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0365: elif code == line_sender_error_server_internal_error:
break;
case line_sender_error_server_security_error:
+0366: return QuestDBErrorCode.ServerInternalError
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ServerInternalError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 366, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0367: elif code == line_sender_error_server_security_error:
break;
case line_sender_error_limit_exceeded:
+0368: return QuestDBErrorCode.ServerSecurityError
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ServerSecurityError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0369: elif code == line_sender_error_limit_exceeded:
break;
case line_sender_error_server_limit_exceeded:
+0370: return QuestDBErrorCode.LimitExceeded
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 370, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_LimitExceeded); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 370, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0371: elif code == line_sender_error_server_limit_exceeded:
break;
case line_sender_error_cancelled:
+0372: return QuestDBErrorCode.ServerLimitExceeded
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 372, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ServerLimitExceeded); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0373: elif code == line_sender_error_cancelled:
break;
case line_sender_error_failover_would_duplicate:
+0374: return QuestDBErrorCode.Cancelled
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_Cancelled); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0375: elif code == line_sender_error_failover_would_duplicate:
break;
case line_sender_error_schema_drift:
+0376: return QuestDBErrorCode.FailoverWouldDuplicate
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 376, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_FailoverWouldDuplicate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 376, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0377: elif code == line_sender_error_schema_drift:
break;
case line_sender_error_no_schema:
+0378: return QuestDBErrorCode.SchemaDrift
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_SchemaDrift); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0379: elif code == line_sender_error_no_schema:
break;
case line_sender_error_arrow_export:
+0380: return QuestDBErrorCode.NoSchema
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_NoSchema); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0381: elif code == line_sender_error_arrow_export:
break;
case line_sender_error_batch_too_large:
+0382: return QuestDBErrorCode.ArrowExport
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ArrowExport); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0383: elif code == line_sender_error_batch_too_large:
break;
case line_sender_error_store_resend_required:
+0384: return QuestDBErrorCode.BatchTooLarge
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_BatchTooLarge); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0385: elif code == line_sender_error_store_resend_required:
break;
default:
+0386: return QuestDBErrorCode.StoreResendRequired
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_StoreResendRequired); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
0387: else:
+0388: raise ValueError('Internal error converting error code.')
__pyx_t_1 = NULL;
__pyx_t_3 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_Internal_error_converting_error};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 388, __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(0, 388, __pyx_L1_error)
break;
}
0389:
0390:
+0391: cdef inline object c_sender_error_view_to_raw(
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client_c_sender_error_view_to_raw(struct line_sender_qwpws_error_view __pyx_v_view) {
PyObject *__pyx_v_message = 0;
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_AddTraceback("questdb._client.c_sender_error_view_to_raw", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_message);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0392: line_sender_qwpws_error_view view):
0393: cdef object message
+0394: if view.message == NULL:
__pyx_t_1 = (__pyx_v_view.message == NULL);
if (__pyx_t_1) {
/* … */
goto __pyx_L3;
}
+0395: message = ''
__Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__7);
__pyx_v_message = __pyx_mstate_global->__pyx_kp_u__7;
0396: else:
+0397: message = PyUnicode_FromStringAndSize(
/*else*/ {
/* … */
__pyx_t_2 = PyUnicode_FromStringAndSize(__pyx_v_view.message, ((Py_ssize_t)__pyx_v_view.message_len)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 397, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_message = __pyx_t_2;
__pyx_t_2 = 0;
}
__pyx_L3:;
0398: view.message, <Py_ssize_t>view.message_len)
+0399: return (
__Pyx_XDECREF(__pyx_r);
+0400: <int>view.category,
__pyx_t_2 = __Pyx_PyLong_From_int(((int)__pyx_v_view.category)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); /* … */ __pyx_t_8 = PyTuple_New(7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2) != (0)) __PYX_ERR(0, 400, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3) != (0)) __PYX_ERR(0, 400, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_4) != (0)) __PYX_ERR(0, 400, __pyx_L1_error); __Pyx_INCREF(__pyx_v_message); __Pyx_GIVEREF(__pyx_v_message); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_v_message) != (0)) __PYX_ERR(0, 400, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_t_5) != (0)) __PYX_ERR(0, 400, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_6); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 5, __pyx_t_6) != (0)) __PYX_ERR(0, 400, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_7); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 6, __pyx_t_7) != (0)) __PYX_ERR(0, 400, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L0;
+0401: <int>view.applied_policy,
__pyx_t_3 = __Pyx_PyLong_From_int(((int)__pyx_v_view.applied_policy)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 401, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3);
+0402: view.status if view.has_status else None,
__pyx_t_1 = (__pyx_v_view.has_status != 0);
if (__pyx_t_1) {
__pyx_t_5 = __Pyx_PyLong_From_uint8_t(__pyx_v_view.status); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 402, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = __pyx_t_5;
__pyx_t_5 = 0;
} else {
__Pyx_INCREF(Py_None);
__pyx_t_4 = Py_None;
}
0403: message,
+0404: view.message_sequence if view.has_message_sequence else None,
__pyx_t_1 = (__pyx_v_view.has_message_sequence != 0);
if (__pyx_t_1) {
__pyx_t_6 = __Pyx_PyLong_From_uint64_t(__pyx_v_view.message_sequence); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 404, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_5 = __pyx_t_6;
__pyx_t_6 = 0;
} else {
__Pyx_INCREF(Py_None);
__pyx_t_5 = Py_None;
}
+0405: view.from_fsn,
__pyx_t_6 = __Pyx_PyLong_From_uint64_t(__pyx_v_view.from_fsn); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 405, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6);
+0406: view.to_fsn)
__pyx_t_7 = __Pyx_PyLong_From_uint64_t(__pyx_v_view.to_fsn); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 406, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7);
0407:
0408:
+0409: cdef inline object c_err_to_fields(questdb_error* err):
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client_c_err_to_fields(questdb_error *__pyx_v_err) {
questdb_error_code __pyx_v_code;
size_t __pyx_v_c_len;
char const *__pyx_v_c_msg;
struct line_sender_qwpws_error_view __pyx_v_qwp_ws_view;
int __pyx_v_in_doubt;
PyObject *__pyx_v_py_msg = 0;
PyObject *__pyx_v_py_code = 0;
PyObject *__pyx_v_py_sender_error = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client.c_err_to_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_py_msg);
__Pyx_XDECREF(__pyx_v_py_code);
__Pyx_XDECREF(__pyx_v_py_sender_error);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0410: """Extract ``QuestDBError`` fields from a C error, which will be freed."""
+0411: if err == NULL:
__pyx_t_1 = (__pyx_v_err == NULL);
if (__pyx_t_1) {
/* … */
}
+0412: return (
__Pyx_XDECREF(__pyx_r);
+0413: QuestDBErrorCode.SocketError,
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SocketError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* … */ __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3) != (0)) __PYX_ERR(0, 413, __pyx_L1_error); __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_Unknown_error_the_client_library); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_kp_u_Unknown_error_the_client_library); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_mstate_global->__pyx_kp_u_Unknown_error_the_client_library) != (0)) __PYX_ERR(0, 413, __pyx_L1_error); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None) != (0)) __PYX_ERR(0, 413, __pyx_L1_error); __Pyx_INCREF(Py_False); __Pyx_GIVEREF(Py_False); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 3, Py_False) != (0)) __PYX_ERR(0, 413, __pyx_L1_error); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
0414: 'Unknown error: the client library reported failure without '
0415: 'a diagnostic.',
0416: None,
0417: False)
+0418: cdef questdb_error_code code = questdb_error_get_code(err)
__pyx_v_code = questdb_error_get_code(__pyx_v_err);
+0419: cdef size_t c_len = 0
__pyx_v_c_len = 0;
+0420: cdef const char* c_msg = questdb_error_msg(err, &c_len)
__pyx_v_c_msg = questdb_error_msg(__pyx_v_err, (&__pyx_v_c_len));
0421: cdef line_sender_qwpws_error_view qwp_ws_view
+0422: cdef bint in_doubt = questdb_error_in_doubt(err)
__pyx_v_in_doubt = questdb_error_in_doubt(__pyx_v_err);
0423: cdef object py_msg
0424: cdef object py_code
+0425: cdef object py_sender_error = None
__Pyx_INCREF(Py_None);
__pyx_v_py_sender_error = Py_None;
+0426: try:
/*try:*/ {
+0427: py_code = c_err_code_to_py(code)
__pyx_t_2 = __pyx_f_7questdb_7_client_c_err_code_to_py(__pyx_v_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 427, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_py_code = __pyx_t_2; __pyx_t_2 = 0;
+0428: py_msg = PyUnicode_FromStringAndSize(c_msg, <Py_ssize_t>c_len)
__pyx_t_2 = PyUnicode_FromStringAndSize(__pyx_v_c_msg, ((Py_ssize_t)__pyx_v_c_len)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 428, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_py_msg = __pyx_t_2; __pyx_t_2 = 0;
+0429: if line_sender_error_qwpws_get_view(err, &qwp_ws_view):
__pyx_t_1 = line_sender_error_qwpws_get_view(__pyx_v_err, (&__pyx_v_qwp_ws_view));
if (__pyx_t_1) {
/* … */
}
+0430: py_sender_error = c_sender_error_view_to_raw(qwp_ws_view)
__pyx_t_2 = __pyx_f_7questdb_7_client_c_sender_error_view_to_raw(__pyx_v_qwp_ws_view); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 430, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_py_sender_error, __pyx_t_2); __pyx_t_2 = 0;
+0431: return (py_code, py_msg, py_sender_error, in_doubt)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_in_doubt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 431, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 431, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_py_code); __Pyx_GIVEREF(__pyx_v_py_code); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_py_code) != (0)) __PYX_ERR(0, 431, __pyx_L5_error); __Pyx_INCREF(__pyx_v_py_msg); __Pyx_GIVEREF(__pyx_v_py_msg); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_py_msg) != (0)) __PYX_ERR(0, 431, __pyx_L5_error); __Pyx_INCREF(__pyx_v_py_sender_error); __Pyx_GIVEREF(__pyx_v_py_sender_error); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_py_sender_error) != (0)) __PYX_ERR(0, 431, __pyx_L5_error); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_2) != (0)) __PYX_ERR(0, 431, __pyx_L5_error); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L4_return; }
0432: finally:
+0433: questdb_error_free(err)
/*finally:*/ {
__pyx_L5_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
if ( unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
__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_XGOTREF(__pyx_t_12);
__pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
{
questdb_error_free(__pyx_v_err);
}
__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_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
__pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
__pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
goto __pyx_L1_error;
}
__pyx_L4_return: {
__pyx_t_12 = __pyx_r;
__pyx_r = 0;
questdb_error_free(__pyx_v_err);
__pyx_r = __pyx_t_12;
__pyx_t_12 = 0;
goto __pyx_L0;
}
}
0434:
0435:
+0436: cdef inline object c_err_to_py(line_sender_error* err):
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client_c_err_to_py(struct line_sender_error *__pyx_v_err) {
PyObject *__pyx_v_tup = 0;
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_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.c_err_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_tup);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0437: """Construct a ``QuestDBError`` from a C error, which will be freed."""
+0438: cdef object tup = c_err_to_fields(err)
__pyx_t_1 = __pyx_f_7questdb_7_client_c_err_to_fields(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_tup = __pyx_t_1; __pyx_t_1 = 0;
+0439: if tup[0] == QuestDBErrorCode.ServerRejection:
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_tup, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ServerRejection); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 439, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_4) { /* … */ }
+0440: return QuestDBServerRejectionError(
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBServerRejectionError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 440, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1);
+0441: tup[0], tup[1], tup[2], in_doubt=tup[3])
__pyx_t_5 = __Pyx_GetItemInt(__pyx_v_tup, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 441, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_tup, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 441, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_tup, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 441, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_tup, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 441, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_1, __pyx__function); __pyx_t_9 = 0; } #endif { PyObject *__pyx_callargs[4 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_t_5, __pyx_t_6, __pyx_t_7}; __pyx_t_10 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 440, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_in_doubt, __pyx_t_8, __pyx_t_10, __pyx_callargs+4, 0) < (0)) __PYX_ERR(0, 440, __pyx_L1_error) __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_9, (4-__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(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 440, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0442: return QuestDBError(tup[0], tup[1], tup[2], in_doubt=tup[3])
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_tup, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_tup, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_tup, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_tup, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_10); assert(__pyx_t_1); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_10, __pyx__function); __pyx_t_9 = 0; } #endif { PyObject *__pyx_callargs[4 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_t_8, __pyx_t_7, __pyx_t_6}; __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_in_doubt, __pyx_t_5, __pyx_t_3, __pyx_callargs+4, 0) < (0)) __PYX_ERR(0, 442, __pyx_L1_error) __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_9, (4-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
0443:
0444:
+0445: cdef inline object c_err_to_py_fmt(line_sender_error* err, str fmt):
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client_c_err_to_py_fmt(struct line_sender_error *__pyx_v_err, PyObject *__pyx_v_fmt) {
PyObject *__pyx_v_tup = 0;
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_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.c_err_to_py_fmt", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_tup);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0446: """Construct a ``QuestDBError`` from a C error, which will be freed."""
+0447: cdef object tup = c_err_to_fields(err)
__pyx_t_1 = __pyx_f_7questdb_7_client_c_err_to_fields(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_tup = __pyx_t_1; __pyx_t_1 = 0;
+0448: if tup[0] == QuestDBErrorCode.ServerRejection:
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_tup, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ServerRejection); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 448, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 448, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_4) { /* … */ }
+0449: return QuestDBServerRejectionError(
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBServerRejectionError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1);
+0450: tup[0], fmt.format(tup[1]), tup[2], in_doubt=tup[3])
__pyx_t_5 = __Pyx_GetItemInt(__pyx_v_tup, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_tup, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_fmt, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_tup, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_tup, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_1, __pyx__function); __pyx_t_9 = 0; } #endif { PyObject *__pyx_callargs[4 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_t_5, __pyx_t_7, __pyx_t_6}; __pyx_t_10 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_in_doubt, __pyx_t_8, __pyx_t_10, __pyx_callargs+4, 0) < (0)) __PYX_ERR(0, 449, __pyx_L1_error) __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_9, (4-__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(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 449, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+0451: return QuestDBError(
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10);
+0452: tup[0], fmt.format(tup[1]), tup[2], in_doubt=tup[3])
__pyx_t_8 = __Pyx_GetItemInt(__pyx_v_tup, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_tup, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_fmt, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_tup, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_tup, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_10); assert(__pyx_t_1); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_10, __pyx__function); __pyx_t_9 = 0; } #endif { PyObject *__pyx_callargs[4 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_t_8, __pyx_t_7, __pyx_t_6}; __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_in_doubt, __pyx_t_5, __pyx_t_3, __pyx_callargs+4, 0) < (0)) __PYX_ERR(0, 451, __pyx_L1_error) __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_9, (4-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
0453:
0454:
+0455: cdef inline void_int reserve_buffer(
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_reserve_buffer(struct line_sender_buffer *__pyx_v_buffer, size_t __pyx_v_additional) {
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.reserve_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0456: line_sender_buffer* buffer,
0457: size_t additional) except -1:
+0458: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+0459: if not line_sender_buffer_reserve(buffer, additional, &err):
__pyx_t_1 = (!line_sender_buffer_reserve(__pyx_v_buffer, __pyx_v_additional, (&__pyx_v_err)));
if (unlikely(__pyx_t_1)) {
/* … */
}
+0460: raise 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(0, 460, __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(0, 460, __pyx_L1_error)
0461:
0462:
+0463: cdef object _utf8_decode_error(
static PyObject *__pyx_f_7questdb_7_client__utf8_decode_error(PyObject *__pyx_v_string, uint32_t __pyx_v_bad_codepoint) {
PyObject *__pyx_v_s = 0;
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_8);
__Pyx_AddTraceback("questdb._client._utf8_decode_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_s);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0464: PyObject* string, uint32_t bad_codepoint):
+0465: cdef str s = <str><object>string
__pyx_t_1 = ((PyObject *)__pyx_v_string);
__Pyx_INCREF(__pyx_t_1);
__pyx_v_s = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
+0466: return QuestDBError(
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 466, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3);
+0467: QuestDBErrorCode.InvalidUtf8,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 467, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_InvalidUtf8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 467, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0468: f'Invalid codepoint 0x{bad_codepoint:x} in string {s!r}: ' +
__pyx_t_4 = __Pyx_PyUnicode_From_uint32_t(__pyx_v_bad_codepoint, 0, ' ', 'x'); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_s), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_codepoint_0x; __pyx_t_7[1] = __pyx_t_4; __pyx_t_7[2] = __pyx_mstate_global->__pyx_kp_u_in_string; __pyx_t_7[3] = __pyx_t_6; __pyx_t_7[4] = __pyx_mstate_global->__pyx_kp_u_Cannot_be_encoded_as_UTF_8; __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_7, 5, 20 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 29, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_9 = 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_9 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_5, __pyx_t_8}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__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_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 466, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
0469: 'Cannot be encoded as UTF-8.')
0470:
0471:
+0472: cdef str _fqn(type obj):
static PyObject *__pyx_f_7questdb_7_client__fqn(PyTypeObject *__pyx_v_obj) {
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._fqn", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0473: if obj.__module__ == 'builtins':
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_obj), __pyx_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_builtins, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 473, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+0474: return obj.__qualname__
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_obj), __pyx_mstate_global->__pyx_n_u_qualname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 474, __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(0, 474, __pyx_L1_error) __pyx_r = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0;
0475: else:
+0476: return f'{obj.__module__}.{obj.__qualname__}'
/*else*/ {
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_obj), __pyx_mstate_global->__pyx_n_u_module); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 476, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 476, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_obj), __pyx_mstate_global->__pyx_n_u_qualname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 476, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 476, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_5[0] = __pyx_t_3;
__pyx_t_5[1] = __pyx_mstate_global->__pyx_kp_u__2;
__pyx_t_5[2] = __pyx_t_4;
__pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4));
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 476, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_r = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
goto __pyx_L0;
}
0477:
0478:
+0479: cdef inline void_int _encode_utf8(
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__encode_utf8(struct qdb_pystr_buf *__pyx_v_b, PyObject *__pyx_v_string, struct line_sender_utf8 *__pyx_v_utf8_out) {
uint32_t __pyx_v_bad_codepoint;
size_t __pyx_v_count;
int __pyx_v_kind;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
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_6);
__Pyx_AddTraceback("questdb._client._encode_utf8", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0480: qdb_pystr_buf* b,
0481: PyObject* string,
0482: line_sender_utf8* utf8_out) except -1:
+0483: cdef uint32_t bad_codepoint = 0
__pyx_v_bad_codepoint = 0;
+0484: cdef size_t count = <size_t>(PyUnicode_GET_LENGTH(string))
__pyx_v_count = ((size_t)PyUnicode_GET_LENGTH(__pyx_v_string));
+0485: cdef int kind = PyUnicode_KIND(string)
__pyx_v_kind = PyUnicode_KIND(__pyx_v_string);
+0486: if kind == PyUnicode_1BYTE_KIND:
switch (__pyx_v_kind) {
case PyUnicode_1BYTE_KIND:
/* … */
break;
case PyUnicode_2BYTE_KIND:
0487: # No error handling for UCS1: All code points translate into valid UTF8.
+0488: qdb_ucs1_to_utf8(
qdb_ucs1_to_utf8(__pyx_v_b, __pyx_v_count, PyUnicode_1BYTE_DATA(__pyx_v_string), (&__pyx_v_utf8_out->len), (&__pyx_v_utf8_out->buf));
0489: b,
0490: count,
0491: PyUnicode_1BYTE_DATA(string),
0492: &utf8_out.len,
0493: &utf8_out.buf)
+0494: elif kind == PyUnicode_2BYTE_KIND:
break;
case PyUnicode_4BYTE_KIND:
+0495: if not qdb_ucs2_to_utf8(
__pyx_t_1 = (!qdb_ucs2_to_utf8(__pyx_v_b, __pyx_v_count, PyUnicode_2BYTE_DATA(__pyx_v_string), (&__pyx_v_utf8_out->len), (&__pyx_v_utf8_out->buf), (&__pyx_v_bad_codepoint)));
if (unlikely(__pyx_t_1)) {
/* … */
}
0496: b,
0497: count,
0498: PyUnicode_2BYTE_DATA(string),
0499: &utf8_out.len,
0500: &utf8_out.buf,
0501: &bad_codepoint):
+0502: raise _utf8_decode_error(string, bad_codepoint)
__pyx_t_2 = __pyx_f_7questdb_7_client__utf8_decode_error(__pyx_v_string, __pyx_v_bad_codepoint); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 502, __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(0, 502, __pyx_L1_error)
+0503: elif kind == PyUnicode_4BYTE_KIND:
break;
default:
+0504: if not qdb_ucs4_to_utf8(
__pyx_t_1 = (!qdb_ucs4_to_utf8(__pyx_v_b, __pyx_v_count, ((uint32_t const *)PyUnicode_4BYTE_DATA(__pyx_v_string)), (&__pyx_v_utf8_out->len), (&__pyx_v_utf8_out->buf), (&__pyx_v_bad_codepoint)));
if (unlikely(__pyx_t_1)) {
/* … */
}
0505: b,
0506: count,
0507:
0508: # This cast is required and is possibly a Cython compiler bug.
0509: # It doesn't recognize that `const Py_UCS4*`
0510: # is the same as `const uint32_t*`.
0511: <const uint32_t*>PyUnicode_4BYTE_DATA(string),
0512:
0513: &utf8_out.len,
0514: &utf8_out.buf,
0515: &bad_codepoint):
+0516: raise _utf8_decode_error(string, bad_codepoint)
__pyx_t_2 = __pyx_f_7questdb_7_client__utf8_decode_error(__pyx_v_string, __pyx_v_bad_codepoint); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 516, __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(0, 516, __pyx_L1_error)
0517: else:
+0518: raise ValueError(f'Unknown UCS kind: {kind}.')
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyUnicode_From_int(__pyx_v_kind, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 518, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5[0] = __pyx_mstate_global->__pyx_kp_u_Unknown_UCS_kind;
__pyx_t_5[1] = __pyx_t_4;
__pyx_t_5[2] = __pyx_mstate_global->__pyx_kp_u__2;
__pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 1, 127);
if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 518, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_6};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __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_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 518, __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(0, 518, __pyx_L1_error)
break;
}
0519:
0520:
+0521: cdef void_int str_to_utf8(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_str_to_utf8(struct qdb_pystr_buf *__pyx_v_b, PyObject *__pyx_v_string, struct line_sender_utf8 *__pyx_v_utf8_out) {
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
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_AddTraceback("questdb._client.str_to_utf8", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0522: qdb_pystr_buf* b,
0523: PyObject* string,
0524: line_sender_utf8* utf8_out) except -1:
0525: """
0526: Convert a Python string to a UTF-8 borrowed buffer.
0527: This is done without allocating new Python `bytes` objects.
0528: In case the string is an ASCII string, it's also generally zero-copy.
0529: The `utf8_out` param will point to (borrow from) either the ASCII buffer
0530: inside the original Python object or a part of memory allocated inside the
0531: `b` buffer.
0532:
0533: If you need to use `utf8_out` without the GIL, call `qdb_pystr_buf_copy`.
0534: """
+0535: if not PyUnicode_CheckExact(string):
__pyx_t_1 = (!PyUnicode_CheckExact(__pyx_v_string));
if (unlikely(__pyx_t_1)) {
/* … */
}
+0536: raise TypeError(
__pyx_t_3 = NULL;
+0537: 'Expected a str object, not an object of type ' +
__pyx_t_5 = __Pyx_PyUnicode_ConcatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_str_object_not_an_obj, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 537, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__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_2)) __PYX_ERR(0, 536, __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(0, 536, __pyx_L1_error)
+0538: _fqn(type(<str><object>string)))
__pyx_t_4 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_string))))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4);
+0539: PyUnicode_READY(string)
__pyx_t_7 = PyUnicode_READY(__pyx_v_string); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 539, __pyx_L1_error)
0540:
0541: # We optimize the common case of ASCII strings.
0542: # This avoid memory allocations and copies altogether.
0543: # We get away with this because ASCII is a subset of UTF-8.
+0544: if PyUnicode_IS_COMPACT_ASCII(string):
__pyx_t_1 = PyUnicode_IS_COMPACT_ASCII(__pyx_v_string);
if (__pyx_t_1) {
/* … */
}
+0545: utf8_out.len = <size_t>(PyUnicode_GET_LENGTH(string))
__pyx_v_utf8_out->len = ((size_t)PyUnicode_GET_LENGTH(__pyx_v_string));
+0546: utf8_out.buf = <const char*>(PyUnicode_1BYTE_DATA(string))
__pyx_v_utf8_out->buf = ((char const *)PyUnicode_1BYTE_DATA(__pyx_v_string));
+0547: return 0
__pyx_r = 0;
goto __pyx_L0;
0548:
+0549: _encode_utf8(b, string, utf8_out)
__pyx_t_8 = __pyx_f_7questdb_7_client__encode_utf8(__pyx_v_b, __pyx_v_string, __pyx_v_utf8_out); if (unlikely(__pyx_t_8 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 549, __pyx_L1_error)
0550:
0551:
0552:
+0553: cdef void_int str_to_utf8_copy(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_str_to_utf8_copy(struct qdb_pystr_buf *__pyx_v_b, PyObject *__pyx_v_string, struct line_sender_utf8 *__pyx_v_utf8_out) {
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
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_AddTraceback("questdb._client.str_to_utf8_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0554: qdb_pystr_buf* b,
0555: PyObject* string,
0556: line_sender_utf8* utf8_out) except -1:
0557: """
0558: Variant of `str_to_utf8` that always copies the string to a new buffer.
0559:
0560: The resulting `utf8_out` can be used when not holding the GIL:
0561: The pointed-to memory is owned by `b`.
0562: """
+0563: if not PyUnicode_CheckExact(string):
__pyx_t_1 = (!PyUnicode_CheckExact(__pyx_v_string));
if (unlikely(__pyx_t_1)) {
/* … */
}
+0564: raise TypeError(
__pyx_t_3 = NULL;
+0565: 'Expected a str object, not an object of type ' +
__pyx_t_5 = __Pyx_PyUnicode_ConcatSafe(__pyx_mstate_global->__pyx_kp_u_Expected_a_str_object_not_an_obj, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 565, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__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_2)) __PYX_ERR(0, 564, __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(0, 564, __pyx_L1_error)
+0566: _fqn(type(<str><object>string)))
__pyx_t_4 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_string))))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 566, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4);
0567:
+0568: PyUnicode_READY(string)
__pyx_t_7 = PyUnicode_READY(__pyx_v_string); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 568, __pyx_L1_error)
+0569: _encode_utf8(b, string, utf8_out)
__pyx_t_8 = __pyx_f_7questdb_7_client__encode_utf8(__pyx_v_b, __pyx_v_string, __pyx_v_utf8_out); if (unlikely(__pyx_t_8 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 569, __pyx_L1_error)
0570:
0571:
+0572: cdef void_int str_to_table_name(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_str_to_table_name(struct qdb_pystr_buf *__pyx_v_b, PyObject *__pyx_v_string, struct line_sender_table_name *__pyx_v_name_out) {
struct line_sender_error *__pyx_v_err;
struct line_sender_utf8 __pyx_v_utf8;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client.str_to_table_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0573: qdb_pystr_buf* b,
0574: PyObject* string,
0575: line_sender_table_name* name_out) except -1:
0576: """
0577: Python string to borrowed C table name.
0578: Also see `str_to_utf8`.
0579: """
+0580: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
0581: cdef line_sender_utf8 utf8
+0582: str_to_utf8(b, string, &utf8)
__pyx_t_1 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, __pyx_v_string, (&__pyx_v_utf8)); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 582, __pyx_L1_error)
+0583: if not line_sender_table_name_init(name_out, utf8.len, utf8.buf, &err):
__pyx_t_2 = (!line_sender_table_name_init(__pyx_v_name_out, __pyx_v_utf8.len, __pyx_v_utf8.buf, (&__pyx_v_err)));
if (unlikely(__pyx_t_2)) {
/* … */
}
+0584: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 584, __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(0, 584, __pyx_L1_error)
0585:
0586:
+0587: cdef void_int str_to_table_name_copy(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_str_to_table_name_copy(struct qdb_pystr_buf *__pyx_v_b, PyObject *__pyx_v_string, struct line_sender_table_name *__pyx_v_name_out) {
struct line_sender_error *__pyx_v_err;
struct line_sender_utf8 __pyx_v_utf8;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client.str_to_table_name_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0588: qdb_pystr_buf* b,
0589: PyObject* string,
0590: line_sender_table_name* name_out) except -1:
0591: """
0592: Python string to copied C table name.
0593: Also see `str_to_utf8_copy`.
0594: """
+0595: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
0596: cdef line_sender_utf8 utf8
+0597: str_to_utf8_copy(b, string, &utf8)
__pyx_t_1 = __pyx_f_7questdb_7_client_str_to_utf8_copy(__pyx_v_b, __pyx_v_string, (&__pyx_v_utf8)); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 597, __pyx_L1_error)
+0598: if not line_sender_table_name_init(name_out, utf8.len, utf8.buf, &err):
__pyx_t_2 = (!line_sender_table_name_init(__pyx_v_name_out, __pyx_v_utf8.len, __pyx_v_utf8.buf, (&__pyx_v_err)));
if (unlikely(__pyx_t_2)) {
/* … */
}
+0599: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 599, __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(0, 599, __pyx_L1_error)
0600:
0601:
+0602: cdef void_int str_to_column_name(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_str_to_column_name(struct qdb_pystr_buf *__pyx_v_b, PyObject *__pyx_v_string, struct line_sender_column_name *__pyx_v_name_out) {
struct line_sender_error *__pyx_v_err;
struct line_sender_utf8 __pyx_v_utf8;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client.str_to_column_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0603: qdb_pystr_buf* b,
0604: str string,
0605: line_sender_column_name* name_out) except -1:
0606: """
0607: Python string to borrowed C column name.
0608: Also see `str_to_utf8`.
0609: """
+0610: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
0611: cdef line_sender_utf8 utf8
+0612: str_to_utf8(b, <PyObject*>string, &utf8)
__pyx_t_1 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, ((PyObject *)__pyx_v_string), (&__pyx_v_utf8)); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 612, __pyx_L1_error)
+0613: if not line_sender_column_name_init(name_out, utf8.len, utf8.buf, &err):
__pyx_t_2 = (!line_sender_column_name_init(__pyx_v_name_out, __pyx_v_utf8.len, __pyx_v_utf8.buf, (&__pyx_v_err)));
if (unlikely(__pyx_t_2)) {
/* … */
}
+0614: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 614, __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(0, 614, __pyx_L1_error)
0615:
0616:
+0617: cdef void_int str_to_column_name_copy(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_str_to_column_name_copy(struct qdb_pystr_buf *__pyx_v_b, PyObject *__pyx_v_string, struct line_sender_column_name *__pyx_v_name_out) {
struct line_sender_error *__pyx_v_err;
struct line_sender_utf8 __pyx_v_utf8;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client.str_to_column_name_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0618: qdb_pystr_buf* b,
0619: str string,
0620: line_sender_column_name* name_out) except -1:
0621: """
0622: Python string to copied C column name.
0623: Also see `str_to_utf8_copy`.
0624: """
+0625: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
0626: cdef line_sender_utf8 utf8
+0627: str_to_utf8_copy(b, <PyObject*>string, &utf8)
__pyx_t_1 = __pyx_f_7questdb_7_client_str_to_utf8_copy(__pyx_v_b, ((PyObject *)__pyx_v_string), (&__pyx_v_utf8)); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 627, __pyx_L1_error)
+0628: if not line_sender_column_name_init(name_out, utf8.len, utf8.buf, &err):
__pyx_t_2 = (!line_sender_column_name_init(__pyx_v_name_out, __pyx_v_utf8.len, __pyx_v_utf8.buf, (&__pyx_v_err)));
if (unlikely(__pyx_t_2)) {
/* … */
}
+0629: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 629, __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(0, 629, __pyx_L1_error)
0630:
0631:
+0632: cdef object _UTC_EPOCH = datetime.datetime(
__Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; /* … */ __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_mstate_global->__pyx_tuple[1], __pyx_t_16); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_XGOTREF(__pyx_v_7questdb_7_client__UTC_EPOCH); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__UTC_EPOCH, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_13); __pyx_t_13 = 0;
+0633: 1970, 1, 1, tzinfo=datetime.timezone.utc)
__pyx_t_16 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (PyDict_SetItem(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13) < (0)) __PYX_ERR(0, 633, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
0634:
0635:
+0636: _NAIVE_DATETIME_WARNED = False
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_NAIVE_DATETIME_WARNED, Py_False) < (0)) __PYX_ERR(0, 636, __pyx_L1_error)
0637:
0638:
+0639: cdef object _as_utc_aware(cp_datetime dt):
static PyObject *__pyx_f_7questdb_7_client__as_utc_aware(PyDateTime_DateTime *__pyx_v_dt) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client._as_utc_aware", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0640: global _NAIVE_DATETIME_WARNED
+0641: if dt.tzinfo is not None:
__pyx_t_1 = __pyx_f_7cpython_8datetime_8datetime_6tzinfo_tzinfo(__pyx_v_dt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 641, __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) { /* … */ }
+0642: return dt
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_dt); __pyx_r = ((PyObject *)__pyx_v_dt); goto __pyx_L0;
+0643: if dt != dt:
__pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_dt), ((PyObject *)__pyx_v_dt), Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 643, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 643, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+0644: raise ValueError('NaT is not a valid timestamp.')
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_NaT_is_not_a_valid_timestamp};
__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(0, 644, __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(0, 644, __pyx_L1_error)
+0645: if not _NAIVE_DATETIME_WARNED:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NAIVE_DATETIME_WARNED); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 645, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 645, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = (!__pyx_t_2); if (__pyx_t_5) { /* … */ }
+0646: _NAIVE_DATETIME_WARNED = True
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_NAIVE_DATETIME_WARNED, Py_True) < (0)) __PYX_ERR(0, 646, __pyx_L1_error)
0647: # cdef frames and this module's def entry points are invisible to
0648: # the warnings stack walker, so level 1 is already the user's call.
+0649: warnings.warn(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 649, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 649, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
0650: 'Naive datetime interpreted as UTC (questdb 4.x used local '
0651: 'time). If you meant "now", use TimestampNanos.now() or '
0652: 'datetime.now(timezone.utc); pass timezone-aware datetimes '
0653: 'to silence this warning.',
+0654: UserWarning,
__pyx_t_4 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
__pyx_t_4 = 0;
}
#endif
{
PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Naive_datetime_interpreted_as_UT, ((PyObject *)(((PyTypeObject*)PyExc_UserWarning)))};
__pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 649, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_stacklevel, __pyx_mstate_global->__pyx_int_1, __pyx_t_6, __pyx_callargs+3, 0) < (0)) __PYX_ERR(0, 649, __pyx_L1_error)
__pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 649, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
0655: stacklevel=1)
+0656: return dt.replace(tzinfo=datetime.timezone.utc)
__Pyx_XDECREF(__pyx_r); __pyx_t_7 = ((PyObject *)__pyx_v_dt); __Pyx_INCREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = 0; { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_7, NULL}; __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_6, __pyx_t_3, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 656, __pyx_L1_error) __pyx_t_1 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_replace, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
0657:
0658:
+0659: cdef int64_t datetime_to_micros(cp_datetime dt):
static int64_t __pyx_f_7questdb_7_client_datetime_to_micros(PyDateTime_DateTime *__pyx_v_dt) {
PyObject *__pyx_v_aware = 0;
PyObject *__pyx_v_delta = 0;
int64_t __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.datetime_to_micros", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1L;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_aware);
__Pyx_XDECREF(__pyx_v_delta);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0660: """
0661: Convert a :class:`datetime.datetime` to microseconds since the epoch.
0662:
0663: Naive datetimes are interpreted as UTC.
0664: """
+0665: cdef object aware = _as_utc_aware(dt)
__pyx_t_1 = __pyx_f_7questdb_7_client__as_utc_aware(__pyx_v_dt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_aware = __pyx_t_1; __pyx_t_1 = 0;
+0666: cdef object delta = aware - _UTC_EPOCH
__pyx_t_1 = PyNumber_Subtract(__pyx_v_aware, __pyx_v_7questdb_7_client__UTC_EPOCH); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_delta = __pyx_t_1; __pyx_t_1 = 0;
0667: return (
+0668: <int64_t>delta.days * <int64_t>86_400_000_000 +
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_delta, __pyx_mstate_global->__pyx_n_u_days); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 668, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyLong_As_int64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 668, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0669: <int64_t>delta.seconds * <int64_t>1_000_000 +
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_delta, __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyLong_As_int64_t(__pyx_t_1); if (unlikely((__pyx_t_3 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 669, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_r = (((((int64_t)__pyx_t_2) * ((int64_t)0x141DD76000)) + (((int64_t)__pyx_t_3) * ((int64_t)0xF4240))) + ((int64_t)__pyx_t_4)); goto __pyx_L0;
+0670: <int64_t>delta.microseconds)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_delta, __pyx_mstate_global->__pyx_n_u_microseconds); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyLong_As_int64_t(__pyx_t_1); if (unlikely((__pyx_t_4 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 670, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
0671:
0672:
+0673: cdef int64_t datetime_to_nanos(cp_datetime dt):
static int64_t __pyx_f_7questdb_7_client_datetime_to_nanos(PyDateTime_DateTime *__pyx_v_dt) {
int64_t __pyx_v_micros;
int64_t __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("questdb._client.datetime_to_nanos", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1L;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0674: """
0675: Convert a `datetime.datetime` to nanoseconds since the epoch.
0676: """
+0677: cdef int64_t micros = datetime_to_micros(dt)
__pyx_t_1 = __pyx_f_7questdb_7_client_datetime_to_micros(__pyx_v_dt); if (unlikely(__pyx_t_1 == ((int64_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 677, __pyx_L1_error) __pyx_v_micros = __pyx_t_1;
0678: # INT64_MAX // 1000 == 9_223_372_036_854_775 is the largest microsecond
0679: # value whose nanosecond product still fits in an int64.
+0680: if (micros > <int64_t>9_223_372_036_854_775 or
__pyx_t_3 = (__pyx_v_micros > ((int64_t)0x20C49BA5E353F7));
if (!__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
/* … */
if (unlikely(__pyx_t_2)) {
/* … */
}
+0681: micros < <int64_t>-9_223_372_036_854_775):
__pyx_t_3 = (__pyx_v_micros < ((int64_t)-9223372036854775L)); __pyx_t_2 = __pyx_t_3; __pyx_L4_bool_binop_done:;
+0682: raise ValueError(
__pyx_t_5 = NULL;
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_datetime_is_out_of_range_for_a_n};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 682, __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(0, 682, __pyx_L1_error)
0683: 'datetime is out of range for a nanosecond timestamp: '
0684: 'must be between 1677-09-21T00:12:43.145225Z and '
0685: '2262-04-11T23:47:16.854775Z.')
+0686: return micros * 1000
__pyx_r = (__pyx_v_micros * 0x3E8); goto __pyx_L0;
0687:
0688:
+0689: class ServerTimestampType:
__pyx_t_13 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ServerTimestampType, __pyx_mstate_global->__pyx_n_u_ServerTimestampType, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_A_placeholder_value_to_indicate); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_16 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ServerTimestampType, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_13, NULL, 0, 0); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 689, __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_ServerTimestampType, __pyx_t_16) < (0)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
0690: """
0691: A placeholder value to indicate that the data should be inserted
0692: using a server-generated-timestamp.
0693:
0694: Don't instantiate this class directly, use the singleton
0695: :data:`ServerTimestamp` instead.
0696:
0697: This feature is mostly provided for legacy compatibility.
0698: We recommend always specifying an explicit timestamp.
0699:
0700: Using ``ServerTimestamp`` will prevent QuestDB's deduplication
0701: feature from working as it would generate unique rows on resubmission.
0702: """
0703: pass
0704:
0705:
0706: #: Singleton instance used to request server-side timestamping.
0707: #: See :class:`ServerTimestampType` for more details.
+0708: ServerTimestamp = ServerTimestampType()
__pyx_t_16 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_ServerTimestampType); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_16, NULL}; __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_17, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); } if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ServerTimestamp, __pyx_t_13) < (0)) __PYX_ERR(0, 708, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
0709:
0710:
+0711: cdef class TimestampMicros:
struct __pyx_obj_7questdb_7_client_TimestampMicros {
PyObject_HEAD
int64_t _value;
};
0712: """
0713: A timestamp in microseconds since the UNIX epoch (UTC).
0714:
0715: You may construct a ``TimestampMicros`` from an integer or a
0716: ``datetime.datetime``, or simply call the :func:`TimestampMicros.now`
0717: method.
0718:
0719: .. code-block:: python
0720:
0721: # Recommended way to get the current timestamp.
0722: TimestampMicros.now()
0723:
0724: # The above is equivalent to:
0725: TimestampMicros(time.time_ns() // 1000)
0726:
0727: # You can provide a numeric timestamp too. It can't be negative.
0728: TimestampMicros(1657888365426838)
0729:
0730: ``TimestampMicros`` can also be constructed from a ``datetime.datetime``
0731: object.
0732:
0733: .. code-block:: python
0734:
0735: TimestampMicros.from_datetime(
0736: datetime.datetime.now(tz=datetime.timezone.utc))
0737:
0738: We recommend that when using ``datetime`` objects, you explicitly pass in
0739: the timezone to use. A ``datetime`` object without an associated timezone
0740: is interpreted as UTC (a ``UserWarning`` is emitted once per process).
0741: Note that ``datetime.datetime.now()`` is your local wall clock: use
0742: ``datetime.datetime.now(datetime.timezone.utc)`` or ``now()`` on this
0743: class for the current instant.
0744: """
0745: cdef int64_t _value
0746:
+0747: def __cinit__(self, value):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_15TimestampMicros_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7questdb_7_client_15TimestampMicros_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_value = 0;
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);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,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(0, 747, __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(0, 747, __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, "__cinit__", 0) < (0)) __PYX_ERR(0, 747, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, i); __PYX_ERR(0, 747, __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(0, 747, __pyx_L3_error)
}
__pyx_v_value = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 747, __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.TimestampMicros.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_15TimestampMicros___cinit__(((struct __pyx_obj_7questdb_7_client_TimestampMicros *)__pyx_v_self), __pyx_v_value);
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_15TimestampMicros___cinit__(struct __pyx_obj_7questdb_7_client_TimestampMicros *__pyx_v_self, 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_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client.TimestampMicros.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0748: if value < 0:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_value, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 748, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 748, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+0749: raise ValueError('value must be a non-negative integer.')
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_value_must_be_a_non_negative_int};
__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(0, 749, __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(0, 749, __pyx_L1_error)
+0750: self._value = value
__pyx_t_5 = __Pyx_PyLong_As_int64_t(__pyx_v_value); if (unlikely((__pyx_t_5 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 750, __pyx_L1_error) __pyx_v_self->_value = __pyx_t_5;
0751:
+0752: @classmethod
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_15TimestampMicros_3from_datetime(PyObject *__pyx_v_cls, #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_15TimestampMicros_2from_datetime, "\n Construct a ``TimestampMicros`` from a :class:`datetime.datetime` object.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_15TimestampMicros_3from_datetime = {"from_datetime", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_15TimestampMicros_3from_datetime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_15TimestampMicros_2from_datetime}; static PyObject *__pyx_pw_7questdb_7_client_15TimestampMicros_3from_datetime(PyObject *__pyx_v_cls, #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_dt = 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("from_datetime (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_dt,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(0, 752, __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(0, 752, __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, "from_datetime", 0) < (0)) __PYX_ERR(0, 752, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("from_datetime", 1, 1, 1, i); __PYX_ERR(0, 752, __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(0, 752, __pyx_L3_error) } __pyx_v_dt = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("from_datetime", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 752, __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.TimestampMicros.from_datetime", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_15TimestampMicros_2from_datetime(((PyTypeObject*)__pyx_v_cls), __pyx_v_dt); 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_15TimestampMicros_2from_datetime(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_dt) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("questdb._client.TimestampMicros.from_datetime", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_dt, __pyx_mstate_global->__pyx_kp_u_datetime_datetime) < (0)) __PYX_ERR(0, 752, __pyx_L1_error) __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_15TimestampMicros_3from_datetime, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_TimestampMicros_from_datetime, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[47])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_17, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampMicros, __pyx_mstate_global->__pyx_n_u_from_datetime, __pyx_t_17) < (0)) __PYX_ERR(0, 752, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_GetNameInClass(__pyx_t_17, (PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampMicros, __pyx_mstate_global->__pyx_n_u_from_datetime); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_13 = __Pyx_Method_ClassMethod(__pyx_t_17); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampMicros, __pyx_mstate_global->__pyx_n_u_from_datetime, __pyx_t_13) < (0)) __PYX_ERR(0, 752, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
0753: def from_datetime(cls, dt: datetime.datetime):
0754: """
0755: Construct a ``TimestampMicros`` from a :class:`datetime.datetime` object.
0756: """
+0757: if not isinstance(dt, cp_datetime):
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_dt, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime);
__pyx_t_2 = (!__pyx_t_1);
if (unlikely(__pyx_t_2)) {
/* … */
}
+0758: raise TypeError('dt must be a datetime object.')
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_dt_must_be_a_datetime_object};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 758, __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(0, 758, __pyx_L1_error)
+0759: return cls(datetime_to_micros(dt))
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = NULL; if (!(likely(((__pyx_v_dt) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dt, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime))))) __PYX_ERR(0, 759, __pyx_L1_error) __pyx_t_6 = __pyx_f_7questdb_7_client_datetime_to_micros(((PyDateTime_DateTime *)__pyx_v_dt)); if (unlikely(__pyx_t_6 == ((int64_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 759, __pyx_L1_error) __pyx_t_7 = __Pyx_PyLong_From_int64_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_7}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_v_cls, __pyx_callargs+__pyx_t_5, (2-__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(0, 759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
0760:
+0761: @classmethod
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_15TimestampMicros_5now(PyObject *__pyx_v_cls, #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_15TimestampMicros_4now, "\n Construct a ``TimestampMicros`` from the current time as UTC.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_15TimestampMicros_5now = {"now", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_15TimestampMicros_5now, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_15TimestampMicros_4now}; static PyObject *__pyx_pw_7questdb_7_client_15TimestampMicros_5now(PyObject *__pyx_v_cls, #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("now (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("now", 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("now", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_15TimestampMicros_4now(((PyTypeObject*)__pyx_v_cls)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_15TimestampMicros_4now(PyTypeObject *__pyx_v_cls) { int64_t __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_3); __Pyx_AddTraceback("questdb._client.TimestampMicros.now", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_15TimestampMicros_5now, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_TimestampMicros_now, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[48])); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampMicros, __pyx_mstate_global->__pyx_n_u_now, __pyx_t_13) < (0)) __PYX_ERR(0, 761, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_GetNameInClass(__pyx_t_13, (PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampMicros, __pyx_mstate_global->__pyx_n_u_now); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_17 = __Pyx_Method_ClassMethod(__pyx_t_13); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampMicros, __pyx_mstate_global->__pyx_n_u_now, __pyx_t_17) < (0)) __PYX_ERR(0, 761, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
0762: def now(cls):
0763: """
0764: Construct a ``TimestampMicros`` from the current time as UTC.
0765: """
+0766: cdef int64_t value = line_sender_now_micros()
__pyx_v_value = line_sender_now_micros();
+0767: return cls(value)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = NULL; __pyx_t_3 = __Pyx_PyLong_From_int64_t(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_v_cls, __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_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
0768:
+0769: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_15TimestampMicros_5value_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_15TimestampMicros_5value_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_15TimestampMicros_5value___get__(((struct __pyx_obj_7questdb_7_client_TimestampMicros *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_15TimestampMicros_5value___get__(struct __pyx_obj_7questdb_7_client_TimestampMicros *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.TimestampMicros.value.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0770: def value(self) -> int:
0771: """Number of microseconds (Unix epoch timestamp, UTC)."""
+0772: return self._value
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyLong_From_int64_t(__pyx_v_self->_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
0773:
+0774: def __repr__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_15TimestampMicros_7__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_15TimestampMicros_7__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_15TimestampMicros_6__repr__(((struct __pyx_obj_7questdb_7_client_TimestampMicros *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_15TimestampMicros_6__repr__(struct __pyx_obj_7questdb_7_client_TimestampMicros *__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.TimestampMicros.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0775: return f'TimestampMicros({self._value})'
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyUnicode_From_int64_t(__pyx_v_self->_value, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2[0] = __pyx_mstate_global->__pyx_kp_u_TimestampMicros; __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, 16 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 1, 127); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 775, __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;
0776:
0777:
+0778: cdef class TimestampNanos:
struct __pyx_obj_7questdb_7_client_TimestampNanos {
PyObject_HEAD
int64_t _value;
};
0779: """
0780: A timestamp in nanoseconds since the UNIX epoch (UTC).
0781:
0782: You may construct a ``TimestampNanos`` from an integer or a
0783: ``datetime.datetime``, or simply call the :func:`TimestampNanos.now`
0784: method.
0785:
0786: .. code-block:: python
0787:
0788: # Recommended way to get the current timestamp.
0789: TimestampNanos.now()
0790:
0791: # The above is equivalent to:
0792: TimestampNanos(time.time_ns())
0793:
0794: # You can provide a numeric timestamp too. It can't be negative.
0795: TimestampNanos(1657888365426838016)
0796:
0797: ``TimestampNanos`` can also be constructed from a ``datetime`` object.
0798:
0799: .. code-block:: python
0800:
0801: TimestampNanos.from_datetime(
0802: datetime.datetime.now(tz=datetime.timezone.utc))
0803:
0804: We recommend that when using ``datetime`` objects, you explicitly pass in
0805: the timezone to use. A ``datetime`` object without an associated timezone
0806: is interpreted as UTC (a ``UserWarning`` is emitted once per process).
0807: Note that ``datetime.datetime.now()`` is your local wall clock: use
0808: ``datetime.datetime.now(datetime.timezone.utc)`` or ``now()`` on this
0809: class for the current instant.
0810: """
0811: cdef int64_t _value
0812:
+0813: def __cinit__(self, value):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_14TimestampNanos_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7questdb_7_client_14TimestampNanos_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_value = 0;
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);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_value,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(0, 813, __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(0, 813, __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, "__cinit__", 0) < (0)) __PYX_ERR(0, 813, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, i); __PYX_ERR(0, 813, __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(0, 813, __pyx_L3_error)
}
__pyx_v_value = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 813, __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.TimestampNanos.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_14TimestampNanos___cinit__(((struct __pyx_obj_7questdb_7_client_TimestampNanos *)__pyx_v_self), __pyx_v_value);
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_14TimestampNanos___cinit__(struct __pyx_obj_7questdb_7_client_TimestampNanos *__pyx_v_self, 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_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client.TimestampNanos.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0814: if value < 0:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_value, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 814, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 814, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+0815: raise ValueError('value must be a non-negative integer.')
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_value_must_be_a_non_negative_int};
__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(0, 815, __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(0, 815, __pyx_L1_error)
+0816: self._value = value
__pyx_t_5 = __Pyx_PyLong_As_int64_t(__pyx_v_value); if (unlikely((__pyx_t_5 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 816, __pyx_L1_error) __pyx_v_self->_value = __pyx_t_5;
0817:
+0818: @classmethod
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_14TimestampNanos_3from_datetime(PyObject *__pyx_v_cls, #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_14TimestampNanos_2from_datetime, "\n Construct a ``TimestampNanos`` from a ``datetime.datetime`` object.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_14TimestampNanos_3from_datetime = {"from_datetime", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_14TimestampNanos_3from_datetime, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_14TimestampNanos_2from_datetime}; static PyObject *__pyx_pw_7questdb_7_client_14TimestampNanos_3from_datetime(PyObject *__pyx_v_cls, #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_dt = 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("from_datetime (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_dt,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(0, 818, __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(0, 818, __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, "from_datetime", 0) < (0)) __PYX_ERR(0, 818, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("from_datetime", 1, 1, 1, i); __PYX_ERR(0, 818, __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(0, 818, __pyx_L3_error) } __pyx_v_dt = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("from_datetime", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 818, __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.TimestampNanos.from_datetime", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_14TimestampNanos_2from_datetime(((PyTypeObject*)__pyx_v_cls), __pyx_v_dt); 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_14TimestampNanos_2from_datetime(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_dt) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("questdb._client.TimestampNanos.from_datetime", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_dt, __pyx_mstate_global->__pyx_kp_u_datetime_datetime) < (0)) __PYX_ERR(0, 818, __pyx_L1_error) __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_14TimestampNanos_3from_datetime, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_TimestampNanos_from_datetime, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[51])); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_17); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampNanos, __pyx_mstate_global->__pyx_n_u_from_datetime, __pyx_t_13) < (0)) __PYX_ERR(0, 818, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_GetNameInClass(__pyx_t_13, (PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampNanos, __pyx_mstate_global->__pyx_n_u_from_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_17 = __Pyx_Method_ClassMethod(__pyx_t_13); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampNanos, __pyx_mstate_global->__pyx_n_u_from_datetime, __pyx_t_17) < (0)) __PYX_ERR(0, 818, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
0819: def from_datetime(cls, dt: datetime.datetime):
0820: """
0821: Construct a ``TimestampNanos`` from a ``datetime.datetime`` object.
0822: """
+0823: if not isinstance(dt, cp_datetime):
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_dt, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime);
__pyx_t_2 = (!__pyx_t_1);
if (unlikely(__pyx_t_2)) {
/* … */
}
+0824: raise TypeError('dt must be a datetime object.')
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_dt_must_be_a_datetime_object};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 824, __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(0, 824, __pyx_L1_error)
+0825: return cls(datetime_to_nanos(dt))
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = NULL; if (!(likely(((__pyx_v_dt) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dt, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime))))) __PYX_ERR(0, 825, __pyx_L1_error) __pyx_t_6 = __pyx_f_7questdb_7_client_datetime_to_nanos(((PyDateTime_DateTime *)__pyx_v_dt)); if (unlikely(__pyx_t_6 == ((int64_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 825, __pyx_L1_error) __pyx_t_7 = __Pyx_PyLong_From_int64_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 825, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_7}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_v_cls, __pyx_callargs+__pyx_t_5, (2-__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(0, 825, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
0826:
+0827: @classmethod
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_14TimestampNanos_5now(PyObject *__pyx_v_cls, #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_14TimestampNanos_4now, "\n Construct a ``TimestampNanos`` from the current time as UTC.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_14TimestampNanos_5now = {"now", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_14TimestampNanos_5now, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_14TimestampNanos_4now}; static PyObject *__pyx_pw_7questdb_7_client_14TimestampNanos_5now(PyObject *__pyx_v_cls, #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("now (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("now", 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("now", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_14TimestampNanos_4now(((PyTypeObject*)__pyx_v_cls)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_14TimestampNanos_4now(PyTypeObject *__pyx_v_cls) { int64_t __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_3); __Pyx_AddTraceback("questdb._client.TimestampNanos.now", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_14TimestampNanos_5now, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_TimestampNanos_now, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[52])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampNanos, __pyx_mstate_global->__pyx_n_u_now, __pyx_t_17) < (0)) __PYX_ERR(0, 827, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_GetNameInClass(__pyx_t_17, (PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampNanos, __pyx_mstate_global->__pyx_n_u_now); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_13 = __Pyx_Method_ClassMethod(__pyx_t_17); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampNanos, __pyx_mstate_global->__pyx_n_u_now, __pyx_t_13) < (0)) __PYX_ERR(0, 827, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
0828: def now(cls):
0829: """
0830: Construct a ``TimestampNanos`` from the current time as UTC.
0831: """
+0832: cdef int64_t value = line_sender_now_nanos()
__pyx_v_value = line_sender_now_nanos();
+0833: return cls(value)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = NULL; __pyx_t_3 = __Pyx_PyLong_From_int64_t(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_v_cls, __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_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
0834:
+0835: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_14TimestampNanos_5value_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_14TimestampNanos_5value_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_14TimestampNanos_5value___get__(((struct __pyx_obj_7questdb_7_client_TimestampNanos *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_14TimestampNanos_5value___get__(struct __pyx_obj_7questdb_7_client_TimestampNanos *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.TimestampNanos.value.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0836: def value(self) -> int:
0837: """Number of nanoseconds (Unix epoch timestamp, UTC)."""
+0838: return self._value
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyLong_From_int64_t(__pyx_v_self->_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 838, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
0839:
+0840: def __repr__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_14TimestampNanos_7__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_14TimestampNanos_7__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_14TimestampNanos_6__repr__(((struct __pyx_obj_7questdb_7_client_TimestampNanos *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_14TimestampNanos_6__repr__(struct __pyx_obj_7questdb_7_client_TimestampNanos *__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.TimestampNanos.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0841: return f'TimestampNanos({self.value})'
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3[0] = __pyx_mstate_global->__pyx_kp_u_TimestampNanos; __pyx_t_3[1] = __pyx_t_2; __pyx_t_3[2] = __pyx_mstate_global->__pyx_kp_u__5; __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, 15 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
0842:
0843:
+0844: cdef class QuestDB
struct __pyx_obj_7questdb_7_client_QuestDB {
PyObject_HEAD
struct __pyx_vtabstruct_7questdb_7_client_QuestDB *__pyx_vtab;
struct questdb_db *_db;
PyObject *_conf_str;
PyObject *_state_cond;
size_t _active_uses;
int _closing;
PyObject *_connection_listener;
PyObject *_error_handler;
size_t _cb_refs_key;
struct __pyx_t_7questdb_7_client_auto_flush_mode_t _auto_flush_mode;
int _auto_flush_bytes_dynamic;
};
+0845: cdef class Sender
struct __pyx_obj_7questdb_7_client_Sender {
PyObject_HEAD
struct __pyx_vtabstruct_7questdb_7_client_Sender *__pyx_vtab;
PyObject *__weakref__;
enum line_sender_protocol _c_protocol;
struct line_sender_opts *_opts;
struct line_sender *_impl;
struct __pyx_obj_7questdb_7_client_Buffer *_buffer;
PyObject *_error_handler;
PyObject *_connection_listener;
struct __pyx_t_7questdb_7_client_auto_flush_mode_t _auto_flush_mode;
int64_t *_last_flush_ms;
size_t _init_buf_size;
int _in_txn;
int64_t _slot_id;
struct line_sender_opts *_qwp_ws_opts;
size_t _cb_refs_key;
};
+0846: cdef class PooledSender
struct __pyx_obj_7questdb_7_client_PooledSender {
PyObject_HEAD
struct __pyx_vtabstruct_7questdb_7_client_PooledSender *__pyx_vtab;
struct qwp_sender *_qwp;
struct questdb_db *_db;
struct __pyx_obj_7questdb_7_client_QuestDB *_handle;
struct __pyx_obj_7questdb_7_client_Buffer *_buffer;
PyObject *_lock;
int64_t _batch_started_ms;
};
+0847: cdef class Buffer
struct __pyx_obj_7questdb_7_client_Buffer {
PyObject_HEAD
struct __pyx_vtabstruct_7questdb_7_client_Buffer *__pyx_vtab;
struct line_sender_buffer *_impl;
struct qdb_pystr_buf *_b;
size_t _init_buf_size;
size_t _max_name_len;
int _qwp;
PyObject *_row_complete_sender;
};
0848:
0849:
+0850: cdef void_int may_flush_on_row_complete(Buffer buffer, Sender sender) except -1:
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_may_flush_on_row_complete(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_buffer, struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_sender) {
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.may_flush_on_row_complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0851: if should_auto_flush(
__pyx_t_1 = __pyx_f_7questdb_7_client_should_auto_flush((&__pyx_v_sender->_auto_flush_mode), __pyx_v_buffer->_impl, (__pyx_v_sender->_last_flush_ms[0])); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 851, __pyx_L1_error) if (__pyx_t_1) { /* … */ }
0852: &sender._auto_flush_mode,
0853: buffer._impl,
0854: sender._last_flush_ms[0]):
+0855: sender.flush(buffer)
__pyx_t_3.__pyx_n = 1;
__pyx_t_3.buffer = __pyx_v_buffer;
__pyx_t_2 = ((struct __pyx_vtabstruct_7questdb_7_client_Sender *)__pyx_v_sender->__pyx_vtab)->flush(__pyx_v_sender, 0, &__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 855, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
0856:
0857:
+0858: cdef bint _is_tcp_protocol(line_sender_protocol protocol):
static int __pyx_f_7questdb_7_client__is_tcp_protocol(enum line_sender_protocol __pyx_v_protocol) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
0859: return (
+0860: (protocol == line_sender_protocol_tcp) or
switch (__pyx_v_protocol) {
case line_sender_protocol_tcp:
case line_sender_protocol_tcps:
/* … */
__pyx_t_1 = 1;
/* … */
break;
default:
__pyx_t_1 = 0;
break;
}
__pyx_r = __pyx_t_1;
goto __pyx_L0;
0861: (protocol == line_sender_protocol_tcps))
0862:
0863:
+0864: cdef bint _is_http_protocol(line_sender_protocol protocol):
static int __pyx_f_7questdb_7_client__is_http_protocol(enum line_sender_protocol __pyx_v_protocol) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
0865: return (
+0866: (protocol == line_sender_protocol_http) or
switch (__pyx_v_protocol) {
case line_sender_protocol_http:
case line_sender_protocol_https:
/* … */
__pyx_t_1 = 1;
/* … */
break;
default:
__pyx_t_1 = 0;
break;
}
__pyx_r = __pyx_t_1;
goto __pyx_L0;
0867: (protocol == line_sender_protocol_https))
0868:
0869:
+0870: cdef bint _is_qwp_udp_protocol(line_sender_protocol protocol):
static int __pyx_f_7questdb_7_client__is_qwp_udp_protocol(enum line_sender_protocol __pyx_v_protocol) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
+0871: return protocol == line_sender_protocol_udp
__pyx_r = (__pyx_v_protocol == line_sender_protocol_udp); goto __pyx_L0;
0872:
0873:
+0874: cdef bint _is_qwp_ws_protocol(line_sender_protocol protocol):
static int __pyx_f_7questdb_7_client__is_qwp_ws_protocol(enum line_sender_protocol __pyx_v_protocol) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
0875: return (
+0876: (protocol == line_sender_protocol_ws) or
switch (__pyx_v_protocol) {
case line_sender_protocol_ws:
case line_sender_protocol_wss:
/* … */
__pyx_t_1 = 1;
/* … */
break;
default:
__pyx_t_1 = 0;
break;
}
__pyx_r = __pyx_t_1;
goto __pyx_L0;
0877: (protocol == line_sender_protocol_wss))
0878:
0879:
+0880: cdef class SenderTransaction:
struct __pyx_obj_7questdb_7_client_SenderTransaction {
PyObject_HEAD
struct __pyx_obj_7questdb_7_client_Sender *_sender;
PyObject *_table_name;
int _complete;
};
0881: """
0882: A transaction for a specific table.
0883:
0884: Transactions are only supported with ILP/HTTP.
0885:
0886: The sender API can only operate on one transaction at a time.
0887:
0888: To create a transaction:
0889:
0890: .. code-block:: python
0891:
0892: with sender.transaction('table_name') as txn:
0893: txn.row(..)
0894: txn.dataframe(..)
0895: """
0896: cdef Sender _sender
0897: cdef str _table_name
0898: cdef bint _complete
0899:
+0900: def __cinit__(self, Sender sender, str table_name):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_17SenderTransaction_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7questdb_7_client_17SenderTransaction_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_sender = 0;
PyObject *__pyx_v_table_name = 0;
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);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sender,&__pyx_mstate_global->__pyx_n_u_table_name,0};
PyObject* values[2] = {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(0, 900, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 2:
values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 900, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 900, __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, "__cinit__", 0) < (0)) __PYX_ERR(0, 900, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, i); __PYX_ERR(0, 900, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 2)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 900, __pyx_L3_error)
values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 900, __pyx_L3_error)
}
__pyx_v_sender = ((struct __pyx_obj_7questdb_7_client_Sender *)values[0]);
__pyx_v_table_name = ((PyObject*)values[1]);
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 900, __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.SenderTransaction.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sender), __pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, 1, "sender", 0))) __PYX_ERR(0, 900, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_table_name), (&PyUnicode_Type), 1, "table_name", 1))) __PYX_ERR(0, 900, __pyx_L1_error)
__pyx_r = __pyx_pf_7questdb_7_client_17SenderTransaction___cinit__(((struct __pyx_obj_7questdb_7_client_SenderTransaction *)__pyx_v_self), __pyx_v_sender, __pyx_v_table_name);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = -1;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
goto __pyx_L7_cleaned_up;
__pyx_L0:;
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_L7_cleaned_up:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_17SenderTransaction___cinit__(struct __pyx_obj_7questdb_7_client_SenderTransaction *__pyx_v_self, struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_sender, PyObject *__pyx_v_table_name) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
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.SenderTransaction.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0901: if not _is_http_protocol(sender._c_protocol):
__pyx_t_1 = __pyx_f_7questdb_7_client__is_http_protocol(__pyx_v_sender->_c_protocol); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 901, __pyx_L1_error) __pyx_t_2 = (!__pyx_t_1); if (unlikely(__pyx_t_2)) { /* … */ }
+0902: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 902, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+0903: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 903, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 903, __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_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[3] = {__pyx_t_4, __pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Transactions_are_only_supported}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__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_3)) __PYX_ERR(0, 902, __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(0, 902, __pyx_L1_error)
0904: 'Transactions are only supported for ILP/HTTP.')
+0905: self._sender = sender
__Pyx_INCREF((PyObject *)__pyx_v_sender); __Pyx_GIVEREF((PyObject *)__pyx_v_sender); __Pyx_GOTREF((PyObject *)__pyx_v_self->_sender); __Pyx_DECREF((PyObject *)__pyx_v_self->_sender); __pyx_v_self->_sender = __pyx_v_sender;
+0906: self._table_name = table_name
__Pyx_INCREF(__pyx_v_table_name); __Pyx_GIVEREF(__pyx_v_table_name); __Pyx_GOTREF(__pyx_v_self->_table_name); __Pyx_DECREF(__pyx_v_self->_table_name); __pyx_v_self->_table_name = __pyx_v_table_name;
+0907: self._complete = False
__pyx_v_self->_complete = 0;
0908:
+0909: def __enter__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_17SenderTransaction_3__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_17SenderTransaction_3__enter__ = {"__enter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_17SenderTransaction_3__enter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_17SenderTransaction_3__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_17SenderTransaction_2__enter__(((struct __pyx_obj_7questdb_7_client_SenderTransaction *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_17SenderTransaction_2__enter__(struct __pyx_obj_7questdb_7_client_SenderTransaction *__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.SenderTransaction.__enter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_17SenderTransaction_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_SenderTransaction___enter, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[55])); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 909, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13);
#endif
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_SenderTransaction, __pyx_mstate_global->__pyx_n_u_enter, __pyx_t_13) < (0)) __PYX_ERR(0, 909, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+0910: if self._sender._in_txn:
if (unlikely(__pyx_v_self->_sender->_in_txn)) {
/* … */
}
+0911: raise QuestDBError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 911, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+0912: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 912, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 912, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = 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_6 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Already_inside_a_transaction_can}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__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(0, 911, __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(0, 911, __pyx_L1_error)
0913: 'Already inside a transaction, can\'t start another.')
+0914: if self._sender._buffer is not None and len(self._sender._buffer):
__pyx_t_8 = (((PyObject *)__pyx_v_self->_sender->_buffer) != Py_None);
if (__pyx_t_8) {
} else {
__pyx_t_7 = __pyx_t_8;
goto __pyx_L5_bool_binop_done;
}
__pyx_t_1 = ((PyObject *)__pyx_v_self->_sender->_buffer);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_9 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 914, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_8 = (__pyx_t_9 != 0);
__pyx_t_7 = __pyx_t_8;
__pyx_L5_bool_binop_done:;
if (__pyx_t_7) {
/* … */
}
+0915: if self._sender._auto_flush_mode.enabled:
if (likely(__pyx_v_self->_sender->_auto_flush_mode.enabled)) {
/* … */
goto __pyx_L7;
}
+0916: self._sender.flush()
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_Sender *)__pyx_v_self->_sender->__pyx_vtab)->flush(__pyx_v_self->_sender, 0, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
0917: else:
+0918: raise QuestDBError(
/*else*/ {
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 918, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+0919: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __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[3] = {__pyx_t_3, __pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Sender_buffer_must_be_clear_when}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__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; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 918, __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(0, 918, __pyx_L1_error) } __pyx_L7:;
0920: 'Sender buffer must be clear when starting a ' +
0921: 'transaction. You must call `.flush()` before this call.')
+0922: self._sender._in_txn = True
__pyx_v_self->_sender->_in_txn = 1;
+0923: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
0924:
+0925: def __exit__(self, exc_type, _exc_value, _traceback):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_17SenderTransaction_5__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_17SenderTransaction_5__exit__ = {"__exit__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_17SenderTransaction_5__exit__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_17SenderTransaction_5__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
) {
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,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(0, 925, __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(0, 925, __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(0, 925, __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(0, 925, __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(0, 925, __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(0, 925, __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(0, 925, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 925, __pyx_L3_error)
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 925, __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(0, 925, __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.SenderTransaction.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_17SenderTransaction_4__exit__(((struct __pyx_obj_7questdb_7_client_SenderTransaction *)__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_17SenderTransaction_4__exit__(struct __pyx_obj_7questdb_7_client_SenderTransaction *__pyx_v_self, 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_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client.SenderTransaction.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_17SenderTransaction_5__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_SenderTransaction___exit, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[56])); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 925, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13);
#endif
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_SenderTransaction, __pyx_mstate_global->__pyx_n_u_exit, __pyx_t_13) < (0)) __PYX_ERR(0, 925, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+0926: if exc_type is not None:
__pyx_t_1 = (__pyx_v_exc_type != Py_None);
if (__pyx_t_1) {
/* … */
}
+0927: if not self._complete:
__pyx_t_1 = (!__pyx_v_self->_complete);
if (__pyx_t_1) {
/* … */
}
+0928: self.rollback()
__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_rollback, __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(0, 928, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0929: return False
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_False); __pyx_r = Py_False; goto __pyx_L0;
0930: else:
+0931: if not self._complete:
/*else*/ {
__pyx_t_1 = (!__pyx_v_self->_complete);
if (__pyx_t_1) {
/* … */
}
+0932: self.commit()
__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_commit, __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(0, 932, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0933: return True
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_True); __pyx_r = Py_True; goto __pyx_L0; }
0934:
+0935: def row(
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_17SenderTransaction_7row(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_17SenderTransaction_6row, "\n Write a row for the table in the transaction.\n\n The table name is taken from the transaction.\n\n **Note**: Support for NumPy arrays (``numpy.array``) requires QuestDB server version 9.0.0 or higher.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_17SenderTransaction_7row = {"row", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_17SenderTransaction_7row, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_17SenderTransaction_6row}; static PyObject *__pyx_pw_7questdb_7_client_17SenderTransaction_7row(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_symbols = 0; PyObject *__pyx_v_columns = 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("row (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_at,&__pyx_mstate_global->__pyx_n_u_symbols,&__pyx_mstate_global->__pyx_n_u_columns,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(0, 935, __pyx_L3_error) if (likely(__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, "row", 0) < (0)) __PYX_ERR(0, 935, __pyx_L3_error) /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_17SenderTransaction_6row(struct __pyx_obj_7questdb_7_client_SenderTransaction *__pyx_v_self, PyObject *__pyx_v_symbols, PyObject *__pyx_v_columns, PyObject *__pyx_v_at) { 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_AddTraceback("questdb._client.SenderTransaction.row", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 935, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 935, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_symbols, __pyx_mstate_global->__pyx_kp_u_Optional_Dict_str_Optional_str) < (0)) __PYX_ERR(0, 935, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_columns, __pyx_mstate_global->__pyx_kp_u_Optional_Dict_str_Union_None_boo) < (0)) __PYX_ERR(0, 935, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_at, __pyx_mstate_global->__pyx_kp_u_Union_ServerTimestampType_Timest) < (0)) __PYX_ERR(0, 935, __pyx_L1_error) __pyx_t_16 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_17SenderTransaction_7row, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_SenderTransaction_row, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[57])); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 935, __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_SetDefaultsKwDict(__pyx_t_16, __pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_16, __pyx_t_17); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_SenderTransaction, __pyx_mstate_global->__pyx_n_u_row, __pyx_t_16) < (0)) __PYX_ERR(0, 935, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
0936: self,
0937: *,
+0938: symbols: Optional[Dict[str, Optional[str]]]=None,
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_symbols, Py_None) < (0)) __PYX_ERR(0, 935, __pyx_L1_error)
0939: columns: Optional[Dict[
0940: str,
0941: Union[None, bool, int, float, str, TimestampMicros, TimestampNanos, datetime.datetime, numpy.ndarray, Decimal]]
+0942: ]=None,
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); for (Py_ssize_t i = 0; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseKeywordRequired("row", *(__pyx_pyargnames[i - 0])); __PYX_ERR(0, 935, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 0)) { goto __pyx_L5_argtuple_error; } else { __Pyx_RaiseKeywordRequired("row", __pyx_mstate_global->__pyx_n_u_at); __PYX_ERR(0, 935, __pyx_L3_error) } __pyx_v_at = values[0]; __pyx_v_symbols = ((PyObject*)values[1]); __pyx_v_columns = ((PyObject*)values[2]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("row", 1, 0, 0, __pyx_nargs); __PYX_ERR(0, 935, __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.SenderTransaction.row", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_symbols), (&PyDict_Type), 1, "symbols", 2))) __PYX_ERR(0, 938, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_columns), (&PyDict_Type), 1, "columns", 2))) __PYX_ERR(0, 939, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_17SenderTransaction_6row(((struct __pyx_obj_7questdb_7_client_SenderTransaction *)__pyx_v_self), __pyx_v_symbols, __pyx_v_columns, __pyx_v_at); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_columns, Py_None) < (0)) __PYX_ERR(0, 935, __pyx_L1_error)
0943: at: Union[ServerTimestampType, TimestampNanos, datetime.datetime]):
0944: """
0945: Write a row for the table in the transaction.
0946:
0947: The table name is taken from the transaction.
0948:
0949: **Note**: Support for NumPy arrays (``numpy.array``) requires QuestDB server version 9.0.0 or higher.
0950: """
+0951: if at is None:
__pyx_t_1 = (__pyx_v_at == Py_None);
if (unlikely(__pyx_t_1)) {
/* … */
}
+0952: 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(0, 952, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+0953: QuestDBErrorCode.InvalidTimestamp,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 953, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_InvalidTimestamp); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 953, __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_at_must_be_of_type_TimestampNan}; __pyx_t_2 = __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_2)) __PYX_ERR(0, 952, __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(0, 952, __pyx_L1_error)
0954: "`at` must be of type TimestampNanos, datetime, or ServerTimestamp"
0955: )
0956:
+0957: if self._sender._buffer is None:
__pyx_t_1 = (((PyObject *)__pyx_v_self->_sender->_buffer) == Py_None);
if (unlikely(__pyx_t_1)) {
/* … */
}
+0958: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 958, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
+0959: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 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[3] = {__pyx_t_4, __pyx_t_5, __pyx_mstate_global->__pyx_kp_u_row_can_t_be_called_Sender_is_cl}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__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_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 958, __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(0, 958, __pyx_L1_error)
0960: "row() can\'t be called: Sender is closed."
0961: )
0962:
+0963: self._sender._buffer._row(
__pyx_t_9.__pyx_n = 3; __pyx_t_9.symbols = __pyx_v_symbols; __pyx_t_9.columns = __pyx_v_columns; __pyx_t_9.at = __pyx_v_at; __pyx_t_8 = ((struct __pyx_vtabstruct_7questdb_7_client_Buffer *)__pyx_v_self->_sender->_buffer->__pyx_vtab)->_row(__pyx_v_self->_sender->_buffer, 0, ((PyObject*)__pyx_t_2), &__pyx_t_9); if (unlikely(__pyx_t_8 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 963, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
0964: False, # allow_auto_flush
+0965: self._table_name,
__pyx_t_2 = __pyx_v_self->_table_name;
__Pyx_INCREF(__pyx_t_2);
0966: symbols=symbols,
0967: columns=columns,
0968: at=at)
+0969: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
0970:
+0971: def dataframe(
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_17SenderTransaction_9dataframe(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_17SenderTransaction_8dataframe, "\n Write a dataframe for the table in the transaction.\n\n The table name is taken from the transaction.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_17SenderTransaction_9dataframe = {"dataframe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_17SenderTransaction_9dataframe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_17SenderTransaction_8dataframe}; static PyObject *__pyx_pw_7questdb_7_client_17SenderTransaction_9dataframe(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_df = 0; PyObject *__pyx_v_symbols = 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("dataframe (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_df,&__pyx_mstate_global->__pyx_n_u_at,&__pyx_mstate_global->__pyx_n_u_symbols,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(0, 971, __pyx_L3_error) if (likely(__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(0, 971, __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, "dataframe", 0) < (0)) __PYX_ERR(0, 971, __pyx_L3_error) if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_auto)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("dataframe", 1, 1, 1, i); __PYX_ERR(0, 971, __pyx_L3_error) } } for (Py_ssize_t i = 1; i < 2; i++) { if (unlikely(!values[i])) { __Pyx_RaiseKeywordRequired("dataframe", *(__pyx_pyargnames[i - 0])); __PYX_ERR(0, 971, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { __Pyx_RaiseKeywordRequired("dataframe", __pyx_mstate_global->__pyx_n_u_at); __PYX_ERR(0, 971, __pyx_L3_error) } __pyx_v_df = values[0]; __pyx_v_at = values[1]; __pyx_v_symbols = values[2]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("dataframe", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 971, __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.SenderTransaction.dataframe", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_17SenderTransaction_8dataframe(((struct __pyx_obj_7questdb_7_client_SenderTransaction *)__pyx_v_self), __pyx_v_df, __pyx_v_symbols, __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_17SenderTransaction_8dataframe(struct __pyx_obj_7questdb_7_client_SenderTransaction *__pyx_v_self, PyObject *__pyx_v_df, PyObject *__pyx_v_symbols, PyObject *__pyx_v_at) { 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_AddTraceback("questdb._client.SenderTransaction.dataframe", __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(0, 971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_symbols, __pyx_mstate_global->__pyx_n_u_auto) < (0)) __PYX_ERR(0, 971, __pyx_L1_error) __pyx_t_17 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_symbols, __pyx_mstate_global->__pyx_kp_u_Union_str_bool_List_int_List_str) < (0)) __PYX_ERR(0, 971, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_at, __pyx_mstate_global->__pyx_kp_u_Union_ServerTimestampType_int_st) < (0)) __PYX_ERR(0, 971, __pyx_L1_error) __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_17SenderTransaction_9dataframe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_SenderTransaction_dataframe, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[58])); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_13, __pyx_t_16); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_17); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_SenderTransaction, __pyx_mstate_global->__pyx_n_u_dataframe, __pyx_t_13) < (0)) __PYX_ERR(0, 971, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
0972: self,
0973: df, # : pd.DataFrame
0974: *,
0975: symbols: Union[str, bool, List[int], List[str]] = 'auto',
0976: at: Union[ServerTimestampType, int, str, TimestampNanos, datetime.datetime]):
0977: """
0978: Write a dataframe for the table in the transaction.
0979:
0980: The table name is taken from the transaction.
0981: """
+0982: if at is None:
__pyx_t_1 = (__pyx_v_at == Py_None);
if (unlikely(__pyx_t_1)) {
/* … */
}
+0983: 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(0, 983, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+0984: QuestDBErrorCode.InvalidTimestamp,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_InvalidTimestamp); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 984, __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_at_must_be_of_type_TimestampNan}; __pyx_t_2 = __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_2)) __PYX_ERR(0, 983, __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(0, 983, __pyx_L1_error)
0985: "`at` must be of type TimestampNanos, datetime, or ServerTimestamp"
0986: )
+0987: if self._sender._buffer is None:
__pyx_t_1 = (((PyObject *)__pyx_v_self->_sender->_buffer) == Py_None);
if (unlikely(__pyx_t_1)) {
/* … */
}
+0988: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 988, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
+0989: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 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[3] = {__pyx_t_4, __pyx_t_5, __pyx_mstate_global->__pyx_kp_u_dataframe_can_t_be_called_Sender}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__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_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 988, __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(0, 988, __pyx_L1_error)
0990: "dataframe() can\'t be called: Sender is closed."
0991: )
+0992: _dataframe(
__pyx_t_8 = __pyx_f_7questdb_7_client__dataframe(__pyx_f_7questdb_7_client_auto_flush_blank(), __pyx_v_self->_sender->_buffer->_impl, __pyx_v_self->_sender->_buffer->_b, __pyx_v_df, __pyx_t_2, Py_None, __pyx_v_symbols, __pyx_v_at); if (unlikely(__pyx_t_8 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 992, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
0993: auto_flush_blank(),
0994: self._sender._buffer._impl,
0995: self._sender._buffer._b,
0996: df,
+0997: self._table_name,
__pyx_t_2 = __pyx_v_self->_table_name;
__Pyx_INCREF(__pyx_t_2);
0998: None, # table_name_col,
0999: symbols,
1000: at)
+1001: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
1002:
+1003: def commit(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_17SenderTransaction_11commit(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_17SenderTransaction_10commit, "\n Commit the transaction.\n \n A commit is also automatic at the end of a successful `with` block.\n\n This will flush the buffer.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_17SenderTransaction_11commit = {"commit", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_17SenderTransaction_11commit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_17SenderTransaction_10commit}; static PyObject *__pyx_pw_7questdb_7_client_17SenderTransaction_11commit(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("commit (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("commit", 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("commit", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_17SenderTransaction_10commit(((struct __pyx_obj_7questdb_7_client_SenderTransaction *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_17SenderTransaction_10commit(struct __pyx_obj_7questdb_7_client_SenderTransaction *__pyx_v_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_XDECREF(__pyx_t_5); __Pyx_AddTraceback("questdb._client.SenderTransaction.commit", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_17SenderTransaction_11commit, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_SenderTransaction_commit, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[59])); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1003, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_SenderTransaction, __pyx_mstate_global->__pyx_n_u_commit, __pyx_t_13) < (0)) __PYX_ERR(0, 1003, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
1004: """
1005: Commit the transaction.
1006:
1007: A commit is also automatic at the end of a successful `with` block.
1008:
1009: This will flush the buffer.
1010: """
+1011: if self._complete:
if (unlikely(__pyx_v_self->_complete)) {
/* … */
}
+1012: raise QuestDBError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1012, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+1013: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = 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_6 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Transaction_already_completed_ca}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__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(0, 1012, __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(0, 1012, __pyx_L1_error)
1014: 'Transaction already completed, can\'t commit')
+1015: self._sender._in_txn = False
__pyx_v_self->_sender->_in_txn = 0;
+1016: self._complete = True
__pyx_v_self->_complete = 1;
+1017: if len(self._sender._buffer):
__pyx_t_1 = ((PyObject *)__pyx_v_self->_sender->_buffer); __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1017, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_8 = (__pyx_t_7 != 0); if (__pyx_t_8) { /* … */ }
+1018: self._sender.flush(transactional=True)
__pyx_t_3 = ((PyObject *)__pyx_v_self->_sender);
__Pyx_INCREF(__pyx_t_3);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, NULL};
__pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1018, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_transactional, Py_True, __pyx_t_5, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 1018, __pyx_L1_error)
__pyx_t_1 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_flush, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5);
__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(0, 1018, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1019:
+1020: def rollback(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_17SenderTransaction_13rollback(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_17SenderTransaction_12rollback, "\n Roll back the transaction.\n\n A rollback is also automatic at the end of a failed `with` block.\n\n This will clear the buffer.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_17SenderTransaction_13rollback = {"rollback", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_17SenderTransaction_13rollback, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_17SenderTransaction_12rollback}; static PyObject *__pyx_pw_7questdb_7_client_17SenderTransaction_13rollback(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("rollback (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("rollback", 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("rollback", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_17SenderTransaction_12rollback(((struct __pyx_obj_7questdb_7_client_SenderTransaction *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_17SenderTransaction_12rollback(struct __pyx_obj_7questdb_7_client_SenderTransaction *__pyx_v_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_XDECREF(__pyx_t_5); __Pyx_AddTraceback("questdb._client.SenderTransaction.rollback", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_17SenderTransaction_13rollback, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_SenderTransaction_rollback, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[60])); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_SenderTransaction, __pyx_mstate_global->__pyx_n_u_rollback, __pyx_t_13) < (0)) __PYX_ERR(0, 1020, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
1021: """
1022: Roll back the transaction.
1023:
1024: A rollback is also automatic at the end of a failed `with` block.
1025:
1026: This will clear the buffer.
1027: """
+1028: if self._complete:
if (unlikely(__pyx_v_self->_complete)) {
/* … */
}
+1029: raise QuestDBError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1029, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+1030: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = 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_6 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Transaction_already_completed_ca_2}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__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(0, 1029, __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(0, 1029, __pyx_L1_error)
1031: 'Transaction already completed, can\'t rollback.')
+1032: if self._sender._buffer is not None:
__pyx_t_7 = (((PyObject *)__pyx_v_self->_sender->_buffer) != Py_None);
if (__pyx_t_7) {
/* … */
}
+1033: self._sender._buffer.clear()
__pyx_t_3 = ((PyObject *)__pyx_v_self->_sender->_buffer);
__Pyx_INCREF(__pyx_t_3);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_clear, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1033, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1034: self._sender._in_txn = False
__pyx_v_self->_sender->_in_txn = 0;
+1035: self._complete = True
__pyx_v_self->_complete = 1;
1036:
+1037: cdef class Buffer:
struct __pyx_vtabstruct_7questdb_7_client_Buffer {
PyObject *(*_init_ilp_impl)(struct __pyx_obj_7questdb_7_client_Buffer *, enum line_sender_protocol_version, size_t, size_t);
PyObject *(*_init_qwp_impl)(struct __pyx_obj_7questdb_7_client_Buffer *, size_t, size_t);
__pyx_t_7questdb_7_client_void_int (*_check_impl)(struct __pyx_obj_7questdb_7_client_Buffer *);
PyObject *(*_to_bytes)(struct __pyx_obj_7questdb_7_client_Buffer *);
__pyx_t_7questdb_7_client_void_int (*_set_marker)(struct __pyx_obj_7questdb_7_client_Buffer *);
__pyx_t_7questdb_7_client_void_int (*_rewind_to_marker)(struct __pyx_obj_7questdb_7_client_Buffer *);
PyObject *(*_clear_marker)(struct __pyx_obj_7questdb_7_client_Buffer *);
__pyx_t_7questdb_7_client_void_int (*_table)(struct __pyx_obj_7questdb_7_client_Buffer *, PyObject *);
struct qdb_pystr_buf *(*_cleared_b)(struct __pyx_obj_7questdb_7_client_Buffer *);
__pyx_t_7questdb_7_client_void_int (*_symbol)(struct __pyx_obj_7questdb_7_client_Buffer *, PyObject *, PyObject *);
__pyx_t_7questdb_7_client_void_int (*_column_bool)(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, int);
__pyx_t_7questdb_7_client_void_int (*_column_decimal)(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, PyObject *);
__pyx_t_7questdb_7_client_void_int (*_column_i64)(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, int64_t);
__pyx_t_7questdb_7_client_void_int (*_column_f64)(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, double);
__pyx_t_7questdb_7_client_void_int (*_column_str)(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, PyObject *);
__pyx_t_7questdb_7_client_void_int (*_column_ts_micros)(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, struct __pyx_obj_7questdb_7_client_TimestampMicros *);
__pyx_t_7questdb_7_client_void_int (*_column_ts_nanos)(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, struct __pyx_obj_7questdb_7_client_TimestampNanos *);
__pyx_t_7questdb_7_client_void_int (*_column_numpy)(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, PyArrayObject *);
__pyx_t_7questdb_7_client_void_int (*_column_dt)(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, PyDateTime_DateTime *);
__pyx_t_7questdb_7_client_void_int (*_column)(struct __pyx_obj_7questdb_7_client_Buffer *, PyObject *, PyObject *);
__pyx_t_7questdb_7_client_void_int (*_may_trigger_row_complete)(struct __pyx_obj_7questdb_7_client_Buffer *);
__pyx_t_7questdb_7_client_void_int (*_at_ts_us)(struct __pyx_obj_7questdb_7_client_Buffer *, struct __pyx_obj_7questdb_7_client_TimestampMicros *);
__pyx_t_7questdb_7_client_void_int (*_at_ts_ns)(struct __pyx_obj_7questdb_7_client_Buffer *, struct __pyx_obj_7questdb_7_client_TimestampNanos *);
__pyx_t_7questdb_7_client_void_int (*_at_dt)(struct __pyx_obj_7questdb_7_client_Buffer *, PyDateTime_DateTime *);
__pyx_t_7questdb_7_client_void_int (*_at_now)(struct __pyx_obj_7questdb_7_client_Buffer *);
__pyx_t_7questdb_7_client_void_int (*_at)(struct __pyx_obj_7questdb_7_client_Buffer *, PyObject *);
__pyx_t_7questdb_7_client_void_int (*_row)(struct __pyx_obj_7questdb_7_client_Buffer *, int, PyObject *, struct __pyx_opt_args_7questdb_7_client_6Buffer__row *__pyx_optional_args);
};
static struct __pyx_vtabstruct_7questdb_7_client_Buffer *__pyx_vtabptr_7questdb_7_client_Buffer;
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client_6Buffer__init_ilp_impl(struct __pyx_obj_7questdb_7_client_Buffer *, enum line_sender_protocol_version, size_t, size_t);
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client_6Buffer__init_qwp_impl(struct __pyx_obj_7questdb_7_client_Buffer *, size_t, size_t);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__check_impl(struct __pyx_obj_7questdb_7_client_Buffer *);
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client_6Buffer__to_bytes(struct __pyx_obj_7questdb_7_client_Buffer *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__set_marker(struct __pyx_obj_7questdb_7_client_Buffer *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__rewind_to_marker(struct __pyx_obj_7questdb_7_client_Buffer *);
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client_6Buffer__clear_marker(struct __pyx_obj_7questdb_7_client_Buffer *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__table(struct __pyx_obj_7questdb_7_client_Buffer *, PyObject *);
static CYTHON_INLINE struct qdb_pystr_buf *__pyx_f_7questdb_7_client_6Buffer__cleared_b(struct __pyx_obj_7questdb_7_client_Buffer *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__symbol(struct __pyx_obj_7questdb_7_client_Buffer *, PyObject *, PyObject *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_bool(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, int);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_decimal(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, PyObject *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_i64(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, int64_t);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_f64(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, double);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_str(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, PyObject *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_ts_micros(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, struct __pyx_obj_7questdb_7_client_TimestampMicros *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_ts_nanos(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, struct __pyx_obj_7questdb_7_client_TimestampNanos *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_numpy(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, PyArrayObject *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_dt(struct __pyx_obj_7questdb_7_client_Buffer *, struct line_sender_column_name, PyDateTime_DateTime *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column(struct __pyx_obj_7questdb_7_client_Buffer *, PyObject *, PyObject *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__may_trigger_row_complete(struct __pyx_obj_7questdb_7_client_Buffer *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__at_ts_us(struct __pyx_obj_7questdb_7_client_Buffer *, struct __pyx_obj_7questdb_7_client_TimestampMicros *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__at_ts_ns(struct __pyx_obj_7questdb_7_client_Buffer *, struct __pyx_obj_7questdb_7_client_TimestampNanos *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__at_dt(struct __pyx_obj_7questdb_7_client_Buffer *, PyDateTime_DateTime *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__at_now(struct __pyx_obj_7questdb_7_client_Buffer *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__at(struct __pyx_obj_7questdb_7_client_Buffer *, PyObject *);
1038: """
1039: Internal row-serialization buffer, managed by :class:`Sender <questdb.Sender>`.
1040:
1041: Kept importable as ``questdb.ingress.Buffer`` for legacy ILP/HTTP and
1042: ILP/TCP code that constructs buffers explicitly and flushes them via
1043: ``sender.flush(buffer)``.
1044: """
1045: cdef line_sender_buffer* _impl
1046: cdef qdb_pystr_buf* _b
1047: cdef size_t _init_buf_size
1048: cdef size_t _max_name_len
1049: cdef bint _qwp
1050: cdef object _row_complete_sender
1051:
+1052: def __cinit__(self):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_6Buffer_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7questdb_7_client_6Buffer_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_6Buffer___cinit__(((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_6Buffer___cinit__(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1053: self._impl = NULL
__pyx_v_self->_impl = NULL;
+1054: self._b = NULL
__pyx_v_self->_b = NULL;
+1055: self._init_buf_size = 0
__pyx_v_self->_init_buf_size = 0;
+1056: self._max_name_len = 0
__pyx_v_self->_max_name_len = 0;
+1057: self._qwp = False
__pyx_v_self->_qwp = 0;
+1058: self._row_complete_sender = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_row_complete_sender); __Pyx_DECREF(__pyx_v_self->_row_complete_sender); __pyx_v_self->_row_complete_sender = Py_None;
1059:
+1060: def __init__(
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_6Buffer_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7questdb_7_client_6Buffer_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_protocol_version = 0;
PyObject *__pyx_v_init_buf_size = 0;
PyObject *__pyx_v_max_name_len = 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_protocol_version,&__pyx_mstate_global->__pyx_n_u_init_buf_size,&__pyx_mstate_global->__pyx_n_u_max_name_len,0};
PyObject* values[3] = {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(0, 1060, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 3:
values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1060, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 2:
values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1060, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1060, __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(0, 1060, __pyx_L3_error)
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_int_65536));
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_int_127));
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, i); __PYX_ERR(0, 1060, __pyx_L3_error) }
}
} else {
switch (__pyx_nargs) {
case 3:
values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1060, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 2:
values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1060, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1060, __pyx_L3_error)
break;
default: goto __pyx_L5_argtuple_error;
}
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_int_65536));
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_int_127));
}
if (__Pyx_PyInt_FromNumber(&values[0], "protocol_version", 0) < (0)) __PYX_ERR(0, 1062, __pyx_L3_error)
__pyx_v_protocol_version = ((PyObject*)values[0]);
if (__Pyx_PyInt_FromNumber(&values[1], "init_buf_size", 0) < (0)) __PYX_ERR(0, 1063, __pyx_L3_error)
__pyx_v_init_buf_size = ((PyObject*)values[1]);
if (__Pyx_PyInt_FromNumber(&values[2], "max_name_len", 0) < (0)) __PYX_ERR(0, 1064, __pyx_L3_error)
__pyx_v_max_name_len = ((PyObject*)values[2]);
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, __pyx_nargs); __PYX_ERR(0, 1060, __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.Buffer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_protocol_version), (&PyLong_Type), 0, "protocol_version", 2))) __PYX_ERR(0, 1062, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_init_buf_size), (&PyLong_Type), 0, "init_buf_size", 2))) __PYX_ERR(0, 1063, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_max_name_len), (&PyLong_Type), 0, "max_name_len", 2))) __PYX_ERR(0, 1064, __pyx_L1_error)
__pyx_r = __pyx_pf_7questdb_7_client_6Buffer_2__init__(((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_v_self), __pyx_v_protocol_version, __pyx_v_init_buf_size, __pyx_v_max_name_len);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = -1;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
goto __pyx_L7_cleaned_up;
__pyx_L0:;
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_L7_cleaned_up:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_6Buffer_2__init__(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, PyObject *__pyx_v_protocol_version, PyObject *__pyx_v_init_buf_size, PyObject *__pyx_v_max_name_len) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
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.Buffer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1061: self,
1062: protocol_version: int,
1063: init_buf_size: int=65536,
1064: max_name_len: int=127):
+1065: if self._impl != NULL:
__pyx_t_1 = (__pyx_v_self->_impl != NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+1066: 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(0, 1066, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+1067: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1067, __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(0, 1067, __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_Buffer_is_already_initialized}; __pyx_t_2 = __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_2)) __PYX_ERR(0, 1066, __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(0, 1066, __pyx_L1_error)
1068: 'Buffer is already initialized.')
+1069: if protocol_version not in range(1, 4):
__pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyRange_Type)), __pyx_mstate_global->__pyx_tuple[4], NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1069, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_protocol_version, __pyx_t_2, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1069, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(__pyx_t_1)) { /* … */ } /* … */ __pyx_mstate_global->__pyx_tuple[4] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_1, __pyx_mstate_global->__pyx_int_4); if (unlikely(!__pyx_mstate_global->__pyx_tuple[4])) __PYX_ERR(0, 1069, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[4]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[4]);
+1070: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1070, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
+1071: QuestDBErrorCode.ProtocolVersionError,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ProtocolVersionError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 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[3] = {__pyx_t_4, __pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Invalid_protocol_version_Support}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__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_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1070, __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(0, 1070, __pyx_L1_error)
1072: 'Invalid protocol version. Supported versions are 1-3.')
+1073: self._init_ilp_impl(protocol_version, init_buf_size, max_name_len)
__pyx_t_8 = ((enum line_sender_protocol_version)__Pyx_PyLong_As_enum__line_sender_protocol_version(__pyx_v_protocol_version)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1073, __pyx_L1_error) __pyx_t_7 = __Pyx_PyLong_As_size_t(__pyx_v_init_buf_size); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1073, __pyx_L1_error) __pyx_t_9 = __Pyx_PyLong_As_size_t(__pyx_v_max_name_len); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1073, __pyx_L1_error) __pyx_t_2 = __pyx_f_7questdb_7_client_6Buffer__init_ilp_impl(__pyx_v_self, __pyx_t_8, __pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1074:
+1075: @staticmethod
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_6Buffer_5_new_qwp(CYTHON_UNUSED 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_6Buffer_5_new_qwp = {"_new_qwp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Buffer_5_new_qwp, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_6Buffer_5_new_qwp(CYTHON_UNUSED 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_init_buf_size = 0;
PyObject *__pyx_v_max_name_len = 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("_new_qwp (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_init_buf_size,&__pyx_mstate_global->__pyx_n_u_max_name_len,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(0, 1075, __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(0, 1075, __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(0, 1075, __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, "_new_qwp", 0) < (0)) __PYX_ERR(0, 1075, __pyx_L3_error)
if (!values[0]) values[0] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_int_65536));
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_int_127));
} else {
switch (__pyx_nargs) {
case 2:
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1075, __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(0, 1075, __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_int_65536));
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject*)__pyx_mstate_global->__pyx_int_127));
}
if (__Pyx_PyInt_FromNumber(&values[0], "init_buf_size", 0) < (0)) __PYX_ERR(0, 1077, __pyx_L3_error)
__pyx_v_init_buf_size = ((PyObject*)values[0]);
if (__Pyx_PyInt_FromNumber(&values[1], "max_name_len", 0) < (0)) __PYX_ERR(0, 1078, __pyx_L3_error)
__pyx_v_max_name_len = ((PyObject*)values[1]);
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_new_qwp", 0, 0, 2, __pyx_nargs); __PYX_ERR(0, 1075, __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.Buffer._new_qwp", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_init_buf_size), (&PyLong_Type), 0, "init_buf_size", 2))) __PYX_ERR(0, 1077, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_max_name_len), (&PyLong_Type), 0, "max_name_len", 2))) __PYX_ERR(0, 1078, __pyx_L1_error)
__pyx_r = __pyx_pf_7questdb_7_client_6Buffer_4_new_qwp(__pyx_v_init_buf_size, __pyx_v_max_name_len);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
goto __pyx_L7_cleaned_up;
__pyx_L0:;
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_L7_cleaned_up:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_6Buffer_4_new_qwp(PyObject *__pyx_v_init_buf_size, PyObject *__pyx_v_max_name_len) {
struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_buf = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.Buffer._new_qwp", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_buf);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_13 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1075, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_init_buf_size, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 1075, __pyx_L1_error)
if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_max_name_len, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 1075, __pyx_L1_error)
__pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_6Buffer_5_new_qwp, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Buffer__new_qwp, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[63])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1075, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17);
#endif
__Pyx_CyFunction_SetDefaultsTuple(__pyx_t_17, __pyx_mstate_global->__pyx_tuple[8]);
__Pyx_CyFunction_SetAnnotationsDict(__pyx_t_17, __pyx_t_13);
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Buffer, __pyx_mstate_global->__pyx_n_u_new_qwp, __pyx_t_17) < (0)) __PYX_ERR(0, 1075, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
__pyx_t_13 = NULL;
__Pyx_GetNameInClass(__pyx_t_16, (PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Buffer, __pyx_mstate_global->__pyx_n_u_new_qwp); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1075, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_16};
__pyx_t_17 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1075, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
}
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Buffer, __pyx_mstate_global->__pyx_n_u_new_qwp, __pyx_t_17) < (0)) __PYX_ERR(0, 1075, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
/* … */
__pyx_mstate_global->__pyx_tuple[8] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_65536, __pyx_mstate_global->__pyx_int_127); if (unlikely(!__pyx_mstate_global->__pyx_tuple[8])) __PYX_ERR(0, 1075, __pyx_L1_error)
__Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[8]);
__Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[8]);
1076: def _new_qwp(
1077: init_buf_size: int=65536,
1078: max_name_len: int=127):
+1079: cdef Buffer buf = Buffer.__new__(Buffer)
__pyx_t_1 = ((PyObject *)__pyx_tp_new_7questdb_7_client_Buffer(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Buffer), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1079, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); __pyx_v_buf = ((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_t_1); __pyx_t_1 = 0;
+1080: buf._init_qwp_impl(init_buf_size, max_name_len)
__pyx_t_2 = __Pyx_PyLong_As_size_t(__pyx_v_init_buf_size); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1080, __pyx_L1_error) __pyx_t_3 = __Pyx_PyLong_As_size_t(__pyx_v_max_name_len); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1080, __pyx_L1_error) __pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__init_qwp_impl(__pyx_v_buf, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1080, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1081: return buf
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_buf); __pyx_r = ((PyObject *)__pyx_v_buf); goto __pyx_L0;
1082:
+1083: cdef inline _init_ilp_impl(self, line_sender_protocol_version version, size_t init_buf_size, size_t max_name_len):
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client_6Buffer__init_ilp_impl(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, enum line_sender_protocol_version __pyx_v_version, size_t __pyx_v_init_buf_size, size_t __pyx_v_max_name_len) {
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.Buffer._init_ilp_impl", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1084: self._impl = line_sender_buffer_with_max_name_len(version, max_name_len)
__pyx_v_self->_impl = line_sender_buffer_with_max_name_len(__pyx_v_version, __pyx_v_max_name_len);
+1085: self._b = qdb_pystr_buf_new()
__pyx_v_self->_b = qdb_pystr_buf_new();
+1086: reserve_buffer(self._impl, init_buf_size)
__pyx_t_1 = __pyx_f_7questdb_7_client_reserve_buffer(__pyx_v_self->_impl, __pyx_v_init_buf_size); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1086, __pyx_L1_error)
+1087: self._init_buf_size = init_buf_size
__pyx_v_self->_init_buf_size = __pyx_v_init_buf_size;
+1088: self._max_name_len = max_name_len
__pyx_v_self->_max_name_len = __pyx_v_max_name_len;
+1089: self._qwp = False
__pyx_v_self->_qwp = 0;
+1090: self._row_complete_sender = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_row_complete_sender); __Pyx_DECREF(__pyx_v_self->_row_complete_sender); __pyx_v_self->_row_complete_sender = Py_None;
1091:
+1092: cdef inline _init_qwp_impl(self, size_t init_buf_size, size_t max_name_len):
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client_6Buffer__init_qwp_impl(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, size_t __pyx_v_init_buf_size, size_t __pyx_v_max_name_len) {
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.Buffer._init_qwp_impl", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1093: self._impl = line_sender_buffer_new_qwp_with_max_name_len(max_name_len)
__pyx_v_self->_impl = line_sender_buffer_new_qwp_with_max_name_len(__pyx_v_max_name_len);
+1094: self._b = qdb_pystr_buf_new()
__pyx_v_self->_b = qdb_pystr_buf_new();
+1095: reserve_buffer(self._impl, init_buf_size)
__pyx_t_1 = __pyx_f_7questdb_7_client_reserve_buffer(__pyx_v_self->_impl, __pyx_v_init_buf_size); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1095, __pyx_L1_error)
+1096: self._init_buf_size = init_buf_size
__pyx_v_self->_init_buf_size = __pyx_v_init_buf_size;
+1097: self._max_name_len = max_name_len
__pyx_v_self->_max_name_len = __pyx_v_max_name_len;
+1098: self._qwp = True
__pyx_v_self->_qwp = 1;
+1099: self._row_complete_sender = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_row_complete_sender); __Pyx_DECREF(__pyx_v_self->_row_complete_sender); __pyx_v_self->_row_complete_sender = Py_None;
1100:
1101:
+1102: def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_7questdb_7_client_6Buffer_7__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7questdb_7_client_6Buffer_7__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_6Buffer_6__dealloc__(((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
}
static void __pyx_pf_7questdb_7_client_6Buffer_6__dealloc__(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) {
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
}
+1103: self._row_complete_sender = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_row_complete_sender); __Pyx_DECREF(__pyx_v_self->_row_complete_sender); __pyx_v_self->_row_complete_sender = Py_None;
+1104: qdb_pystr_buf_free(self._b)
qdb_pystr_buf_free(__pyx_v_self->_b);
+1105: line_sender_buffer_free(self._impl)
line_sender_buffer_free(__pyx_v_self->_impl);
1106:
+1107: cdef inline void_int _check_impl(self) except -1:
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__check_impl(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) {
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
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.Buffer._check_impl", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1108: if self._impl == NULL:
__pyx_t_1 = (__pyx_v_self->_impl == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+1109: 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(0, 1109, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+1110: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1110, __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(0, 1110, __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_Buffer_is_not_initialized}; __pyx_t_2 = __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_2)) __PYX_ERR(0, 1109, __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(0, 1109, __pyx_L1_error)
1111: 'Buffer is not initialized.')
1112:
+1113: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_6Buffer_13init_buf_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_6Buffer_13init_buf_size_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_6Buffer_13init_buf_size___get__(((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_6Buffer_13init_buf_size___get__(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.Buffer.init_buf_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1114: def init_buf_size(self) -> int:
1115: """
1116: The initial capacity of the buffer when first created.
1117:
1118: This may grow over time, see ``capacity()``.
1119: """
+1120: return self._init_buf_size
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_v_self->_init_buf_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
1121:
+1122: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_6Buffer_12max_name_len_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_6Buffer_12max_name_len_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_6Buffer_12max_name_len___get__(((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_6Buffer_12max_name_len___get__(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.Buffer.max_name_len.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1123: def max_name_len(self) -> int:
1124: """Maximum length of a table or column name."""
+1125: return self._max_name_len
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_v_self->_max_name_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
1126:
+1127: def reserve(self, additional):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Buffer_9reserve(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_6Buffer_8reserve, "\n Ensure the buffer has at least `additional` bytes of future capacity.\n\n :param int additional: Additional bytes to reserve.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Buffer_9reserve = {"reserve", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Buffer_9reserve, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Buffer_8reserve}; static PyObject *__pyx_pw_7questdb_7_client_6Buffer_9reserve(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_additional = 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("reserve (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_additional,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(0, 1127, __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(0, 1127, __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, "reserve", 0) < (0)) __PYX_ERR(0, 1127, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("reserve", 1, 1, 1, i); __PYX_ERR(0, 1127, __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(0, 1127, __pyx_L3_error) } __pyx_v_additional = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("reserve", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1127, __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.Buffer.reserve", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_6Buffer_8reserve(((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_v_self), __pyx_v_additional); 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_6Buffer_8reserve(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, PyObject *__pyx_v_additional) { 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_3); __Pyx_AddTraceback("questdb._client.Buffer.reserve", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_6Buffer_9reserve, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Buffer_reserve, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[64])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Buffer, __pyx_mstate_global->__pyx_n_u_reserve, __pyx_t_17) < (0)) __PYX_ERR(0, 1127, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
1128: """
1129: Ensure the buffer has at least `additional` bytes of future capacity.
1130:
1131: :param int additional: Additional bytes to reserve.
1132: """
+1133: if additional < 0:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_additional, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1133, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1133, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+1134: raise ValueError('additional must be non-negative.')
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_additional_must_be_non_negative};
__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(0, 1134, __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(0, 1134, __pyx_L1_error)
+1135: self._check_impl()
__pyx_t_5 = __pyx_f_7questdb_7_client_6Buffer__check_impl(__pyx_v_self); if (unlikely(__pyx_t_5 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1135, __pyx_L1_error)
+1136: reserve_buffer(self._impl, additional)
__pyx_t_4 = __Pyx_PyLong_As_size_t(__pyx_v_additional); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1136, __pyx_L1_error) __pyx_t_5 = __pyx_f_7questdb_7_client_reserve_buffer(__pyx_v_self->_impl, __pyx_t_4); if (unlikely(__pyx_t_5 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1136, __pyx_L1_error)
1137:
+1138: def capacity(self) -> int:
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Buffer_11capacity(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_6Buffer_10capacity, "The current buffer capacity."); static PyMethodDef __pyx_mdef_7questdb_7_client_6Buffer_11capacity = {"capacity", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Buffer_11capacity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Buffer_10capacity}; static PyObject *__pyx_pw_7questdb_7_client_6Buffer_11capacity(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("capacity (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("capacity", 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("capacity", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_6Buffer_10capacity(((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Buffer_10capacity(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("questdb._client.Buffer.capacity", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 1138, __pyx_L1_error) __pyx_t_16 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_6Buffer_11capacity, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Buffer_capacity, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[65])); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1138, __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_17); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Buffer, __pyx_mstate_global->__pyx_n_u_capacity, __pyx_t_16) < (0)) __PYX_ERR(0, 1138, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
1139: """The current buffer capacity."""
+1140: self._check_impl()
__pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__check_impl(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1140, __pyx_L1_error)
+1141: return line_sender_buffer_capacity(self._impl)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyLong_FromSize_t(line_sender_buffer_capacity(__pyx_v_self->_impl)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__Pyx_PyInt_FromNumber(&__pyx_t_2, NULL, 0) < (0)) __PYX_ERR(0, 1141, __pyx_L1_error) __pyx_r = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0;
1142:
+1143: def clear(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Buffer_13clear(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_6Buffer_12clear, "\n Reset the buffer.\n\n Note that flushing a buffer will (unless otherwise specified)\n also automatically clear it.\n\n This method is designed to be called only in conjunction with\n ``sender.flush(buffer, clear=False)``.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Buffer_13clear = {"clear", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Buffer_13clear, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Buffer_12clear}; static PyObject *__pyx_pw_7questdb_7_client_6Buffer_13clear(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("clear (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("clear", 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("clear", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_6Buffer_12clear(((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Buffer_12clear(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) { 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.Buffer.clear", __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_6Buffer_13clear, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Buffer_clear, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[66])); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1143, __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_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Buffer, __pyx_mstate_global->__pyx_n_u_clear, __pyx_t_16) < (0)) __PYX_ERR(0, 1143, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
1144: """
1145: Reset the buffer.
1146:
1147: Note that flushing a buffer will (unless otherwise specified)
1148: also automatically clear it.
1149:
1150: This method is designed to be called only in conjunction with
1151: ``sender.flush(buffer, clear=False)``.
1152: """
+1153: self._check_impl()
__pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__check_impl(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1153, __pyx_L1_error)
+1154: line_sender_buffer_clear(self._impl)
line_sender_buffer_clear(__pyx_v_self->_impl);
+1155: qdb_pystr_buf_clear(self._b)
qdb_pystr_buf_clear(__pyx_v_self->_b);
1156:
+1157: def __len__(self) -> int:
/* Python wrapper */ static Py_ssize_t __pyx_pw_7questdb_7_client_6Buffer_15__len__(PyObject *__pyx_v_self); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_6Buffer_14__len__, "\n The current number of bytes currently in the buffer.\n\n Equivalent (but cheaper) to ``len(bytes(buffer))``.\n "); #if CYTHON_UPDATE_DESCRIPTOR_DOC struct wrapperbase __pyx_wrapperbase_7questdb_7_client_6Buffer_14__len__; #endif static Py_ssize_t __pyx_pw_7questdb_7_client_6Buffer_15__len__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7questdb_7_client_6Buffer_14__len__(((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static Py_ssize_t __pyx_pf_7questdb_7_client_6Buffer_14__len__(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) { Py_ssize_t __pyx_r; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("questdb._client.Buffer.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; return __pyx_r; }
1158: """
1159: The current number of bytes currently in the buffer.
1160:
1161: Equivalent (but cheaper) to ``len(bytes(buffer))``.
1162: """
+1163: self._check_impl()
__pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__check_impl(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1163, __pyx_L1_error)
+1164: return line_sender_buffer_size(self._impl)
__pyx_r = line_sender_buffer_size(__pyx_v_self->_impl); goto __pyx_L0;
1165:
+1166: def __bytes__(self) -> bytes:
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Buffer_17__bytes__(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_6Buffer_16__bytes__, "Return the constructed buffer as bytes. Use for debugging."); static PyMethodDef __pyx_mdef_7questdb_7_client_6Buffer_17__bytes__ = {"__bytes__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Buffer_17__bytes__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Buffer_16__bytes__}; static PyObject *__pyx_pw_7questdb_7_client_6Buffer_17__bytes__(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("__bytes__ (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("__bytes__", 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("__bytes__", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_6Buffer_16__bytes__(((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Buffer_16__bytes__(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("questdb._client.Buffer.__bytes__", __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(0, 1166, __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_bytes) < (0)) __PYX_ERR(0, 1166, __pyx_L1_error) __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_6Buffer_17__bytes__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Buffer___bytes, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[67])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_17, __pyx_t_16); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Buffer, __pyx_mstate_global->__pyx_n_u_bytes_2, __pyx_t_17) < (0)) __PYX_ERR(0, 1166, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
1167: """Return the constructed buffer as bytes. Use for debugging."""
+1168: return self._to_bytes()
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__to_bytes(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1168, __pyx_L1_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(0, 1168, __pyx_L1_error) __pyx_r = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0;
1169:
+1170: cdef inline object _to_bytes(self):
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client_6Buffer__to_bytes(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) {
struct line_sender_buffer_view __pyx_v_view;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.Buffer._to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1171: self._check_impl()
__pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__check_impl(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1171, __pyx_L1_error)
+1172: cdef line_sender_buffer_view view = line_sender_buffer_peek(self._impl)
__pyx_v_view = line_sender_buffer_peek(__pyx_v_self->_impl);
+1173: return PyBytes_FromStringAndSize(<const char *> view.buf, <Py_ssize_t> view.len)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyBytes_FromStringAndSize(((char const *)__pyx_v_view.buf), ((Py_ssize_t)__pyx_v_view.len)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
1174:
+1175: cdef inline void_int _set_marker(self) except -1:
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__set_marker(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) {
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.Buffer._set_marker", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1176: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+1177: if not line_sender_buffer_set_marker(self._impl, &err):
__pyx_t_1 = (!line_sender_buffer_set_marker(__pyx_v_self->_impl, (&__pyx_v_err)));
if (unlikely(__pyx_t_1)) {
/* … */
}
+1178: raise 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(0, 1178, __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(0, 1178, __pyx_L1_error)
1179:
+1180: cdef inline void_int _rewind_to_marker(self) except -1:
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__rewind_to_marker(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) {
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.Buffer._rewind_to_marker", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1181: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+1182: if not line_sender_buffer_rewind_to_marker(self._impl, &err):
__pyx_t_1 = (!line_sender_buffer_rewind_to_marker(__pyx_v_self->_impl, (&__pyx_v_err)));
if (unlikely(__pyx_t_1)) {
/* … */
}
+1183: raise 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(0, 1183, __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(0, 1183, __pyx_L1_error)
1184:
+1185: cdef inline _clear_marker(self):
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client_6Buffer__clear_marker(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1186: line_sender_buffer_clear_marker(self._impl)
line_sender_buffer_clear_marker(__pyx_v_self->_impl);
1187:
+1188: cdef inline void_int _table(self, str table_name) except -1:
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__table(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, PyObject *__pyx_v_table_name) {
struct line_sender_error *__pyx_v_err;
struct line_sender_table_name __pyx_v_c_table_name;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client.Buffer._table", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1189: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
1190: cdef line_sender_table_name c_table_name
+1191: str_to_table_name(
__pyx_t_2 = __pyx_f_7questdb_7_client_str_to_table_name(__pyx_t_1, ((PyObject *)__pyx_v_table_name), (&__pyx_v_c_table_name)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1191, __pyx_L1_error)
+1192: self._cleared_b(), <PyObject*>table_name, &c_table_name)
__pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__cleared_b(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1192, __pyx_L1_error)
+1193: if not line_sender_buffer_table(self._impl, c_table_name, &err):
__pyx_t_3 = (!line_sender_buffer_table(__pyx_v_self->_impl, __pyx_v_c_table_name, (&__pyx_v_err)));
if (unlikely(__pyx_t_3)) {
/* … */
}
+1194: raise c_err_to_py(err)
__pyx_t_4 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1194, __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(0, 1194, __pyx_L1_error)
1195:
+1196: cdef inline qdb_pystr_buf* _cleared_b(self):
static CYTHON_INLINE struct qdb_pystr_buf *__pyx_f_7questdb_7_client_6Buffer__cleared_b(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) {
struct qdb_pystr_buf *__pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
+1197: qdb_pystr_buf_clear(self._b)
qdb_pystr_buf_clear(__pyx_v_self->_b);
+1198: return self._b
__pyx_r = __pyx_v_self->_b; goto __pyx_L0;
1199:
+1200: cdef inline void_int _symbol(self, str name, str value) except -1:
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__symbol(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
struct line_sender_error *__pyx_v_err;
struct line_sender_column_name __pyx_v_c_name;
struct line_sender_utf8 __pyx_v_c_value;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client.Buffer._symbol", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1201: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
1202: cdef line_sender_column_name c_name
1203: cdef line_sender_utf8 c_value
+1204: str_to_column_name(self._cleared_b(), name, &c_name)
__pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__cleared_b(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1204, __pyx_L1_error) __pyx_t_2 = __pyx_f_7questdb_7_client_str_to_column_name(__pyx_t_1, __pyx_v_name, (&__pyx_v_c_name)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1204, __pyx_L1_error)
+1205: str_to_utf8(self._b, <PyObject*>value, &c_value)
__pyx_t_2 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_self->_b, ((PyObject *)__pyx_v_value), (&__pyx_v_c_value)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1205, __pyx_L1_error)
+1206: if not line_sender_buffer_symbol(self._impl, c_name, c_value, &err):
__pyx_t_3 = (!line_sender_buffer_symbol(__pyx_v_self->_impl, __pyx_v_c_name, __pyx_v_c_value, (&__pyx_v_err)));
if (unlikely(__pyx_t_3)) {
/* … */
}
+1207: raise c_err_to_py(err)
__pyx_t_4 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1207, __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(0, 1207, __pyx_L1_error)
1208:
+1209: cdef inline void_int _column_bool(
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_bool(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, struct line_sender_column_name __pyx_v_c_name, int __pyx_v_value) {
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.Buffer._column_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1210: self, line_sender_column_name c_name, bint value) except -1:
+1211: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+1212: if not line_sender_buffer_column_bool(self._impl, c_name, value, &err):
__pyx_t_1 = (!line_sender_buffer_column_bool(__pyx_v_self->_impl, __pyx_v_c_name, __pyx_v_value, (&__pyx_v_err)));
if (unlikely(__pyx_t_1)) {
/* … */
}
+1213: raise 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(0, 1213, __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(0, 1213, __pyx_L1_error)
1214:
+1215: cdef inline void_int _column_decimal(
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_decimal(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, struct line_sender_column_name __pyx_v_c_name, PyObject *__pyx_v_value) {
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client.Buffer._column_decimal", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
return __pyx_r;
}
1216: self, line_sender_column_name c_name, object value) except -1:
+1217: return serialize_decimal_py_obj(self._impl, c_name, <PyObject*>value)
__pyx_t_1 = __pyx_f_7questdb_7_client_serialize_decimal_py_obj(__pyx_v_self->_impl, __pyx_v_c_name, ((PyObject *)__pyx_v_value)); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1217, __pyx_L1_error)
__pyx_r = __pyx_t_1;
goto __pyx_L0;
1218:
+1219: cdef inline void_int _column_i64(
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_i64(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, struct line_sender_column_name __pyx_v_c_name, int64_t __pyx_v_value) {
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.Buffer._column_i64", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1220: self, line_sender_column_name c_name, int64_t value) except -1:
+1221: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+1222: if not line_sender_buffer_column_i64(self._impl, c_name, value, &err):
__pyx_t_1 = (!line_sender_buffer_column_i64(__pyx_v_self->_impl, __pyx_v_c_name, __pyx_v_value, (&__pyx_v_err)));
if (unlikely(__pyx_t_1)) {
/* … */
}
+1223: raise 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(0, 1223, __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(0, 1223, __pyx_L1_error)
+1224: return 0
__pyx_r = 0; goto __pyx_L0;
1225:
+1226: cdef inline void_int _column_f64(
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_f64(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, struct line_sender_column_name __pyx_v_c_name, double __pyx_v_value) {
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.Buffer._column_f64", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1227: self, line_sender_column_name c_name, double value) except -1:
+1228: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+1229: if not line_sender_buffer_column_f64(self._impl, c_name, value, &err):
__pyx_t_1 = (!line_sender_buffer_column_f64(__pyx_v_self->_impl, __pyx_v_c_name, __pyx_v_value, (&__pyx_v_err)));
if (unlikely(__pyx_t_1)) {
/* … */
}
+1230: raise 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(0, 1230, __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(0, 1230, __pyx_L1_error)
1231:
+1232: cdef inline void_int _column_str(
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_str(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, struct line_sender_column_name __pyx_v_c_name, PyObject *__pyx_v_value) {
struct line_sender_error *__pyx_v_err;
struct line_sender_utf8 __pyx_v_c_value;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client.Buffer._column_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1233: self, line_sender_column_name c_name, str value) except -1:
+1234: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
1235: cdef line_sender_utf8 c_value
+1236: str_to_utf8(self._b, <PyObject*>value, &c_value)
__pyx_t_1 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_self->_b, ((PyObject *)__pyx_v_value), (&__pyx_v_c_value)); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1236, __pyx_L1_error)
+1237: if not line_sender_buffer_column_str(self._impl, c_name, c_value, &err):
__pyx_t_2 = (!line_sender_buffer_column_str(__pyx_v_self->_impl, __pyx_v_c_name, __pyx_v_c_value, (&__pyx_v_err)));
if (unlikely(__pyx_t_2)) {
/* … */
}
+1238: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1238, __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(0, 1238, __pyx_L1_error)
1239:
+1240: cdef inline void_int _column_ts_micros(
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_ts_micros(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, struct line_sender_column_name __pyx_v_c_name, struct __pyx_obj_7questdb_7_client_TimestampMicros *__pyx_v_ts) {
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.Buffer._column_ts_micros", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1241: self, line_sender_column_name c_name, TimestampMicros ts) except -1:
+1242: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+1243: if not line_sender_buffer_column_ts_micros(self._impl, c_name, ts._value, &err):
__pyx_t_1 = (!line_sender_buffer_column_ts_micros(__pyx_v_self->_impl, __pyx_v_c_name, __pyx_v_ts->_value, (&__pyx_v_err)));
if (unlikely(__pyx_t_1)) {
/* … */
}
+1244: raise 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(0, 1244, __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(0, 1244, __pyx_L1_error)
1245:
+1246: cdef inline void_int _column_ts_nanos(
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_ts_nanos(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, struct line_sender_column_name __pyx_v_c_name, struct __pyx_obj_7questdb_7_client_TimestampNanos *__pyx_v_ts) {
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.Buffer._column_ts_nanos", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1247: self, line_sender_column_name c_name, TimestampNanos ts) except -1:
+1248: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+1249: if not line_sender_buffer_column_ts_nanos(self._impl, c_name, ts._value, &err):
__pyx_t_1 = (!line_sender_buffer_column_ts_nanos(__pyx_v_self->_impl, __pyx_v_c_name, __pyx_v_ts->_value, (&__pyx_v_err)));
if (unlikely(__pyx_t_1)) {
/* … */
}
+1250: raise 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(0, 1250, __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(0, 1250, __pyx_L1_error)
1251:
+1252: cdef inline void_int _column_numpy(
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_numpy(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, struct line_sender_column_name __pyx_v_c_name, PyArrayObject *__pyx_v_arr) {
size_t __pyx_v_rank;
double const *__pyx_v_data_ptr;
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
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_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client.Buffer._column_numpy", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1253: self, line_sender_column_name c_name, cnp.ndarray arr) except -1:
+1254: if cnp.PyArray_TYPE(arr) != cnp.NPY_FLOAT64:
__pyx_t_1 = (PyArray_TYPE(__pyx_v_arr) != NPY_FLOAT64);
if (unlikely(__pyx_t_1)) {
/* … */
}
+1255: 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(0, 1255, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+1256: QuestDBErrorCode.ArrayError,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ArrayError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1257: f'Only float64 numpy arrays are supported, got dtype: {arr.dtype}')
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_arr), __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1257, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1257, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Only_float64_numpy_arrays_are_su, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1257, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = 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_8 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_t_5}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__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_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1255, __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(0, 1255, __pyx_L1_error)
1258: cdef:
+1259: size_t rank = cnp.PyArray_NDIM(arr)
__pyx_v_rank = PyArray_NDIM(__pyx_v_arr);
+1260: const double * data_ptr = <const double*> cnp.PyArray_DATA(arr)
__pyx_v_data_ptr = ((double const *)PyArray_DATA(__pyx_v_arr));
+1261: line_sender_error * err = NULL
__pyx_v_err = NULL;
1262:
+1263: if cnp.PyArray_FLAGS(arr) & cnp.NPY_ARRAY_C_CONTIGUOUS != 0:
__pyx_t_1 = ((PyArray_FLAGS(__pyx_v_arr) & NPY_ARRAY_C_CONTIGUOUS) != 0);
if (__pyx_t_1) {
/* … */
goto __pyx_L4;
}
+1264: if not line_sender_buffer_column_f64_arr_c_major(
__pyx_t_1 = (!line_sender_buffer_column_f64_arr_c_major(__pyx_v_self->_impl, __pyx_v_c_name, __pyx_v_rank, ((size_t const *)PyArray_DIMS(__pyx_v_arr)), __pyx_v_data_ptr, PyArray_SIZE(__pyx_v_arr), (&__pyx_v_err))); if (unlikely(__pyx_t_1)) { /* … */ }
1265: self._impl,
1266: c_name,
1267: rank,
1268: <const size_t*> cnp.PyArray_DIMS(arr),
1269: data_ptr,
1270: cnp.PyArray_SIZE(arr),
1271: &err):
+1272: raise 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(0, 1272, __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(0, 1272, __pyx_L1_error)
1273: else:
+1274: if not line_sender_buffer_column_f64_arr_byte_strides(
/*else*/ {
/* … */
__pyx_t_1 = (!line_sender_buffer_column_f64_arr_byte_strides(__pyx_v_self->_impl, __pyx_v_c_name, __pyx_v_rank, ((size_t const *)PyArray_DIMS(__pyx_v_arr)), ((Py_ssize_t const *)PyArray_STRIDES(__pyx_v_arr)), __pyx_v_data_ptr, PyArray_SIZE(__pyx_v_arr), (&__pyx_v_err)));
/* … */
if (unlikely(__pyx_t_1)) {
/* … */
}
}
__pyx_L4:;
1275: self._impl,
1276: c_name,
1277: rank,
1278: <const size_t*> cnp.PyArray_DIMS(arr),
1279: <const ssize_t*> cnp.PyArray_STRIDES(arr), # N.B.: Strides expressed as byte jumps
1280: data_ptr,
1281: cnp.PyArray_SIZE(arr),
1282: &err):
+1283: raise 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(0, 1283, __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(0, 1283, __pyx_L1_error)
1284:
+1285: cdef inline void_int _column_dt(
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column_dt(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, struct line_sender_column_name __pyx_v_c_name, PyDateTime_DateTime *__pyx_v_dt) {
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client.Buffer._column_dt", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1286: self, line_sender_column_name c_name, cp_datetime dt) except -1:
+1287: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
1288: # We limit ourselves to micros, since this is the maxium precision
1289: # exposed by the datetime library in Python.
+1290: if not line_sender_buffer_column_ts_micros(
__pyx_t_2 = (!line_sender_buffer_column_ts_micros(__pyx_v_self->_impl, __pyx_v_c_name, __pyx_t_1, (&__pyx_v_err)));
if (unlikely(__pyx_t_2)) {
/* … */
}
+1291: self._impl, c_name, datetime_to_micros(dt), &err):
__pyx_t_1 = __pyx_f_7questdb_7_client_datetime_to_micros(__pyx_v_dt); if (unlikely(__pyx_t_1 == ((int64_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1291, __pyx_L1_error)
+1292: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1292, __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(0, 1292, __pyx_L1_error)
1293:
+1294: cdef inline void_int _column(self, str name, object value) except -1:
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__column(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_value) {
struct line_sender_column_name __pyx_v_c_name;
PyObject *__pyx_v_valid = NULL;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__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.Buffer._column", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_valid);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1295: cdef line_sender_column_name c_name
+1296: str_to_column_name(self._cleared_b(), name, &c_name)
__pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__cleared_b(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1296, __pyx_L1_error) __pyx_t_2 = __pyx_f_7questdb_7_client_str_to_column_name(__pyx_t_1, __pyx_v_name, (&__pyx_v_c_name)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1296, __pyx_L1_error)
+1297: if PyBool_Check(<PyObject*>value):
__pyx_t_3 = PyBool_Check(((PyObject *)__pyx_v_value));
if (__pyx_t_3) {
/* … */
goto __pyx_L3;
}
+1298: self._column_bool(c_name, value)
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1298, __pyx_L1_error) __pyx_t_2 = __pyx_f_7questdb_7_client_6Buffer__column_bool(__pyx_v_self, __pyx_v_c_name, __pyx_t_3); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1298, __pyx_L1_error)
+1299: elif PyLong_CheckExact(<PyObject*>value):
__pyx_t_3 = PyLong_CheckExact(((PyObject *)__pyx_v_value));
if (__pyx_t_3) {
/* … */
goto __pyx_L3;
}
+1300: self._column_i64(c_name, value)
__pyx_t_4 = __Pyx_PyLong_As_int64_t(__pyx_v_value); if (unlikely((__pyx_t_4 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1300, __pyx_L1_error) __pyx_t_2 = __pyx_f_7questdb_7_client_6Buffer__column_i64(__pyx_v_self, __pyx_v_c_name, __pyx_t_4); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1300, __pyx_L1_error)
+1301: elif PyFloat_CheckExact(<PyObject*>value):
__pyx_t_3 = PyFloat_CheckExact(((PyObject *)__pyx_v_value));
if (__pyx_t_3) {
/* … */
goto __pyx_L3;
}
+1302: self._column_f64(c_name, value)
__pyx_t_5 = __Pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1302, __pyx_L1_error) __pyx_t_2 = __pyx_f_7questdb_7_client_6Buffer__column_f64(__pyx_v_self, __pyx_v_c_name, __pyx_t_5); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1302, __pyx_L1_error)
+1303: elif PyUnicode_CheckExact(<PyObject*>value):
__pyx_t_3 = PyUnicode_CheckExact(((PyObject *)__pyx_v_value));
if (__pyx_t_3) {
/* … */
goto __pyx_L3;
}
+1304: self._column_str(c_name, value)
__pyx_t_6 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_6);
if (!(likely(PyUnicode_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_6))) __PYX_ERR(0, 1304, __pyx_L1_error)
__pyx_t_2 = __pyx_f_7questdb_7_client_6Buffer__column_str(__pyx_v_self, __pyx_v_c_name, ((PyObject*)__pyx_t_6)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1304, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1305: elif isinstance(value, TimestampMicros):
__pyx_t_3 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampMicros);
if (__pyx_t_3) {
/* … */
goto __pyx_L3;
}
+1306: self._column_ts_micros(c_name, value)
if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampMicros))))) __PYX_ERR(0, 1306, __pyx_L1_error) __pyx_t_2 = __pyx_f_7questdb_7_client_6Buffer__column_ts_micros(__pyx_v_self, __pyx_v_c_name, ((struct __pyx_obj_7questdb_7_client_TimestampMicros *)__pyx_v_value)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1306, __pyx_L1_error)
+1307: elif isinstance(value, TimestampNanos):
__pyx_t_3 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampNanos);
if (__pyx_t_3) {
/* … */
goto __pyx_L3;
}
+1308: self._column_ts_nanos(c_name, value)
if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampNanos))))) __PYX_ERR(0, 1308, __pyx_L1_error) __pyx_t_2 = __pyx_f_7questdb_7_client_6Buffer__column_ts_nanos(__pyx_v_self, __pyx_v_c_name, ((struct __pyx_obj_7questdb_7_client_TimestampNanos *)__pyx_v_value)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1308, __pyx_L1_error)
+1309: elif PyArray_CheckExact(<PyObject *> value):
__pyx_t_3 = PyArray_CheckExact(((PyObject *)__pyx_v_value));
if (__pyx_t_3) {
/* … */
goto __pyx_L3;
}
+1310: self._column_numpy(c_name, value)
if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1310, __pyx_L1_error) __pyx_t_2 = __pyx_f_7questdb_7_client_6Buffer__column_numpy(__pyx_v_self, __pyx_v_c_name, ((PyArrayObject *)__pyx_v_value)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1310, __pyx_L1_error)
+1311: elif isinstance(value, cp_datetime):
__pyx_t_3 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime);
if (__pyx_t_3) {
/* … */
goto __pyx_L3;
}
+1312: self._column_dt(c_name, value)
if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime))))) __PYX_ERR(0, 1312, __pyx_L1_error) __pyx_t_2 = __pyx_f_7questdb_7_client_6Buffer__column_dt(__pyx_v_self, __pyx_v_c_name, ((PyDateTime_DateTime *)__pyx_v_value)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1312, __pyx_L1_error)
+1313: elif isinstance(value, Decimal):
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_Decimal); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = PyObject_IsInstance(__pyx_v_value, __pyx_t_6); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1313, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (likely(__pyx_t_3)) { /* … */ goto __pyx_L3; }
+1314: self._column_decimal(c_name, value)
__pyx_t_2 = __pyx_f_7questdb_7_client_6Buffer__column_decimal(__pyx_v_self, __pyx_v_c_name, __pyx_v_value); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1314, __pyx_L1_error)
1315: else:
+1316: valid = ', '.join((
/*else*/ {
/* … */
__pyx_t_6 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__22, __pyx_mstate_global->__pyx_tuple[5]); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1316, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_v_valid = ((PyObject*)__pyx_t_6);
__pyx_t_6 = 0;
+1317: 'bool',
__pyx_mstate_global->__pyx_tuple[5] = PyTuple_Pack(9, __pyx_mstate_global->__pyx_n_u_bool, __pyx_mstate_global->__pyx_n_u_int, __pyx_mstate_global->__pyx_n_u_float, __pyx_mstate_global->__pyx_n_u_str, __pyx_mstate_global->__pyx_n_u_TimestampMicros_2, __pyx_mstate_global->__pyx_n_u_TimestampNanos_2, __pyx_mstate_global->__pyx_kp_u_datetime_datetime, __pyx_mstate_global->__pyx_kp_u_numpy_ndarray, __pyx_mstate_global->__pyx_kp_u_decimal_Decimal); if (unlikely(!__pyx_mstate_global->__pyx_tuple[5])) __PYX_ERR(0, 1317, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[5]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[5]);
1318: 'int',
1319: 'float',
1320: 'str',
1321: 'TimestampMicros',
1322: 'TimestampNanos',
1323: 'datetime.datetime',
1324: 'numpy.ndarray',
1325: 'decimal.Decimal'))
+1326: raise TypeError(
__pyx_t_7 = NULL;
+1327: f'Unsupported type: {_fqn(type(value))}. Must be one of: {valid}')
__pyx_t_8 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_value)))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyUnicode_Unicode(__pyx_v_valid); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10[0] = __pyx_mstate_global->__pyx_kp_u_Unsupported_type; __pyx_t_10[1] = __pyx_t_9; __pyx_t_10[2] = __pyx_mstate_global->__pyx_kp_u_Must_be_one_of; __pyx_t_10[3] = __pyx_t_8; __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_10, 4, 18 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_12 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_11}; __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 1326, __pyx_L1_error) } __pyx_L3:;
1328:
+1329: cdef inline void_int _may_trigger_row_complete(self) except -1:
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__may_trigger_row_complete(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) {
CYTHON_UNUSED struct line_sender_error *__pyx_v_err;
PyObject *__pyx_v_sender;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.Buffer._may_trigger_row_complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1330: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+1331: cdef PyObject* sender = NULL
__pyx_v_sender = NULL;
+1332: if self._row_complete_sender != None:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_self->_row_complete_sender, Py_None, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1332, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1332, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+1333: sender = PyWeakref_GetObject(self._row_complete_sender)
__pyx_t_1 = __pyx_v_self->_row_complete_sender;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_3 = PyWeakref_GetObject(__pyx_t_1); if (unlikely(__pyx_t_3 == ((void *)NULL))) __PYX_ERR(0, 1333, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_sender = __pyx_t_3;
+1334: if sender != NULL and <object>sender is not None:
__pyx_t_4 = (__pyx_v_sender != NULL);
if (__pyx_t_4) {
} else {
__pyx_t_2 = __pyx_t_4;
goto __pyx_L5_bool_binop_done;
}
__pyx_t_4 = (((PyObject *)__pyx_v_sender) != Py_None);
__pyx_t_2 = __pyx_t_4;
__pyx_L5_bool_binop_done:;
if (__pyx_t_2) {
/* … */
}
+1335: may_flush_on_row_complete(self, <Sender><object>sender)
__pyx_t_5 = __pyx_f_7questdb_7_client_may_flush_on_row_complete(__pyx_v_self, ((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_sender)); if (unlikely(__pyx_t_5 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1335, __pyx_L1_error)
1336:
+1337: cdef inline void_int _at_ts_us(self, TimestampMicros ts) except -1:
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__at_ts_us(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, struct __pyx_obj_7questdb_7_client_TimestampMicros *__pyx_v_ts) {
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.Buffer._at_ts_us", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1338: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+1339: if not line_sender_buffer_at_micros(self._impl, ts._value, &err):
__pyx_t_1 = (!line_sender_buffer_at_micros(__pyx_v_self->_impl, __pyx_v_ts->_value, (&__pyx_v_err)));
if (unlikely(__pyx_t_1)) {
/* … */
}
+1340: raise 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(0, 1340, __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(0, 1340, __pyx_L1_error)
1341:
+1342: cdef inline void_int _at_ts_ns(self, TimestampNanos ts) except -1:
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__at_ts_ns(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, struct __pyx_obj_7questdb_7_client_TimestampNanos *__pyx_v_ts) {
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.Buffer._at_ts_ns", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1343: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+1344: if not line_sender_buffer_at_nanos(self._impl, ts._value, &err):
__pyx_t_1 = (!line_sender_buffer_at_nanos(__pyx_v_self->_impl, __pyx_v_ts->_value, (&__pyx_v_err)));
if (unlikely(__pyx_t_1)) {
/* … */
}
+1345: raise 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(0, 1345, __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(0, 1345, __pyx_L1_error)
1346:
+1347: cdef inline void_int _at_dt(self, cp_datetime dt) except -1:
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__at_dt(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, PyDateTime_DateTime *__pyx_v_dt) {
int64_t __pyx_v_value;
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client.Buffer._at_dt", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1348: cdef int64_t value = datetime_to_micros(dt)
__pyx_t_1 = __pyx_f_7questdb_7_client_datetime_to_micros(__pyx_v_dt); if (unlikely(__pyx_t_1 == ((int64_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1348, __pyx_L1_error) __pyx_v_value = __pyx_t_1;
+1349: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+1350: if not line_sender_buffer_at_micros(self._impl, value, &err):
__pyx_t_2 = (!line_sender_buffer_at_micros(__pyx_v_self->_impl, __pyx_v_value, (&__pyx_v_err)));
if (unlikely(__pyx_t_2)) {
/* … */
}
+1351: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1351, __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(0, 1351, __pyx_L1_error)
1352:
+1353: cdef inline void_int _at_now(self) except -1:
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__at_now(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self) {
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.Buffer._at_now", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1354: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+1355: if not line_sender_buffer_at_now(self._impl, &err):
__pyx_t_1 = (!line_sender_buffer_at_now(__pyx_v_self->_impl, (&__pyx_v_err)));
if (unlikely(__pyx_t_1)) {
/* … */
}
+1356: raise 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(0, 1356, __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(0, 1356, __pyx_L1_error)
1357:
+1358: cdef inline void_int _at(self, object ts) except -1:
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__at(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, PyObject *__pyx_v_ts) {
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
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_AddTraceback("questdb._client.Buffer._at", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1359: if ts is None:
__pyx_t_1 = (__pyx_v_ts == Py_None);
if (__pyx_t_1) {
/* … */
goto __pyx_L3;
}
+1360: self._at_now()
__pyx_t_2 = __pyx_f_7questdb_7_client_6Buffer__at_now(__pyx_v_self); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1360, __pyx_L1_error)
+1361: elif isinstance(ts, TimestampMicros):
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_ts, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampMicros);
if (__pyx_t_1) {
/* … */
goto __pyx_L3;
}
+1362: self._at_ts_us(ts)
if (!(likely(((__pyx_v_ts) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_ts, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampMicros))))) __PYX_ERR(0, 1362, __pyx_L1_error) __pyx_t_2 = __pyx_f_7questdb_7_client_6Buffer__at_ts_us(__pyx_v_self, ((struct __pyx_obj_7questdb_7_client_TimestampMicros *)__pyx_v_ts)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1362, __pyx_L1_error)
+1363: elif isinstance(ts, TimestampNanos):
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_ts, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampNanos);
if (__pyx_t_1) {
/* … */
goto __pyx_L3;
}
+1364: self._at_ts_ns(ts)
if (!(likely(((__pyx_v_ts) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_ts, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampNanos))))) __PYX_ERR(0, 1364, __pyx_L1_error) __pyx_t_2 = __pyx_f_7questdb_7_client_6Buffer__at_ts_ns(__pyx_v_self, ((struct __pyx_obj_7questdb_7_client_TimestampNanos *)__pyx_v_ts)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1364, __pyx_L1_error)
+1365: elif isinstance(ts, cp_datetime):
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_ts, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime);
if (likely(__pyx_t_1)) {
/* … */
goto __pyx_L3;
}
+1366: self._at_dt(ts)
if (!(likely(((__pyx_v_ts) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_ts, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime))))) __PYX_ERR(0, 1366, __pyx_L1_error) __pyx_t_2 = __pyx_f_7questdb_7_client_6Buffer__at_dt(__pyx_v_self, ((PyDateTime_DateTime *)__pyx_v_ts)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1366, __pyx_L1_error)
1367: else:
+1368: raise TypeError(
/*else*/ {
__pyx_t_4 = NULL;
+1369: f'Unsupported type: {_fqn(type(ts))}. Must be one of: ' +
__pyx_t_5 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_ts)))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyUnicode_Unicode(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7[0] = __pyx_mstate_global->__pyx_kp_u_Unsupported_type; __pyx_t_7[1] = __pyx_t_6; __pyx_t_7[2] = __pyx_mstate_global->__pyx_kp_u_Must_be_one_of_TimestampNanos_d; __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_7, 3, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 48, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_8 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1368, __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(0, 1368, __pyx_L1_error) } __pyx_L3:;
1370: 'TimestampNanos, datetime, None')
1371:
+1372: cdef void_int _row(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Buffer__row(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, int __pyx_v_allow_auto_flush, PyObject *__pyx_v_table_name, struct __pyx_opt_args_7questdb_7_client_6Buffer__row *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("questdb._client.Buffer._row", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_name);
__Pyx_XDECREF(__pyx_v_value);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_7questdb_7_client_6Buffer__row {
int __pyx_n;
PyObject *symbols;
PyObject *columns;
PyObject *at;
int keep_marker;
};
1373: self,
1374: bint allow_auto_flush,
1375: str table_name,
+1376: dict symbols=None,
PyObject *__pyx_v_symbols = ((PyObject*)Py_None);
+1377: dict columns=None,
PyObject *__pyx_v_columns = ((PyObject*)Py_None);
+1378: object at=None,
PyObject *__pyx_v_at = ((PyObject *)Py_None);
+1379: bint keep_marker=False) except -1:
int __pyx_v_keep_marker = ((int)0);
int __pyx_v_wrote_fields;
PyObject *__pyx_v_name = NULL;
PyObject *__pyx_v_value = NULL;
__pyx_t_7questdb_7_client_void_int __pyx_r;
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_symbols = __pyx_optional_args->symbols;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_columns = __pyx_optional_args->columns;
if (__pyx_optional_args->__pyx_n > 2) {
__pyx_v_at = __pyx_optional_args->at;
if (__pyx_optional_args->__pyx_n > 3) {
__pyx_v_keep_marker = __pyx_optional_args->keep_marker;
}
}
}
}
}
1380: """
1381: Add a row to the buffer.
1382: """
+1383: cdef bint wrote_fields = False
__pyx_v_wrote_fields = 0;
+1384: self._check_impl()
__pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__check_impl(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1384, __pyx_L1_error)
+1385: self._set_marker()
__pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__set_marker(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1385, __pyx_L1_error)
+1386: 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_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
__pyx_L5_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_end:;
}
+1387: self._table(table_name)
__pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__table(__pyx_v_self, __pyx_v_table_name); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1387, __pyx_L3_error)
+1388: if symbols is not None:
__pyx_t_5 = (__pyx_v_symbols != ((PyObject*)Py_None));
if (__pyx_t_5) {
/* … */
}
+1389: for name, value in symbols.items():
__pyx_t_7 = 0;
if (unlikely(__pyx_v_symbols == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
__PYX_ERR(0, 1389, __pyx_L3_error)
}
__pyx_t_10 = __Pyx_dict_iterator(__pyx_v_symbols, 1, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_8), (&__pyx_t_9)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1389, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_6);
__pyx_t_6 = __pyx_t_10;
__pyx_t_10 = 0;
while (1) {
__pyx_t_12 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_8, &__pyx_t_7, &__pyx_t_10, &__pyx_t_11, NULL, __pyx_t_9);
if (unlikely(__pyx_t_12 == 0)) break;
if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 1389, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_GOTREF(__pyx_t_11);
__Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_10);
__pyx_t_10 = 0;
__Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_11);
__pyx_t_11 = 0;
+1390: if value is not None:
__pyx_t_5 = (__pyx_v_value != Py_None);
if (__pyx_t_5) {
/* … */
}
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1391: self._symbol(name, value)
__pyx_t_11 = __pyx_v_name;
__Pyx_INCREF(__pyx_t_11);
if (!(likely(PyUnicode_CheckExact(__pyx_t_11))||((__pyx_t_11) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_11))) __PYX_ERR(0, 1391, __pyx_L3_error)
__pyx_t_10 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_10);
if (!(likely(PyUnicode_CheckExact(__pyx_t_10))||((__pyx_t_10) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_10))) __PYX_ERR(0, 1391, __pyx_L3_error)
__pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__symbol(__pyx_v_self, ((PyObject*)__pyx_t_11), ((PyObject*)__pyx_t_10)); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1391, __pyx_L3_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+1392: wrote_fields = True
__pyx_v_wrote_fields = 1;
+1393: if columns is not None:
__pyx_t_5 = (__pyx_v_columns != ((PyObject*)Py_None));
if (__pyx_t_5) {
/* … */
}
+1394: for name, value in columns.items():
__pyx_t_8 = 0;
if (unlikely(__pyx_v_columns == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
__PYX_ERR(0, 1394, __pyx_L3_error)
}
__pyx_t_10 = __Pyx_dict_iterator(__pyx_v_columns, 1, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_7), (&__pyx_t_9)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1394, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_6);
__pyx_t_6 = __pyx_t_10;
__pyx_t_10 = 0;
while (1) {
__pyx_t_12 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_7, &__pyx_t_8, &__pyx_t_10, &__pyx_t_11, NULL, __pyx_t_9);
if (unlikely(__pyx_t_12 == 0)) break;
if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 1394, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_GOTREF(__pyx_t_11);
__Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_10);
__pyx_t_10 = 0;
__Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_11);
__pyx_t_11 = 0;
+1395: if value is not None:
__pyx_t_5 = (__pyx_v_value != Py_None);
if (__pyx_t_5) {
/* … */
}
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1396: self._column(name, value)
__pyx_t_11 = __pyx_v_name;
__Pyx_INCREF(__pyx_t_11);
if (!(likely(PyUnicode_CheckExact(__pyx_t_11))||((__pyx_t_11) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_11))) __PYX_ERR(0, 1396, __pyx_L3_error)
__pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__column(__pyx_v_self, ((PyObject*)__pyx_t_11), __pyx_v_value); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1396, __pyx_L3_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+1397: wrote_fields = True
__pyx_v_wrote_fields = 1;
+1398: if wrote_fields:
if (__pyx_v_wrote_fields) {
/* … */
goto __pyx_L17;
}
+1399: self._at(at if not isinstance(at, ServerTimestampType) else None)
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_ServerTimestampType); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1399, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_5 = PyObject_IsInstance(__pyx_v_at, __pyx_t_11); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 1399, __pyx_L3_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_13 = (!__pyx_t_5); if (__pyx_t_13) { __Pyx_INCREF(__pyx_v_at); __pyx_t_6 = __pyx_v_at; } else { __Pyx_INCREF(Py_None); __pyx_t_6 = Py_None; } __pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__at(__pyx_v_self, __pyx_t_6); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1399, __pyx_L3_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1400: if not keep_marker:
__pyx_t_13 = (!__pyx_v_keep_marker);
if (__pyx_t_13) {
/* … */
}
+1401: self._clear_marker()
__pyx_t_6 = __pyx_f_7questdb_7_client_6Buffer__clear_marker(__pyx_v_self); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1401, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
1402: else:
+1403: self._rewind_to_marker()
/*else*/ {
__pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__rewind_to_marker(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1403, __pyx_L3_error)
}
__pyx_L17:;
+1404: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client.Buffer._row", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_11, &__pyx_t_10) < 0) __PYX_ERR(0, 1404, __pyx_L5_except_error)
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_11);
__Pyx_XGOTREF(__pyx_t_10);
+1405: self._rewind_to_marker()
__pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__rewind_to_marker(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1405, __pyx_L5_except_error)
+1406: raise
__Pyx_GIVEREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_ErrRestoreWithState(__pyx_t_6, __pyx_t_11, __pyx_t_10); __pyx_t_6 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; __PYX_ERR(0, 1406, __pyx_L5_except_error) }
+1407: if wrote_fields and allow_auto_flush:
if (__pyx_v_wrote_fields) {
} else {
__pyx_t_13 = __pyx_v_wrote_fields;
goto __pyx_L22_bool_binop_done;
}
__pyx_t_13 = __pyx_v_allow_auto_flush;
__pyx_L22_bool_binop_done:;
if (__pyx_t_13) {
/* … */
}
+1408: self._may_trigger_row_complete()
__pyx_t_1 = __pyx_f_7questdb_7_client_6Buffer__may_trigger_row_complete(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1408, __pyx_L1_error)
1409:
+1410: def row(
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Buffer_19row(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_6Buffer_18row, "\n Add a single row (line) to the buffer.\n\n .. code-block:: python\n\n # All fields specified.\n buffer.row(\n 'table_name',\n symbols={'sym1': 'abc', 'sym2': 'def', 'sym3': None},\n columns={\n 'col1': True,\n 'col2': 123,\n 'col3': 3.14,\n 'col4': 'xyz',\n 'col5': TimestampMicros(123456789),\n 'col6': datetime(2019, 1, 1, 12, 0, 0),\n 'col7': numpy.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]),\n 'col8': None},\n at=TimestampNanos(123456789))\n\n # Only symbols specified. Designated timestamp assigned by the db.\n buffer.row(\n 'table_name',\n symbols={'sym1': 'abc', 'sym2': 'def'}, at=Server.Timestamp)\n\n # Float columns and timestamp specified as `datetime.datetime`.\n # Pay special attention to the timezone, which if unspecified is\n # interpreted as UTC.\n buffer.row(\n 'sensor data',\n columns={\n 'temperature': 24.5,\n 'humidity': 0.5},\n at=datetime.datetime.now(tz=datetime.timezone.utc))\n\n\n Python strings passed as values to ``symbols`` are going to be encoded\n as the ``SYMBOL`` type in QuestDB, whilst Python strings passed as\n values to ``columns`` are going to be encoded as the ``STRING`` type.\n\n Refer to the\n `QuestDB documentation <https://questdb.com/docs/concept/symbol/>`_ to\n understand the difference between the ``SYMBOL`` and ``STRING`` types\n (TL;DR: symbols are interned strings).\n\n Column values can be specified with Python types directly and map as so:\n\n .. list-table::\n :header-rows: 1\n\n * - Python type\n - Seria""lized as ILP type\n * - ``bool``\n - `BOOLEAN <https://questdb.com/docs/reference/api/ilp/columnset-types#boolean>`_\n * - ``decimal``\n - `DECIMAL <https://questdb.com/docs/reference/api/ilp/columnset-types#decimal>`_\n * - ``int``\n - `INTEGER <https://questdb.com/docs/reference/api/ilp/columnset-types#integer>`_\n * - ``float``\n - `FLOAT <https://questdb.com/docs/reference/api/ilp/columnset-types#float>`_\n * - ``str``\n - `STRING <https://questdb.com/docs/reference/api/ilp/columnset-types#string>`_\n * - ``numpy.ndarray``\n - `ARRAY <https://questdb.com/docs/reference/api/ilp/columnset-types#array>`_\n * - ``datetime.datetime`` and ``TimestampMicros``\n - `TIMESTAMP <https://questdb.com/docs/reference/api/ilp/columnset-types#timestamp>`_\n * - ``None``\n - *Column is skipped and not serialized.*\n\n **Note**: Support for NumPy arrays (``numpy.array``) requires QuestDB server version 9.0.0 or higher.\n\n If the destination table was already created, then the columns types\n will be cast to the types of the existing columns whenever possible\n (Refer to the QuestDB documentation pages linked above).\n\n Adding a row can trigger auto-flushing behaviour.\n\n :param table_name: The name of the table to which the row belongs.\n :param symbols: A dictionary of symbol column names to ``str`` values.\n As a convenience, you can also pass a ``None`` value which will\n have the same effect as skipping the key: If the column already\n existed, it will be recorded as ``NULL``, otherwise it will not be\n created.\n :param columns: A dictionary of column names to ``bool``, ``int``,\n ``float``, ``str``, ``TimestampMicros`` or ``datetime`` values.\n As a convenience, y""ou can also pass a ``None`` value which will\n have the same effect as skipping the key: If the column already\n existed, it will be recorded as ``NULL``, otherwise it will not be\n created.\n :param at: The timestamp of the row. This is required!\n If ``ServerTimestamp``, timestamp is assigned by QuestDB.\n If ``datetime``, the timestamp is converted to nanoseconds.\n A nanosecond unix epoch timestamp can be passed\n explicitly as a ``TimestampNanos`` object.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Buffer_19row = {"row", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Buffer_19row, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Buffer_18row}; static PyObject *__pyx_pw_7questdb_7_client_6Buffer_19row(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_table_name = 0; PyObject *__pyx_v_symbols = 0; PyObject *__pyx_v_columns = 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("row (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_table_name,&__pyx_mstate_global->__pyx_n_u_at,&__pyx_mstate_global->__pyx_n_u_symbols,&__pyx_mstate_global->__pyx_n_u_columns,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(0, 1410, __pyx_L3_error) if (likely(__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(0, 1410, __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, "row", 0) < (0)) __PYX_ERR(0, 1410, __pyx_L3_error) /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Buffer_18row(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, PyObject *__pyx_v_table_name, PyObject *__pyx_v_symbols, PyObject *__pyx_v_columns, PyObject *__pyx_v_at) { 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_AddTraceback("questdb._client.Buffer.row", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); /* … */ __pyx_t_16 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_table_name, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(0, 1410, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_symbols, __pyx_mstate_global->__pyx_kp_u_Optional_Dict_str_Optional_str) < (0)) __PYX_ERR(0, 1410, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_columns, __pyx_mstate_global->__pyx_kp_u_Optional_Dict_str_Union_None_boo) < (0)) __PYX_ERR(0, 1410, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_at, __pyx_mstate_global->__pyx_kp_u_Union_ServerTimestampType_Timest) < (0)) __PYX_ERR(0, 1410, __pyx_L1_error) __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_6Buffer_19row, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Buffer_row, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[68])); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_13, __pyx_t_17); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_16); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Buffer, __pyx_mstate_global->__pyx_n_u_row, __pyx_t_13) < (0)) __PYX_ERR(0, 1410, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
1411: self,
1412: table_name: str,
1413: *,
+1414: symbols: Optional[Dict[str, Optional[str]]]=None,
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_symbols, Py_None) < (0)) __PYX_ERR(0, 1410, __pyx_L1_error)
1415: columns: Optional[Dict[
1416: str,
1417: Union[None, bool, int, float, str, TimestampMicros, TimestampNanos, datetime.datetime, numpy.ndarray, Decimal]]
+1418: ]=None,
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject*)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("row", 1, 1, 1, i); __PYX_ERR(0, 1410, __pyx_L3_error) } } for (Py_ssize_t i = 1; i < 2; i++) { if (unlikely(!values[i])) { __Pyx_RaiseKeywordRequired("row", *(__pyx_pyargnames[i - 0])); __PYX_ERR(0, 1410, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { __Pyx_RaiseKeywordRequired("row", __pyx_mstate_global->__pyx_n_u_at); __PYX_ERR(0, 1410, __pyx_L3_error) } __pyx_v_table_name = ((PyObject*)values[0]); __pyx_v_at = values[1]; __pyx_v_symbols = ((PyObject*)values[2]); __pyx_v_columns = ((PyObject*)values[3]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("row", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1410, __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.Buffer.row", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_table_name), (&PyUnicode_Type), 0, "table_name", 2))) __PYX_ERR(0, 1412, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_symbols), (&PyDict_Type), 1, "symbols", 2))) __PYX_ERR(0, 1414, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_columns), (&PyDict_Type), 1, "columns", 2))) __PYX_ERR(0, 1415, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_6Buffer_18row(((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_v_self), __pyx_v_table_name, __pyx_v_symbols, __pyx_v_columns, __pyx_v_at); /* … */ if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_columns, Py_None) < (0)) __PYX_ERR(0, 1410, __pyx_L1_error)
1419: at: Union[ServerTimestampType, TimestampNanos, datetime.datetime]):
1420: """
1421: Add a single row (line) to the buffer.
1422:
1423: .. code-block:: python
1424:
1425: # All fields specified.
1426: buffer.row(
1427: 'table_name',
1428: symbols={'sym1': 'abc', 'sym2': 'def', 'sym3': None},
1429: columns={
1430: 'col1': True,
1431: 'col2': 123,
1432: 'col3': 3.14,
1433: 'col4': 'xyz',
1434: 'col5': TimestampMicros(123456789),
1435: 'col6': datetime(2019, 1, 1, 12, 0, 0),
1436: 'col7': numpy.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]),
1437: 'col8': None},
1438: at=TimestampNanos(123456789))
1439:
1440: # Only symbols specified. Designated timestamp assigned by the db.
1441: buffer.row(
1442: 'table_name',
1443: symbols={'sym1': 'abc', 'sym2': 'def'}, at=Server.Timestamp)
1444:
1445: # Float columns and timestamp specified as `datetime.datetime`.
1446: # Pay special attention to the timezone, which if unspecified is
1447: # interpreted as UTC.
1448: buffer.row(
1449: 'sensor data',
1450: columns={
1451: 'temperature': 24.5,
1452: 'humidity': 0.5},
1453: at=datetime.datetime.now(tz=datetime.timezone.utc))
1454:
1455:
1456: Python strings passed as values to ``symbols`` are going to be encoded
1457: as the ``SYMBOL`` type in QuestDB, whilst Python strings passed as
1458: values to ``columns`` are going to be encoded as the ``STRING`` type.
1459:
1460: Refer to the
1461: `QuestDB documentation <https://questdb.com/docs/concept/symbol/>`_ to
1462: understand the difference between the ``SYMBOL`` and ``STRING`` types
1463: (TL;DR: symbols are interned strings).
1464:
1465: Column values can be specified with Python types directly and map as so:
1466:
1467: .. list-table::
1468: :header-rows: 1
1469:
1470: * - Python type
1471: - Serialized as ILP type
1472: * - ``bool``
1473: - `BOOLEAN <https://questdb.com/docs/reference/api/ilp/columnset-types#boolean>`_
1474: * - ``decimal``
1475: - `DECIMAL <https://questdb.com/docs/reference/api/ilp/columnset-types#decimal>`_
1476: * - ``int``
1477: - `INTEGER <https://questdb.com/docs/reference/api/ilp/columnset-types#integer>`_
1478: * - ``float``
1479: - `FLOAT <https://questdb.com/docs/reference/api/ilp/columnset-types#float>`_
1480: * - ``str``
1481: - `STRING <https://questdb.com/docs/reference/api/ilp/columnset-types#string>`_
1482: * - ``numpy.ndarray``
1483: - `ARRAY <https://questdb.com/docs/reference/api/ilp/columnset-types#array>`_
1484: * - ``datetime.datetime`` and ``TimestampMicros``
1485: - `TIMESTAMP <https://questdb.com/docs/reference/api/ilp/columnset-types#timestamp>`_
1486: * - ``None``
1487: - *Column is skipped and not serialized.*
1488:
1489: **Note**: Support for NumPy arrays (``numpy.array``) requires QuestDB server version 9.0.0 or higher.
1490:
1491: If the destination table was already created, then the columns types
1492: will be cast to the types of the existing columns whenever possible
1493: (Refer to the QuestDB documentation pages linked above).
1494:
1495: Adding a row can trigger auto-flushing behaviour.
1496:
1497: :param table_name: The name of the table to which the row belongs.
1498: :param symbols: A dictionary of symbol column names to ``str`` values.
1499: As a convenience, you can also pass a ``None`` value which will
1500: have the same effect as skipping the key: If the column already
1501: existed, it will be recorded as ``NULL``, otherwise it will not be
1502: created.
1503: :param columns: A dictionary of column names to ``bool``, ``int``,
1504: ``float``, ``str``, ``TimestampMicros`` or ``datetime`` values.
1505: As a convenience, you can also pass a ``None`` value which will
1506: have the same effect as skipping the key: If the column already
1507: existed, it will be recorded as ``NULL``, otherwise it will not be
1508: created.
1509: :param at: The timestamp of the row. This is required!
1510: If ``ServerTimestamp``, timestamp is assigned by QuestDB.
1511: If ``datetime``, the timestamp is converted to nanoseconds.
1512: A nanosecond unix epoch timestamp can be passed
1513: explicitly as a ``TimestampNanos`` object.
1514: """
+1515: if at is None:
__pyx_t_1 = (__pyx_v_at == Py_None);
if (unlikely(__pyx_t_1)) {
/* … */
}
+1516: 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(0, 1516, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+1517: QuestDBErrorCode.InvalidTimestamp,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_InvalidTimestamp); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1517, __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_at_must_be_of_type_TimestampNan}; __pyx_t_2 = __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_2)) __PYX_ERR(0, 1516, __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(0, 1516, __pyx_L1_error)
1518: "`at` must be of type TimestampNanos, datetime, or ServerTimestamp"
1519: )
+1520: self._row(
__pyx_t_9.__pyx_n = 3;
__pyx_t_9.symbols = __pyx_v_symbols;
__pyx_t_9.columns = __pyx_v_columns;
__pyx_t_9.at = __pyx_v_at;
__pyx_t_8 = ((struct __pyx_vtabstruct_7questdb_7_client_Buffer *)__pyx_v_self->__pyx_vtab)->_row(__pyx_v_self, 1, __pyx_v_table_name, &__pyx_t_9); if (unlikely(__pyx_t_8 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1520, __pyx_L1_error)
1521: True, # allow_auto_flush
1522: table_name,
1523: symbols,
1524: columns,
1525: at)
+1526: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
1527:
+1528: def dataframe(
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Buffer_21dataframe(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_6Buffer_20dataframe, "\n Add a pandas DataFrame to the buffer.\n\n Also see the :func:`Sender.dataframe <questdb.Sender.dataframe>` method if you're\n not using the buffer explicitly. It supports the same parameters\n and also supports auto-flushing.\n\n Requires ``pandas`` and ``numpy``. ``pyarrow`` is only needed\n when the frame contains ``pd.ArrowDtype`` / ``pd.Categorical`` /\n ``string`` dtype columns \342\200\224 purely NumPy / object dtypes work\n without it.\n\n Adding a dataframe can trigger auto-flushing behaviour,\n even between rows of the same dataframe. To avoid this, you can\n use HTTP and transactions (see :func:`Sender.transaction <questdb.Sender.transaction>`).\n\n :param df: The pandas DataFrame to serialize to the buffer.\n :type df: pandas.DataFrame\n\n :param table_name: The name of the table to which the rows belong.\n\n If ``None``, the table name is taken from the ``table_name_col``\n parameter. If both ``table_name`` and ``table_name_col`` are\n ``None``, the table name is taken from the DataFrame's index\n name (``df.index.name`` attribute).\n :type table_name: str or None\n\n :param table_name_col: The name or index of the column in the DataFrame\n that contains the table name.\n \n If ``None``, the table name is taken\n from the ``table_name`` parameter. If both ``table_name`` and\n ``table_name_col`` are ``None``, the table name is taken from the\n DataFrame's index name (``df.index.name`` attribute).\n\n If ``table_name_col`` is an integer, it is interpreted as the index\n of the column starting from ``0``. The index of the column can be\n negative, in which case it is interpreted as an offset from the end\n of the DataFrame. E.g. ``-1`` is the last column.\n :type table_name_col: str or ""int or None\n\n :param symbols: The columns to be serialized as symbols.\n \n If ``'auto'`` (default), all columns of dtype ``'categorical'`` are\n serialized as symbols. If ``True``, all ``str`` columns are\n serialized as symbols. If ``False``, no columns are serialized as\n symbols.\n \n The list of symbols can also be specified explicitly as a ``list``\n of column names (``str``) or indices (``int``). Integer indices\n start at ``0`` and can be negative, offset from the end of the\n DataFrame. E.g. ``-1`` is the last column.\n\n Only columns containing strings can be serialized as symbols.\n\n :type symbols: str or bool or list[str] or list[int]\n\n :param at: The designated timestamp of the rows.\n \n You can specify a single value for all rows or column name or index.\n If ``ServerTimestamp``, timestamp is assigned by the server for all rows.\n To pass in a timestamp explicitly as an integer use the\n ``TimestampNanos`` wrapper type. To get the current timestamp,\n use ``TimestampNanos.now()``.\n When passing a ``datetime.datetime`` object, the timestamp is\n converted to nanoseconds.\n A naive ``datetime`` object is interpreted as UTC \342\200\224 never\n your machine's local timezone \342\200\224 and a ``UserWarning`` is\n emitted once per process\n (call ``datetime.datetime.now(tz=datetime.timezone.utc)``\n for the current timestamp to\n avoid bugs).\n\n To specify a different timestamp for each row, pass in a column name\n (``str``) or index (``int``, 0-based index, negative index\n supported): In this case, the column needs to be of dtype\n ``datetime64[ns]`` (assumed to be in the **UTC timezone** and not\n local, due ""to differences in Pandas and Python datetime handling) or\n ``datetime64[ns, tz]``. When a timezone is specified in the column,\n it is converted to UTC automatically.\n\n A timestamp column can also contain ``None`` values. The server will\n assign the current timestamp to those rows.\n\n **Note**: All timestamps are always converted to nanoseconds and in\n the UTC timezone. Timezone information is dropped before sending and\n QuestDB will not store any timezone information.\n :type at: TimestampNanos, datetime.datetime, int or str or None\n\n **Note**: It is an error to specify both ``table_name`` and\n ``table_name_col``.\n\n **Note**: The \"index\" column of the DataFrame is never serialized,\n even if it is named.\n\n Example:\n\n .. code-block:: python\n\n import pandas as pd\n import questdb as qi\n\n buf = qi.ingress.Buffer(protocol_version=2)\n # ...\n\n df = pd.DataFrame({\n 'location': ['London', 'Managua', 'London'],\n 'temperature': [24.5, 35.0, 25.5],\n 'humidity': [0.5, 0.6, 0.45],\n 'ts': pd.date_range('2021-07-01', periods=3)})\n buf.dataframe(\n df, table_name='weather', at='ts', symbols=['location'])\n\n # ...\n sender.flush(buf)\n\n **Pandas to ILP datatype mappings**\n\n .. seealso:: https://questdb.com/docs/reference/api/ilp/columnset-types/\n\n .. list-table:: Pandas Mappings\n :header-rows: 1\n\n * - Pandas ``dtype``\n - Nulls\n - ILP Datatype\n * - ``'bool'``\n - N\n - ``BOOLEAN``\n * - ``'boolean'``\n - N **\316\261**\n - ``BOOLEAN``\n * - ``'object'`` (``bool`` objects)\n - N **\316\261**""\n - ``BOOLEAN``\n * - ``'uint8'``\n - N\n - ``INTEGER``\n * - ``'int8'``\n - N\n - ``INTEGER``\n * - ``'uint16'``\n - N\n - ``INTEGER``\n * - ``'int16'``\n - N\n - ``INTEGER``\n * - ``'uint32'``\n - N\n - ``INTEGER``\n * - ``'int32'``\n - N\n - ``INTEGER``\n * - ``'uint64'``\n - N\n - ``INTEGER`` **\316\262**\n * - ``'int64'``\n - N\n - ``INTEGER``\n * - ``'UInt8'``\n - Y\n - ``INTEGER``\n * - ``'Int8'``\n - Y\n - ``INTEGER``\n * - ``'UInt16'``\n - Y\n - ``INTEGER``\n * - ``'Int16'``\n - Y\n - ``INTEGER``\n * - ``'UInt32'``\n - Y\n - ``INTEGER``\n * - ``'Int32'``\n - Y\n - ``INTEGER``\n * - ``'UInt64'``\n - Y\n - ``INTEGER`` **\316\262**\n * - ``'Int64'``\n - Y\n - ``INTEGER``\n * - ``'object'`` (``int`` objects)\n - Y\n - ``INTEGER`` **\316\262**\n * - ``'float32'`` **\316\263**\n - Y (``NaN``)\n - ``FLOAT``\n * - ``'float64'``\n - Y (``NaN``)\n - ``FLOAT``\n * - ``'object'`` (``float`` objects)\n - Y (``NaN``)\n - ``FLOAT``\n * - ``'string'`` (``str`` objects)\n - Y\n - ``STRING`` (default), ``SYMBOL`` via ``symbols`` arg. **\316\264**\n * - ``'string[pyarrow]'``\n - Y\n - ``STRING`` (default), ``SYMBOL`` via ``symbols`` arg. **\316\264**\n ""* - ``'category'`` (``str`` objects) **\316\265**\n - Y\n - ``SYMBOL`` (default), ``STRING`` via ``symbols`` arg. **\316\264**\n * - ``'object'`` (``str`` objects)\n - Y\n - ``STRING`` (default), ``SYMBOL`` via ``symbols`` arg. **\316\264**\n * - ``'datetime64[ns]'``\n - Y\n - ``TIMESTAMP`` **\316\266**\n * - ``'datetime64[ns, tz]'``\n - Y\n - ``TIMESTAMP`` **\316\266**\n * - ``'object'`` (``Decimal`` objects)\n - Y (``NaN``)\n - ``DECIMAL``\n\n .. note::\n\n * **\316\261**: Note some pandas dtypes allow nulls (e.g. ``'boolean'``),\n where the QuestDB database does not.\n\n * **\316\262**: The valid range for integer values is -2^63 to 2^63-1.\n Any ``'uint64'``, ``'UInt64'`` or python ``int`` object values\n outside this range will raise an error during serialization.\n\n * **\316\263**: Upcast to 64-bit float during serialization.\n\n * **\316\264**: Columns containing strings can also be used to specify the\n table name. See ``table_name_col``.\n\n * **\316\265**: We only support categories containing strings. If the\n category contains non-string values, an error will be raised.\n\n * **\316\266**: The '.dataframe()' method only supports datetimes with\n nanosecond precision. The designated timestamp column (see ``at``\n parameter) maintains the nanosecond precision, whilst values\n stored as columns have their precision truncated to microseconds.\n All dates are sent as UTC and any additional timezone information\n is dropped. If no timezone is specified, we follow\n the pandas convention of assuming the timezone is UTC.\n Datetimes before 1970-01-01 00:00:00 UTC ar""e not supported.\n If a datetime value is specified as ``None`` (``NaT``), it is\n interpreted as the current QuestDB server time set on receipt of\n message.\n\n **Error Handling and Recovery**\n\n In case an exception is raised during dataframe serialization, the\n buffer is left in its previous state.\n The buffer remains in a valid state and can be used for further calls\n even after an error.\n\n For clarification, as an example, if an invalid ``None``\n value appears at the 3rd row for a ``bool`` column, neither the 3rd nor\n the preceding rows are added to the buffer.\n\n **Note**: This differs from the :func:`Sender.dataframe <questdb.Sender.dataframe>` method, which\n modifies this guarantee due to its ``auto_flush`` logic.\n\n **Performance Considerations**\n\n The Python GIL is released during serialization if it is not needed.\n If any column requires the GIL, the entire serialization is done whilst\n holding the GIL.\n\n Column types that require the GIL are:\n\n * Columns of ``str``, ``float`` or ``int`` or ``float`` Python objects.\n * The ``'string[python]'`` dtype.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Buffer_21dataframe = {"dataframe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Buffer_21dataframe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Buffer_20dataframe}; static PyObject *__pyx_pw_7questdb_7_client_6Buffer_21dataframe(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_df = 0; PyObject *__pyx_v_table_name = 0; PyObject *__pyx_v_table_name_col = 0; PyObject *__pyx_v_symbols = 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("dataframe (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_df,&__pyx_mstate_global->__pyx_n_u_at,&__pyx_mstate_global->__pyx_n_u_table_name,&__pyx_mstate_global->__pyx_n_u_table_name_col,&__pyx_mstate_global->__pyx_n_u_symbols,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(0, 1528, __pyx_L3_error) if (likely(__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(0, 1528, __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, "dataframe", 0) < (0)) __PYX_ERR(0, 1528, __pyx_L3_error) /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Buffer_20dataframe(struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_self, PyObject *__pyx_v_df, PyObject *__pyx_v_table_name, PyObject *__pyx_v_table_name_col, PyObject *__pyx_v_symbols, PyObject *__pyx_v_at) { 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_AddTraceback("questdb._client.Buffer.dataframe", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1528, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); /* … */ __pyx_t_16 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1528, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_table_name, __pyx_mstate_global->__pyx_kp_u_Optional_str) < (0)) __PYX_ERR(0, 1528, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_table_name_col, __pyx_mstate_global->__pyx_kp_u_Union_None_int_str) < (0)) __PYX_ERR(0, 1528, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_symbols, __pyx_mstate_global->__pyx_kp_u_Union_str_bool_List_int_List_str) < (0)) __PYX_ERR(0, 1528, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_at, __pyx_mstate_global->__pyx_kp_u_Union_ServerTimestampType_int_st) < (0)) __PYX_ERR(0, 1528, __pyx_L1_error) __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_6Buffer_21dataframe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Buffer_dataframe, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[69])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1528, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_17, __pyx_t_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_17, __pyx_t_16); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Buffer, __pyx_mstate_global->__pyx_n_u_dataframe, __pyx_t_17) < (0)) __PYX_ERR(0, 1528, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
1529: self,
1530: df, # : pd.DataFrame
1531: *,
+1532: table_name: Optional[str] = None,
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_table_name, Py_None) < (0)) __PYX_ERR(0, 1528, __pyx_L1_error)
+1533: table_name_col: Union[None, int, str] = None,
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_auto)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("dataframe", 1, 1, 1, i); __PYX_ERR(0, 1528, __pyx_L3_error) } } for (Py_ssize_t i = 1; i < 2; i++) { if (unlikely(!values[i])) { __Pyx_RaiseKeywordRequired("dataframe", *(__pyx_pyargnames[i - 0])); __PYX_ERR(0, 1528, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { __Pyx_RaiseKeywordRequired("dataframe", __pyx_mstate_global->__pyx_n_u_at); __PYX_ERR(0, 1528, __pyx_L3_error) } __pyx_v_df = values[0]; __pyx_v_at = values[1]; __pyx_v_table_name = ((PyObject*)values[2]); __pyx_v_table_name_col = values[3]; __pyx_v_symbols = values[4]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("dataframe", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1528, __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.Buffer.dataframe", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_table_name), (&PyUnicode_Type), 1, "table_name", 2))) __PYX_ERR(0, 1532, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_6Buffer_20dataframe(((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_v_self), __pyx_v_df, __pyx_v_table_name, __pyx_v_table_name_col, __pyx_v_symbols, __pyx_v_at); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_table_name_col, Py_None) < (0)) __PYX_ERR(0, 1528, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_symbols, __pyx_mstate_global->__pyx_n_u_auto) < (0)) __PYX_ERR(0, 1528, __pyx_L1_error)
1534: symbols: Union[str, bool, List[int], List[str]] = 'auto',
1535: at: Union[ServerTimestampType, int, str, TimestampNanos, datetime.datetime]):
1536: """
1537: Add a pandas DataFrame to the buffer.
1538:
1539: Also see the :func:`Sender.dataframe <questdb.Sender.dataframe>` method if you're
1540: not using the buffer explicitly. It supports the same parameters
1541: and also supports auto-flushing.
1542:
1543: Requires ``pandas`` and ``numpy``. ``pyarrow`` is only needed
1544: when the frame contains ``pd.ArrowDtype`` / ``pd.Categorical`` /
1545: ``string`` dtype columns — purely NumPy / object dtypes work
1546: without it.
1547:
1548: Adding a dataframe can trigger auto-flushing behaviour,
1549: even between rows of the same dataframe. To avoid this, you can
1550: use HTTP and transactions (see :func:`Sender.transaction <questdb.Sender.transaction>`).
1551:
1552: :param df: The pandas DataFrame to serialize to the buffer.
1553: :type df: pandas.DataFrame
1554:
1555: :param table_name: The name of the table to which the rows belong.
1556:
1557: If ``None``, the table name is taken from the ``table_name_col``
1558: parameter. If both ``table_name`` and ``table_name_col`` are
1559: ``None``, the table name is taken from the DataFrame's index
1560: name (``df.index.name`` attribute).
1561: :type table_name: str or None
1562:
1563: :param table_name_col: The name or index of the column in the DataFrame
1564: that contains the table name.
1565:
1566: If ``None``, the table name is taken
1567: from the ``table_name`` parameter. If both ``table_name`` and
1568: ``table_name_col`` are ``None``, the table name is taken from the
1569: DataFrame's index name (``df.index.name`` attribute).
1570:
1571: If ``table_name_col`` is an integer, it is interpreted as the index
1572: of the column starting from ``0``. The index of the column can be
1573: negative, in which case it is interpreted as an offset from the end
1574: of the DataFrame. E.g. ``-1`` is the last column.
1575: :type table_name_col: str or int or None
1576:
1577: :param symbols: The columns to be serialized as symbols.
1578:
1579: If ``'auto'`` (default), all columns of dtype ``'categorical'`` are
1580: serialized as symbols. If ``True``, all ``str`` columns are
1581: serialized as symbols. If ``False``, no columns are serialized as
1582: symbols.
1583:
1584: The list of symbols can also be specified explicitly as a ``list``
1585: of column names (``str``) or indices (``int``). Integer indices
1586: start at ``0`` and can be negative, offset from the end of the
1587: DataFrame. E.g. ``-1`` is the last column.
1588:
1589: Only columns containing strings can be serialized as symbols.
1590:
1591: :type symbols: str or bool or list[str] or list[int]
1592:
1593: :param at: The designated timestamp of the rows.
1594:
1595: You can specify a single value for all rows or column name or index.
1596: If ``ServerTimestamp``, timestamp is assigned by the server for all rows.
1597: To pass in a timestamp explicitly as an integer use the
1598: ``TimestampNanos`` wrapper type. To get the current timestamp,
1599: use ``TimestampNanos.now()``.
1600: When passing a ``datetime.datetime`` object, the timestamp is
1601: converted to nanoseconds.
1602: A naive ``datetime`` object is interpreted as UTC — never
1603: your machine's local timezone — and a ``UserWarning`` is
1604: emitted once per process
1605: (call ``datetime.datetime.now(tz=datetime.timezone.utc)``
1606: for the current timestamp to
1607: avoid bugs).
1608:
1609: To specify a different timestamp for each row, pass in a column name
1610: (``str``) or index (``int``, 0-based index, negative index
1611: supported): In this case, the column needs to be of dtype
1612: ``datetime64[ns]`` (assumed to be in the **UTC timezone** and not
1613: local, due to differences in Pandas and Python datetime handling) or
1614: ``datetime64[ns, tz]``. When a timezone is specified in the column,
1615: it is converted to UTC automatically.
1616:
1617: A timestamp column can also contain ``None`` values. The server will
1618: assign the current timestamp to those rows.
1619:
1620: **Note**: All timestamps are always converted to nanoseconds and in
1621: the UTC timezone. Timezone information is dropped before sending and
1622: QuestDB will not store any timezone information.
1623: :type at: TimestampNanos, datetime.datetime, int or str or None
1624:
1625: **Note**: It is an error to specify both ``table_name`` and
1626: ``table_name_col``.
1627:
1628: **Note**: The "index" column of the DataFrame is never serialized,
1629: even if it is named.
1630:
1631: Example:
1632:
1633: .. code-block:: python
1634:
1635: import pandas as pd
1636: import questdb as qi
1637:
1638: buf = qi.ingress.Buffer(protocol_version=2)
1639: # ...
1640:
1641: df = pd.DataFrame({
1642: 'location': ['London', 'Managua', 'London'],
1643: 'temperature': [24.5, 35.0, 25.5],
1644: 'humidity': [0.5, 0.6, 0.45],
1645: 'ts': pd.date_range('2021-07-01', periods=3)})
1646: buf.dataframe(
1647: df, table_name='weather', at='ts', symbols=['location'])
1648:
1649: # ...
1650: sender.flush(buf)
1651:
1652: **Pandas to ILP datatype mappings**
1653:
1654: .. seealso:: https://questdb.com/docs/reference/api/ilp/columnset-types/
1655:
1656: .. list-table:: Pandas Mappings
1657: :header-rows: 1
1658:
1659: * - Pandas ``dtype``
1660: - Nulls
1661: - ILP Datatype
1662: * - ``'bool'``
1663: - N
1664: - ``BOOLEAN``
1665: * - ``'boolean'``
1666: - N **α**
1667: - ``BOOLEAN``
1668: * - ``'object'`` (``bool`` objects)
1669: - N **α**
1670: - ``BOOLEAN``
1671: * - ``'uint8'``
1672: - N
1673: - ``INTEGER``
1674: * - ``'int8'``
1675: - N
1676: - ``INTEGER``
1677: * - ``'uint16'``
1678: - N
1679: - ``INTEGER``
1680: * - ``'int16'``
1681: - N
1682: - ``INTEGER``
1683: * - ``'uint32'``
1684: - N
1685: - ``INTEGER``
1686: * - ``'int32'``
1687: - N
1688: - ``INTEGER``
1689: * - ``'uint64'``
1690: - N
1691: - ``INTEGER`` **β**
1692: * - ``'int64'``
1693: - N
1694: - ``INTEGER``
1695: * - ``'UInt8'``
1696: - Y
1697: - ``INTEGER``
1698: * - ``'Int8'``
1699: - Y
1700: - ``INTEGER``
1701: * - ``'UInt16'``
1702: - Y
1703: - ``INTEGER``
1704: * - ``'Int16'``
1705: - Y
1706: - ``INTEGER``
1707: * - ``'UInt32'``
1708: - Y
1709: - ``INTEGER``
1710: * - ``'Int32'``
1711: - Y
1712: - ``INTEGER``
1713: * - ``'UInt64'``
1714: - Y
1715: - ``INTEGER`` **β**
1716: * - ``'Int64'``
1717: - Y
1718: - ``INTEGER``
1719: * - ``'object'`` (``int`` objects)
1720: - Y
1721: - ``INTEGER`` **β**
1722: * - ``'float32'`` **γ**
1723: - Y (``NaN``)
1724: - ``FLOAT``
1725: * - ``'float64'``
1726: - Y (``NaN``)
1727: - ``FLOAT``
1728: * - ``'object'`` (``float`` objects)
1729: - Y (``NaN``)
1730: - ``FLOAT``
1731: * - ``'string'`` (``str`` objects)
1732: - Y
1733: - ``STRING`` (default), ``SYMBOL`` via ``symbols`` arg. **δ**
1734: * - ``'string[pyarrow]'``
1735: - Y
1736: - ``STRING`` (default), ``SYMBOL`` via ``symbols`` arg. **δ**
1737: * - ``'category'`` (``str`` objects) **ε**
1738: - Y
1739: - ``SYMBOL`` (default), ``STRING`` via ``symbols`` arg. **δ**
1740: * - ``'object'`` (``str`` objects)
1741: - Y
1742: - ``STRING`` (default), ``SYMBOL`` via ``symbols`` arg. **δ**
1743: * - ``'datetime64[ns]'``
1744: - Y
1745: - ``TIMESTAMP`` **ζ**
1746: * - ``'datetime64[ns, tz]'``
1747: - Y
1748: - ``TIMESTAMP`` **ζ**
1749: * - ``'object'`` (``Decimal`` objects)
1750: - Y (``NaN``)
1751: - ``DECIMAL``
1752:
1753: .. note::
1754:
1755: * **α**: Note some pandas dtypes allow nulls (e.g. ``'boolean'``),
1756: where the QuestDB database does not.
1757:
1758: * **β**: The valid range for integer values is -2^63 to 2^63-1.
1759: Any ``'uint64'``, ``'UInt64'`` or python ``int`` object values
1760: outside this range will raise an error during serialization.
1761:
1762: * **γ**: Upcast to 64-bit float during serialization.
1763:
1764: * **δ**: Columns containing strings can also be used to specify the
1765: table name. See ``table_name_col``.
1766:
1767: * **ε**: We only support categories containing strings. If the
1768: category contains non-string values, an error will be raised.
1769:
1770: * **ζ**: The '.dataframe()' method only supports datetimes with
1771: nanosecond precision. The designated timestamp column (see ``at``
1772: parameter) maintains the nanosecond precision, whilst values
1773: stored as columns have their precision truncated to microseconds.
1774: All dates are sent as UTC and any additional timezone information
1775: is dropped. If no timezone is specified, we follow
1776: the pandas convention of assuming the timezone is UTC.
1777: Datetimes before 1970-01-01 00:00:00 UTC are not supported.
1778: If a datetime value is specified as ``None`` (``NaT``), it is
1779: interpreted as the current QuestDB server time set on receipt of
1780: message.
1781:
1782: **Error Handling and Recovery**
1783:
1784: In case an exception is raised during dataframe serialization, the
1785: buffer is left in its previous state.
1786: The buffer remains in a valid state and can be used for further calls
1787: even after an error.
1788:
1789: For clarification, as an example, if an invalid ``None``
1790: value appears at the 3rd row for a ``bool`` column, neither the 3rd nor
1791: the preceding rows are added to the buffer.
1792:
1793: **Note**: This differs from the :func:`Sender.dataframe <questdb.Sender.dataframe>` method, which
1794: modifies this guarantee due to its ``auto_flush`` logic.
1795:
1796: **Performance Considerations**
1797:
1798: The Python GIL is released during serialization if it is not needed.
1799: If any column requires the GIL, the entire serialization is done whilst
1800: holding the GIL.
1801:
1802: Column types that require the GIL are:
1803:
1804: * Columns of ``str``, ``float`` or ``int`` or ``float`` Python objects.
1805: * The ``'string[python]'`` dtype.
1806: """
+1807: if at is None:
__pyx_t_1 = (__pyx_v_at == Py_None);
if (unlikely(__pyx_t_1)) {
/* … */
}
+1808: 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(0, 1808, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+1809: QuestDBErrorCode.InvalidTimestamp,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_InvalidTimestamp); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1809, __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_at_must_be_of_type_TimestampNan}; __pyx_t_2 = __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_2)) __PYX_ERR(0, 1808, __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(0, 1808, __pyx_L1_error)
1810: "`at` must be of type TimestampNanos, datetime, or ServerTimestamp"
1811: )
+1812: self._check_impl()
__pyx_t_8 = __pyx_f_7questdb_7_client_6Buffer__check_impl(__pyx_v_self); if (unlikely(__pyx_t_8 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1812, __pyx_L1_error)
+1813: _dataframe(
__pyx_t_8 = __pyx_f_7questdb_7_client__dataframe(__pyx_f_7questdb_7_client_auto_flush_blank(), __pyx_v_self->_impl, __pyx_v_self->_b, __pyx_v_df, __pyx_v_table_name, __pyx_v_table_name_col, __pyx_v_symbols, __pyx_v_at); if (unlikely(__pyx_t_8 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 1813, __pyx_L1_error)
1814: auto_flush_blank(),
1815: self._impl,
1816: self._b,
1817: df,
1818: table_name,
1819: table_name_col,
1820: symbols,
1821: at)
+1822: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
1823:
1824:
1825: _FLUSH_FMT = ('{} - See https://py-questdb-client.readthedocs.io/en/'
+1826: 'v' + VERSION +
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_VERSION); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_16 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_See_https_py_questdb_client_rea, __pyx_t_17); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 1826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = PyNumber_Add(__pyx_t_16, __pyx_mstate_global->__pyx_kp_u_troubleshooting_html_inspecting); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 1826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_FLUSH_FMT, __pyx_t_17) < (0)) __PYX_ERR(0, 1825, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
1827: '/troubleshooting.html#inspecting-and-debugging-errors#flush-failed')
1828:
1829:
+1830: cdef uint64_t _timedelta_to_millis(cp_timedelta timedelta):
static uint64_t __pyx_f_7questdb_7_client__timedelta_to_millis(PyDateTime_Delta *__pyx_v_timedelta) {
int64_t __pyx_v_millis;
uint64_t __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("questdb._client._timedelta_to_millis", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1LL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1831: """
1832: Convert a timedelta to milliseconds.
1833: """
1834: cdef int64_t millis = (
+1835: <int64_t>timedelta.days * 86_400_000 +
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_timedelta), __pyx_mstate_global->__pyx_n_u_days); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1835, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyLong_As_int64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1835, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_t_1 = __Pyx_PyLong_From_int64_t(((((int64_t)__pyx_t_2) * 0x5265C00) + (((int64_t)__pyx_t_3) * 0x3E8))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1835, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1);
+1836: <int64_t>timedelta.seconds * 1000 +
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_timedelta), __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1836, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyLong_As_int64_t(__pyx_t_1); if (unlikely((__pyx_t_3 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1836, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_t_4 = PyNumber_Add(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1836, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_3 = __Pyx_PyLong_As_int64_t(__pyx_t_4); if (unlikely((__pyx_t_3 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1836, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_millis = __pyx_t_3;
+1837: timedelta.microseconds // 1000)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_timedelta), __pyx_mstate_global->__pyx_n_u_microseconds); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1837, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyLong_FloorDivideObjC(__pyx_t_4, __pyx_mstate_global->__pyx_int_1000, 0x3E8, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1837, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1838: if millis < 0:
__pyx_t_6 = (__pyx_v_millis < 0);
if (unlikely(__pyx_t_6)) {
/* … */
}
+1839: raise ValueError(
__pyx_t_5 = NULL;
+1840: f'Negative timedelta not allowed: {timedelta!r}.')
__pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(((PyObject *)__pyx_v_timedelta)), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1840, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7[0] = __pyx_mstate_global->__pyx_kp_u_Negative_timedelta_not_allowed; __pyx_t_7[1] = __pyx_t_1; __pyx_t_7[2] = __pyx_mstate_global->__pyx_kp_u__2; __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_7, 3, 32 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1840, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_8}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_9, (2-__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; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1839, __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(0, 1839, __pyx_L1_error)
+1841: if millis == 0 and (
__pyx_t_10 = (__pyx_v_millis == 0);
if (__pyx_t_10) {
} else {
__pyx_t_6 = __pyx_t_10;
goto __pyx_L5_bool_binop_done;
}
/* … */
if (__pyx_t_6) {
/* … */
}
+1842: timedelta.days or timedelta.seconds or timedelta.microseconds):
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_timedelta), __pyx_mstate_global->__pyx_n_u_days); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1842, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_10) { } else { __pyx_t_6 = __pyx_t_10; goto __pyx_L5_bool_binop_done; } __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_timedelta), __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1842, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_10) { } else { __pyx_t_6 = __pyx_t_10; goto __pyx_L5_bool_binop_done; } __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_timedelta), __pyx_mstate_global->__pyx_n_u_microseconds); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 1842, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __pyx_t_10; __pyx_L5_bool_binop_done:;
1843: # Never silently turn a positive finite duration into 0ms, which
1844: # several options interpret as "no deadline".
+1845: return 1
__pyx_r = 1;
goto __pyx_L0;
+1846: return millis
__pyx_r = __pyx_v_millis; goto __pyx_L0;
1847:
1848:
+1849: cdef bint _is_int_not_bool(object value):
static int __pyx_f_7questdb_7_client__is_int_not_bool(PyObject *__pyx_v_value) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
+1850: return isinstance(value, int) and not isinstance(value, bool)
__pyx_t_2 = PyLong_Check(__pyx_v_value); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; } __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool); __pyx_t_3 = (!__pyx_t_2); __pyx_t_1 = __pyx_t_3; __pyx_L3_bool_binop_done:; __pyx_r = __pyx_t_1; goto __pyx_L0;
1851:
1852:
+1853: cdef int64_t auto_flush_rows_default(line_sender_protocol protocol):
static int64_t __pyx_f_7questdb_7_client_auto_flush_rows_default(enum line_sender_protocol __pyx_v_protocol) {
int64_t __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client.auto_flush_rows_default", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1L;
__pyx_L0:;
return __pyx_r;
}
+1854: if _is_http_protocol(protocol):
__pyx_t_1 = __pyx_f_7questdb_7_client__is_http_protocol(__pyx_v_protocol); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1854, __pyx_L1_error) if (__pyx_t_1) { /* … */ }
+1855: return 75000
__pyx_r = 0x124F8;
goto __pyx_L0;
1856: else:
+1857: return 600
/*else*/ {
__pyx_r = 0x258;
goto __pyx_L0;
}
1858:
1859:
+1860: cdef void_int _parse_auto_flush(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__parse_auto_flush(enum line_sender_protocol __pyx_v_protocol, PyObject *__pyx_v_auto_flush, PyObject *__pyx_v_auto_flush_rows, PyObject *__pyx_v_auto_flush_bytes, PyObject *__pyx_v_auto_flush_interval, struct __pyx_t_7questdb_7_client_auto_flush_mode_t *__pyx_v_c_auto_flush, size_t __pyx_v_max_datagram_size) {
__pyx_t_7questdb_7_client_void_int __pyx_r;
__Pyx_INCREF(__pyx_v_auto_flush);
__Pyx_INCREF(__pyx_v_auto_flush_rows);
__Pyx_INCREF(__pyx_v_auto_flush_bytes);
__Pyx_INCREF(__pyx_v_auto_flush_interval);
/* … */
/* function exit code */
__pyx_r = 0;
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_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("questdb._client._parse_auto_flush", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_auto_flush);
__Pyx_XDECREF(__pyx_v_auto_flush_rows);
__Pyx_XDECREF(__pyx_v_auto_flush_bytes);
__Pyx_XDECREF(__pyx_v_auto_flush_interval);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1861: line_sender_protocol protocol,
1862: object auto_flush,
1863: object auto_flush_rows,
1864: object auto_flush_bytes,
1865: object auto_flush_interval,
1866: auto_flush_mode_t* c_auto_flush,
1867: size_t max_datagram_size
1868: ) except -1:
1869: # Set defaults.
+1870: if auto_flush_rows is None:
__pyx_t_1 = (__pyx_v_auto_flush_rows == Py_None);
if (__pyx_t_1) {
/* … */
}
+1871: auto_flush_rows = auto_flush_rows_default(protocol)
__pyx_t_2 = __pyx_f_7questdb_7_client_auto_flush_rows_default(__pyx_v_protocol); if (unlikely(__pyx_t_2 == ((int64_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1871, __pyx_L1_error) __pyx_t_3 = __Pyx_PyLong_From_int64_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF_SET(__pyx_v_auto_flush_rows, __pyx_t_3); __pyx_t_3 = 0;
1872:
+1873: if auto_flush_bytes is None:
__pyx_t_1 = (__pyx_v_auto_flush_bytes == Py_None);
if (__pyx_t_1) {
/* … */
}
+1874: if _is_qwp_udp_protocol(protocol):
__pyx_t_1 = __pyx_f_7questdb_7_client__is_qwp_udp_protocol(__pyx_v_protocol); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1874, __pyx_L1_error) if (__pyx_t_1) { /* … */ goto __pyx_L5; }
+1875: auto_flush_bytes = max_datagram_size if max_datagram_size else 1400
__pyx_t_1 = (__pyx_v_max_datagram_size != 0);
if (__pyx_t_1) {
__pyx_t_4 = __Pyx_PyLong_FromSize_t(__pyx_v_max_datagram_size); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1875, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = __pyx_t_4;
__pyx_t_4 = 0;
} else {
__Pyx_INCREF(__pyx_mstate_global->__pyx_int_1400);
__pyx_t_3 = __pyx_mstate_global->__pyx_int_1400;
}
__Pyx_DECREF_SET(__pyx_v_auto_flush_bytes, __pyx_t_3);
__pyx_t_3 = 0;
1876: else:
+1877: auto_flush_bytes = False
/*else*/ {
__Pyx_INCREF(Py_False);
__Pyx_DECREF_SET(__pyx_v_auto_flush_bytes, Py_False);
}
__pyx_L5:;
1878:
+1879: if auto_flush_interval is None:
__pyx_t_1 = (__pyx_v_auto_flush_interval == Py_None);
if (__pyx_t_1) {
/* … */
}
+1880: auto_flush_interval = 1000
__Pyx_INCREF(__pyx_mstate_global->__pyx_int_1000); __Pyx_DECREF_SET(__pyx_v_auto_flush_interval, __pyx_mstate_global->__pyx_int_1000);
1881:
+1882: if isinstance(auto_flush, str):
__pyx_t_1 = PyUnicode_Check(__pyx_v_auto_flush);
if (__pyx_t_1) {
/* … */
}
+1883: if auto_flush == 'off':
__pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_auto_flush, __pyx_mstate_global->__pyx_n_u_off, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1883, __pyx_L1_error) if (__pyx_t_1) { /* … */ goto __pyx_L8; }
+1884: auto_flush = False
__Pyx_INCREF(Py_False); __Pyx_DECREF_SET(__pyx_v_auto_flush, Py_False);
+1885: elif auto_flush == 'on':
__pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_auto_flush, __pyx_mstate_global->__pyx_n_u_on, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1885, __pyx_L1_error) if (likely(__pyx_t_1)) { /* … */ goto __pyx_L8; }
+1886: auto_flush = True
__Pyx_INCREF(Py_True); __Pyx_DECREF_SET(__pyx_v_auto_flush, Py_True);
1887: else:
+1888: raise QuestDBError(
/*else*/ {
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1888, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+1889: QuestDBErrorCode.ConfigError,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1890: '"auto_flush" must be None, bool, "on" or "off", ' +
__pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_auto_flush_must_be_None_bool_on, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __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_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_9 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_7, __pyx_t_6}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 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(0, 1888, __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(0, 1888, __pyx_L1_error) } __pyx_L8:;
+1891: f'not {auto_flush!r}')
__pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_auto_flush), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_not, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
1892:
1893: # Normalise auto_flush parameters to ints or False.
+1894: if isinstance(auto_flush_rows, str):
__pyx_t_1 = PyUnicode_Check(__pyx_v_auto_flush_rows);
if (__pyx_t_1) {
/* … */
goto __pyx_L9;
}
+1895: if auto_flush_rows == 'on':
__pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_auto_flush_rows, __pyx_mstate_global->__pyx_n_u_on, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1895, __pyx_L1_error) if (unlikely(__pyx_t_1)) { /* … */ }
+1896: 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(0, 1896, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
+1897: QuestDBErrorCode.ConfigError,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __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_4, __pyx_mstate_global->__pyx_kp_u_auto_flush_rows_cannot_be_on}; __pyx_t_3 = __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_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1896, __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(0, 1896, __pyx_L1_error)
1898: '"auto_flush_rows" cannot be "on"')
+1899: elif auto_flush_rows == 'off':
__pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_auto_flush_rows, __pyx_mstate_global->__pyx_n_u_off, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1899, __pyx_L1_error) if (__pyx_t_1) { /* … */ goto __pyx_L10; }
+1900: auto_flush_rows = False
__Pyx_INCREF(Py_False); __Pyx_DECREF_SET(__pyx_v_auto_flush_rows, Py_False);
1901: else:
+1902: auto_flush_rows = int(auto_flush_rows)
/*else*/ {
__pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_auto_flush_rows); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1902, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF_SET(__pyx_v_auto_flush_rows, __pyx_t_3);
__pyx_t_3 = 0;
}
__pyx_L10:;
+1903: elif auto_flush_rows is False or _is_int_not_bool(auto_flush_rows):
__pyx_t_10 = (__pyx_v_auto_flush_rows == Py_False);
if (!__pyx_t_10) {
} else {
__pyx_t_1 = __pyx_t_10;
goto __pyx_L11_bool_binop_done;
}
__pyx_t_10 = __pyx_f_7questdb_7_client__is_int_not_bool(__pyx_v_auto_flush_rows); if (unlikely(__pyx_t_10 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1903, __pyx_L1_error)
__pyx_t_1 = __pyx_t_10;
__pyx_L11_bool_binop_done:;
if (likely(__pyx_t_1)) {
goto __pyx_L9;
}
1904: pass
1905: else:
+1906: raise TypeError(
/*else*/ {
__pyx_t_6 = NULL;
+1907: '"auto_flush_rows" must be an int, False or "off", ' +
__pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_auto_flush_rows_must_be_an_int, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_4}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1906, __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(0, 1906, __pyx_L1_error) } __pyx_L9:;
+1908: f'not {auto_flush_rows!r}')
__pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_auto_flush_rows), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1908, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_not, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1908, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
1909:
+1910: if isinstance(auto_flush_bytes, str):
__pyx_t_1 = PyUnicode_Check(__pyx_v_auto_flush_bytes);
if (__pyx_t_1) {
/* … */
goto __pyx_L13;
}
+1911: if auto_flush_bytes == 'on':
__pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_auto_flush_bytes, __pyx_mstate_global->__pyx_n_u_on, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1911, __pyx_L1_error) if (unlikely(__pyx_t_1)) { /* … */ }
+1912: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1912, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
+1913: QuestDBErrorCode.ConfigError,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = 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_9 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_7, __pyx_mstate_global->__pyx_kp_u_auto_flush_bytes_cannot_be_on}; __pyx_t_3 = __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_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1912, __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(0, 1912, __pyx_L1_error)
1914: '"auto_flush_bytes" cannot be "on"')
+1915: elif auto_flush_bytes == 'off':
__pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_auto_flush_bytes, __pyx_mstate_global->__pyx_n_u_off, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1915, __pyx_L1_error) if (__pyx_t_1) { /* … */ goto __pyx_L14; }
+1916: auto_flush_bytes = False
__Pyx_INCREF(Py_False); __Pyx_DECREF_SET(__pyx_v_auto_flush_bytes, Py_False);
1917: else:
+1918: auto_flush_bytes = int(auto_flush_bytes)
/*else*/ {
__pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_auto_flush_bytes); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1918, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF_SET(__pyx_v_auto_flush_bytes, __pyx_t_3);
__pyx_t_3 = 0;
}
__pyx_L14:;
+1919: elif auto_flush_bytes is False or _is_int_not_bool(auto_flush_bytes):
__pyx_t_10 = (__pyx_v_auto_flush_bytes == Py_False);
if (!__pyx_t_10) {
} else {
__pyx_t_1 = __pyx_t_10;
goto __pyx_L15_bool_binop_done;
}
__pyx_t_10 = __pyx_f_7questdb_7_client__is_int_not_bool(__pyx_v_auto_flush_bytes); if (unlikely(__pyx_t_10 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1919, __pyx_L1_error)
__pyx_t_1 = __pyx_t_10;
__pyx_L15_bool_binop_done:;
if (likely(__pyx_t_1)) {
goto __pyx_L13;
}
1920: pass
1921: else:
+1922: raise TypeError(
/*else*/ {
__pyx_t_6 = NULL;
+1923: '"auto_flush_bytes" must be an int, False or "off", ' +
__pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_auto_flush_bytes_must_be_an_int, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1923, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_7}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1922, __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(0, 1922, __pyx_L1_error) } __pyx_L13:;
+1924: f'not {auto_flush_bytes!r}')
__pyx_t_7 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_auto_flush_bytes), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1924, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_not, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1924, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
1925:
+1926: if isinstance(auto_flush_interval, str):
__pyx_t_1 = PyUnicode_Check(__pyx_v_auto_flush_interval);
if (__pyx_t_1) {
/* … */
goto __pyx_L17;
}
+1927: if auto_flush_interval == 'on':
__pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_auto_flush_interval, __pyx_mstate_global->__pyx_n_u_on, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1927, __pyx_L1_error) if (unlikely(__pyx_t_1)) { /* … */ }
+1928: raise QuestDBError(
__pyx_t_7 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1928, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
+1929: QuestDBErrorCode.ConfigError,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); assert(__pyx_t_7); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); __pyx_t_9 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_5, __pyx_mstate_global->__pyx_kp_u_auto_flush_interval_cannot_be_o}; __pyx_t_3 = __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_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1928, __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(0, 1928, __pyx_L1_error)
1930: '"auto_flush_interval" cannot be "on"')
+1931: elif auto_flush_interval == 'off':
__pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_auto_flush_interval, __pyx_mstate_global->__pyx_n_u_off, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1931, __pyx_L1_error) if (__pyx_t_1) { /* … */ goto __pyx_L18; }
+1932: auto_flush_interval = False
__Pyx_INCREF(Py_False); __Pyx_DECREF_SET(__pyx_v_auto_flush_interval, Py_False);
1933: else:
+1934: auto_flush_interval = int(auto_flush_interval)
/*else*/ {
__pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_auto_flush_interval); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1934, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF_SET(__pyx_v_auto_flush_interval, __pyx_t_3);
__pyx_t_3 = 0;
}
__pyx_L18:;
+1935: elif auto_flush_interval is False or _is_int_not_bool(auto_flush_interval):
__pyx_t_10 = (__pyx_v_auto_flush_interval == Py_False);
if (!__pyx_t_10) {
} else {
__pyx_t_1 = __pyx_t_10;
goto __pyx_L19_bool_binop_done;
}
__pyx_t_10 = __pyx_f_7questdb_7_client__is_int_not_bool(__pyx_v_auto_flush_interval); if (unlikely(__pyx_t_10 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1935, __pyx_L1_error)
__pyx_t_1 = __pyx_t_10;
__pyx_L19_bool_binop_done:;
if (__pyx_t_1) {
goto __pyx_L17;
}
1936: pass
+1937: elif isinstance(auto_flush_interval, cp_timedelta):
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_auto_flush_interval, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta);
if (likely(__pyx_t_1)) {
/* … */
goto __pyx_L17;
}
+1938: auto_flush_interval = _timedelta_to_millis(auto_flush_interval)
if (!(likely(((__pyx_v_auto_flush_interval) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_auto_flush_interval, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta))))) __PYX_ERR(0, 1938, __pyx_L1_error) __pyx_t_11 = __pyx_f_7questdb_7_client__timedelta_to_millis(((PyDateTime_Delta *)__pyx_v_auto_flush_interval)); if (unlikely(__pyx_t_11 == ((uint64_t)-1LL) && PyErr_Occurred())) __PYX_ERR(0, 1938, __pyx_L1_error) __pyx_t_3 = __Pyx_PyLong_From_uint64_t(__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF_SET(__pyx_v_auto_flush_interval, __pyx_t_3); __pyx_t_3 = 0;
1939: else:
+1940: raise TypeError(
/*else*/ {
__pyx_t_6 = NULL;
+1941: '"auto_flush_interval" must be an int, timedelta, False or "off", ' +
__pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_auto_flush_interval_must_be_an, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1940, __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(0, 1940, __pyx_L1_error) } __pyx_L17:;
+1942: f'not {auto_flush_interval!r}')
__pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_auto_flush_interval), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_not, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
1943:
1944: # Coerce auto_flush to bool if None.
+1945: if auto_flush is None:
__pyx_t_1 = (__pyx_v_auto_flush == Py_None);
if (__pyx_t_1) {
/* … */
goto __pyx_L21;
}
1946: auto_flush = (
+1947: (auto_flush_rows is not False) or
__pyx_t_1 = (__pyx_v_auto_flush_rows != Py_False);
if (!__pyx_t_1) {
} else {
__pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1947, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_3 = __pyx_t_5;
__pyx_t_5 = 0;
goto __pyx_L22_bool_binop_done;
}
+1948: (auto_flush_bytes is not False) or
__pyx_t_1 = (__pyx_v_auto_flush_bytes != Py_False);
if (!__pyx_t_1) {
} else {
__pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1948, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_3 = __pyx_t_5;
__pyx_t_5 = 0;
goto __pyx_L22_bool_binop_done;
}
+1949: (auto_flush_interval is not False))
__pyx_t_1 = (__pyx_v_auto_flush_interval != Py_False);
__pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1949, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_3 = __pyx_t_5;
__pyx_t_5 = 0;
__pyx_L22_bool_binop_done:;
__Pyx_DECREF_SET(__pyx_v_auto_flush, __pyx_t_3);
__pyx_t_3 = 0;
+1950: elif not isinstance(auto_flush, bool):
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_auto_flush, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool);
__pyx_t_10 = (!__pyx_t_1);
if (unlikely(__pyx_t_10)) {
/* … */
}
__pyx_L21:;
+1951: raise ValueError(
__pyx_t_5 = NULL;
+1952: '"auto_flush" must be None, bool, "on" or "off", ' +
__pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_auto_flush_must_be_None_bool_on, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1952, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__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_3)) __PYX_ERR(0, 1951, __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(0, 1951, __pyx_L1_error)
+1953: f'not {auto_flush!r}')
__pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_auto_flush), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1953, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_not, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1953, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
1954:
1955: # Validate auto_flush parameters.
+1956: if auto_flush and \
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_auto_flush); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1956, __pyx_L1_error) if (__pyx_t_1) { } else { __pyx_t_10 = __pyx_t_1; goto __pyx_L26_bool_binop_done; } /* … */ if (unlikely(__pyx_t_10)) { /* … */ }
+1957: (auto_flush_rows is False) and \
__pyx_t_1 = (__pyx_v_auto_flush_rows == Py_False);
if (__pyx_t_1) {
} else {
__pyx_t_10 = __pyx_t_1;
goto __pyx_L26_bool_binop_done;
}
+1958: (auto_flush_bytes is False) and \
__pyx_t_1 = (__pyx_v_auto_flush_bytes == Py_False);
if (__pyx_t_1) {
} else {
__pyx_t_10 = __pyx_t_1;
goto __pyx_L26_bool_binop_done;
}
+1959: (auto_flush_interval is False):
__pyx_t_1 = (__pyx_v_auto_flush_interval == Py_False); __pyx_t_10 = __pyx_t_1; __pyx_L26_bool_binop_done:;
+1960: raise ValueError(
__pyx_t_6 = NULL;
__pyx_t_9 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_auto_flush_is_enabled_but_no_ot};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __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_3)) __PYX_ERR(0, 1960, __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(0, 1960, __pyx_L1_error)
1961: '"auto_flush" is enabled but no other auto-flush '
1962: 'parameters are enabled. Please set at least one of '
1963: '"auto_flush_rows", "auto_flush_bytes" or '
1964: '"auto_flush_interval".')
1965:
+1966: if auto_flush_rows is not False and auto_flush_rows < 1:
__pyx_t_1 = (__pyx_v_auto_flush_rows != Py_False);
if (__pyx_t_1) {
} else {
__pyx_t_10 = __pyx_t_1;
goto __pyx_L31_bool_binop_done;
}
__pyx_t_3 = PyObject_RichCompare(__pyx_v_auto_flush_rows, __pyx_mstate_global->__pyx_int_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1966, __pyx_L1_error)
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1966, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_10 = __pyx_t_1;
__pyx_L31_bool_binop_done:;
if (unlikely(__pyx_t_10)) {
/* … */
}
+1967: raise ValueError(
__pyx_t_6 = NULL;
+1968: '"auto_flush_rows" must be >= 1, '
__pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_auto_flush_rows_must_be_1_not, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1968, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_7}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __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_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1967, __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(0, 1967, __pyx_L1_error)
+1969: f'not {auto_flush_rows}')
__pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_auto_flush_rows, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1969, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5);
1970:
+1971: if auto_flush_bytes is not False and auto_flush_bytes < 1:
__pyx_t_1 = (__pyx_v_auto_flush_bytes != Py_False);
if (__pyx_t_1) {
} else {
__pyx_t_10 = __pyx_t_1;
goto __pyx_L34_bool_binop_done;
}
__pyx_t_3 = PyObject_RichCompare(__pyx_v_auto_flush_bytes, __pyx_mstate_global->__pyx_int_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1971, __pyx_L1_error)
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1971, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_10 = __pyx_t_1;
__pyx_L34_bool_binop_done:;
if (unlikely(__pyx_t_10)) {
/* … */
}
+1972: raise ValueError(
__pyx_t_7 = NULL;
+1973: '"auto_flush_bytes" must be >= 1, '
__pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_auto_flush_bytes_must_be_1_not, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1973, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_9 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __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_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1972, __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(0, 1972, __pyx_L1_error)
+1974: f'not {auto_flush_bytes}')
__pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_auto_flush_bytes, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6);
1975:
+1976: if auto_flush_interval is not False and auto_flush_interval < 1:
__pyx_t_1 = (__pyx_v_auto_flush_interval != Py_False);
if (__pyx_t_1) {
} else {
__pyx_t_10 = __pyx_t_1;
goto __pyx_L37_bool_binop_done;
}
__pyx_t_3 = PyObject_RichCompare(__pyx_v_auto_flush_interval, __pyx_mstate_global->__pyx_int_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1976, __pyx_L1_error)
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1976, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_10 = __pyx_t_1;
__pyx_L37_bool_binop_done:;
if (unlikely(__pyx_t_10)) {
/* … */
}
+1977: raise ValueError(
__pyx_t_5 = NULL;
+1978: '"auto_flush_interval" must be >= 1, '
__pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_auto_flush_interval_must_be_1_n, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__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_3)) __PYX_ERR(0, 1977, __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(0, 1977, __pyx_L1_error)
+1979: f'not {auto_flush_interval}')
__pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_auto_flush_interval, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1979, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7);
1980:
1981: # Parse individual auto_flush parameters to C struct.
+1982: c_auto_flush.enabled = auto_flush
__pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_auto_flush); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1982, __pyx_L1_error) __pyx_v_c_auto_flush->enabled = __pyx_t_10;
1983:
+1984: if auto_flush_rows is False:
__pyx_t_10 = (__pyx_v_auto_flush_rows == Py_False);
if (__pyx_t_10) {
/* … */
goto __pyx_L39;
}
+1985: c_auto_flush.row_count = -1
__pyx_v_c_auto_flush->row_count = -1L;
1986: else:
+1987: c_auto_flush.row_count = auto_flush_rows
/*else*/ {
__pyx_t_2 = __Pyx_PyLong_As_int64_t(__pyx_v_auto_flush_rows); if (unlikely((__pyx_t_2 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1987, __pyx_L1_error)
__pyx_v_c_auto_flush->row_count = __pyx_t_2;
}
__pyx_L39:;
1988:
+1989: if auto_flush_bytes is False:
__pyx_t_10 = (__pyx_v_auto_flush_bytes == Py_False);
if (__pyx_t_10) {
/* … */
goto __pyx_L40;
}
+1990: c_auto_flush.byte_count = -1
__pyx_v_c_auto_flush->byte_count = -1L;
1991: else:
+1992: c_auto_flush.byte_count = auto_flush_bytes
/*else*/ {
__pyx_t_2 = __Pyx_PyLong_As_int64_t(__pyx_v_auto_flush_bytes); if (unlikely((__pyx_t_2 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1992, __pyx_L1_error)
__pyx_v_c_auto_flush->byte_count = __pyx_t_2;
}
__pyx_L40:;
1993:
+1994: if auto_flush_interval is False:
__pyx_t_10 = (__pyx_v_auto_flush_interval == Py_False);
if (__pyx_t_10) {
/* … */
goto __pyx_L41;
}
+1995: c_auto_flush.interval = -1
__pyx_v_c_auto_flush->interval = -1L;
1996: else:
+1997: c_auto_flush.interval = auto_flush_interval
/*else*/ {
__pyx_t_2 = __Pyx_PyLong_As_int64_t(__pyx_v_auto_flush_interval); if (unlikely((__pyx_t_2 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1997, __pyx_L1_error)
__pyx_v_c_auto_flush->interval = __pyx_t_2;
}
__pyx_L41:;
1998:
1999:
+2000: cdef void_int _parse_pooled_auto_flush(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__parse_pooled_auto_flush(enum line_sender_protocol __pyx_v_protocol, PyObject *__pyx_v_auto_flush, PyObject *__pyx_v_auto_flush_rows, PyObject *__pyx_v_auto_flush_bytes, PyObject *__pyx_v_auto_flush_interval, struct __pyx_t_7questdb_7_client_auto_flush_mode_t *__pyx_v_c_auto_flush, int *__pyx_v_c_auto_flush_bytes_dynamic) {
int __pyx_v_default_auto_flush_bytes;
__pyx_t_7questdb_7_client_void_int __pyx_r;
__Pyx_INCREF(__pyx_v_auto_flush_rows);
__Pyx_INCREF(__pyx_v_auto_flush_bytes);
__Pyx_INCREF(__pyx_v_auto_flush_interval);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client._parse_pooled_auto_flush", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_auto_flush_rows);
__Pyx_XDECREF(__pyx_v_auto_flush_bytes);
__Pyx_XDECREF(__pyx_v_auto_flush_interval);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2001: line_sender_protocol protocol,
2002: object auto_flush,
2003: object auto_flush_rows,
2004: object auto_flush_bytes,
2005: object auto_flush_interval,
2006: auto_flush_mode_t* c_auto_flush,
2007: bint* c_auto_flush_bytes_dynamic,
2008: ) except -1:
2009: """Parse the QWP pool's Java-builder-compatible auto-flush policy."""
+2010: cdef bint default_auto_flush_bytes = auto_flush_bytes is None
__pyx_t_1 = (__pyx_v_auto_flush_bytes == Py_None); __pyx_v_default_auto_flush_bytes = __pyx_t_1;
+2011: if auto_flush_rows is None:
__pyx_t_1 = (__pyx_v_auto_flush_rows == Py_None);
if (__pyx_t_1) {
/* … */
}
+2012: auto_flush_rows = 1000
__Pyx_INCREF(__pyx_mstate_global->__pyx_int_1000); __Pyx_DECREF_SET(__pyx_v_auto_flush_rows, __pyx_mstate_global->__pyx_int_1000);
+2013: if auto_flush_bytes is None:
__pyx_t_1 = (__pyx_v_auto_flush_bytes == Py_None);
if (__pyx_t_1) {
/* … */
}
2014: # The pooled path derives its byte threshold from the negotiated frame
2015: # cap. Give the generic parser an enabled placeholder so the byte
2016: # trigger alone still turns auto-flush on; the separate flag records
2017: # that this placeholder is dynamic rather than a literal threshold.
+2018: auto_flush_bytes = 1
__Pyx_INCREF(__pyx_mstate_global->__pyx_int_1); __Pyx_DECREF_SET(__pyx_v_auto_flush_bytes, __pyx_mstate_global->__pyx_int_1);
+2019: if auto_flush_interval is None:
__pyx_t_1 = (__pyx_v_auto_flush_interval == Py_None);
if (__pyx_t_1) {
/* … */
}
+2020: auto_flush_interval = 100
__Pyx_INCREF(__pyx_mstate_global->__pyx_int_100); __Pyx_DECREF_SET(__pyx_v_auto_flush_interval, __pyx_mstate_global->__pyx_int_100);
+2021: _parse_auto_flush(
__pyx_t_2 = __pyx_f_7questdb_7_client__parse_auto_flush(__pyx_v_protocol, __pyx_v_auto_flush, __pyx_v_auto_flush_rows, __pyx_v_auto_flush_bytes, __pyx_v_auto_flush_interval, __pyx_v_c_auto_flush, 0); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 2021, __pyx_L1_error)
2022: protocol,
2023: auto_flush,
2024: auto_flush_rows,
2025: auto_flush_bytes,
2026: auto_flush_interval,
2027: c_auto_flush,
2028: 0)
+2029: c_auto_flush_bytes_dynamic[0] = default_auto_flush_bytes
(__pyx_v_c_auto_flush_bytes_dynamic[0]) = __pyx_v_default_auto_flush_bytes;
2030:
2031:
+2032: class TaggedEnum(Enum):
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_Enum); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_16 = PyTuple_Pack(1, __pyx_t_17); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = __Pyx_PEP560_update_bases(__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_13 = __Pyx_CalculateMetaclass(NULL, __pyx_t_17); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_13, __pyx_t_17, __pyx_mstate_global->__pyx_n_u_TaggedEnum, __pyx_mstate_global->__pyx_n_u_TaggedEnum, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_Base_class_for_tagged_enums); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_17 != __pyx_t_16) { if (unlikely((PyDict_SetItemString(__pyx_t_4, "__orig_bases__", __pyx_t_16) < 0))) __PYX_ERR(0, 2032, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; /* … */ __pyx_t_14 = __Pyx_Py3ClassCreate(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_TaggedEnum, __pyx_t_17, __pyx_t_4, NULL, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_14); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TaggedEnum, __pyx_t_14) < (0)) __PYX_ERR(0, 2032, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2033: """
2034: Base class for tagged enums.
2035: """
2036:
+2037: @property
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_10TaggedEnum_1tag(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_10TaggedEnum_tag, "\n Short name.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_10TaggedEnum_1tag = {"tag", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_10TaggedEnum_1tag, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_10TaggedEnum_tag}; static PyObject *__pyx_pw_7questdb_7_client_10TaggedEnum_1tag(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("tag (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(0, 2037, __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(0, 2037, __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, "tag", 0) < (0)) __PYX_ERR(0, 2037, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("tag", 1, 1, 1, i); __PYX_ERR(0, 2037, __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(0, 2037, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("tag", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 2037, __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.TaggedEnum.tag", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_10TaggedEnum_tag(__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_10TaggedEnum_tag(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.TaggedEnum.tag", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_14 = NULL; __pyx_t_19 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_10TaggedEnum_1tag, 0, __pyx_mstate_global->__pyx_n_u_TaggedEnum_tag, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[72])); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2037, __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_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_t_19}; __pyx_t_16 = __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_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2037, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); } if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_tag, __pyx_t_16) < (0)) __PYX_ERR(0, 2037, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
2038: def tag(self):
2039: """
2040: Short name.
2041: """
+2042: return self.value[0]
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2042, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2042, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
2043:
+2044: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_10TaggedEnum_3c_value(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_10TaggedEnum_3c_value = {"c_value", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_10TaggedEnum_3c_value, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_10TaggedEnum_3c_value(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("c_value (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(0, 2044, __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(0, 2044, __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, "c_value", 0) < (0)) __PYX_ERR(0, 2044, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("c_value", 1, 1, 1, i); __PYX_ERR(0, 2044, __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(0, 2044, __pyx_L3_error)
}
__pyx_v_self = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("c_value", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 2044, __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.TaggedEnum.c_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_10TaggedEnum_2c_value(__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_10TaggedEnum_2c_value(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.TaggedEnum.c_value", __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_14 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_10TaggedEnum_3c_value, 0, __pyx_mstate_global->__pyx_n_u_TaggedEnum_c_value, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[73])); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2044, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_14);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_14);
#endif
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_19, __pyx_t_14};
__pyx_t_16 = __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_14); __pyx_t_14 = 0;
if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2044, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
}
if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_c_value, __pyx_t_16) < (0)) __PYX_ERR(0, 2044, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
2045: def c_value(self):
+2046: return self.value[1]
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
2047:
+2048: @classmethod
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_10TaggedEnum_5parse(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_10TaggedEnum_4parse, "\n Parse from the tag name.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_10TaggedEnum_5parse = {"parse", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_10TaggedEnum_5parse, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_10TaggedEnum_4parse}; static PyObject *__pyx_pw_7questdb_7_client_10TaggedEnum_5parse(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_tag = 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("parse (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_tag,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(0, 2048, __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(0, 2048, __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(0, 2048, __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, "parse", 0) < (0)) __PYX_ERR(0, 2048, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("parse", 1, 2, 2, i); __PYX_ERR(0, 2048, __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(0, 2048, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 2048, __pyx_L3_error) } __pyx_v_cls = values[0]; __pyx_v_tag = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("parse", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 2048, __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.TaggedEnum.parse", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_10TaggedEnum_4parse(__pyx_self, __pyx_v_cls, __pyx_v_tag); 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_10TaggedEnum_4parse(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cls, PyObject *__pyx_v_tag) { PyObject *__pyx_v_entry = NULL; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __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_9); __Pyx_AddTraceback("questdb._client.TaggedEnum.parse", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_entry); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_16 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_10TaggedEnum_5parse, __Pyx_CYFUNCTION_CLASSMETHOD, __pyx_mstate_global->__pyx_n_u_TaggedEnum_parse, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[74])); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2048, __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_t_14 = __Pyx_Method_ClassMethod(__pyx_t_16); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_parse, __pyx_t_14) < (0)) __PYX_ERR(0, 2048, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
2049: def parse(cls, tag):
2050: """
2051: Parse from the tag name.
2052: """
+2053: if tag is None:
__pyx_t_1 = (__pyx_v_tag == Py_None);
if (__pyx_t_1) {
/* … */
}
+2054: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
+2055: elif isinstance(tag, cls):
__pyx_t_1 = PyObject_IsInstance(__pyx_v_tag, __pyx_v_cls); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2055, __pyx_L1_error) if (__pyx_t_1) { /* … */ }
+2056: return tag
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_tag); __pyx_r = __pyx_v_tag; goto __pyx_L0;
+2057: elif isinstance(tag, str):
__pyx_t_1 = PyUnicode_Check(__pyx_v_tag);
if (likely(__pyx_t_1)) {
/* … */
}
+2058: for entry in cls:
if (likely(PyList_CheckExact(__pyx_v_cls)) || PyTuple_CheckExact(__pyx_v_cls)) { __pyx_t_2 = __pyx_v_cls; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_cls); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2058, __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(0, 2058, __pyx_L1_error) } 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(0, 2058, __pyx_L1_error) #endif if (__pyx_t_3 >= __pyx_temp) break; } __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_2, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_3; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2058, __pyx_L1_error) #endif if (__pyx_t_3 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3)); #else __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); #endif ++__pyx_t_3; } if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2058, __pyx_L1_error) } else { __pyx_t_5 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 2058, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_entry, __pyx_t_5); __pyx_t_5 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2059: if entry.tag == tag:
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_entry, __pyx_mstate_global->__pyx_n_u_tag); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_v_tag, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2059, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2059, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_1) { /* … */ }
+2060: return entry
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_entry); __pyx_r = __pyx_v_entry; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0;
+2061: raise ValueError(f'Invalid value for {cls.__name__}: {tag!r}')
__pyx_t_6 = NULL;
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_cls, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2061, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2061, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_tag), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2061, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_value_for;
__pyx_t_8[1] = __pyx_t_7;
__pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_;
__pyx_t_8[3] = __pyx_t_5;
__pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_8, 4, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2061, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_10 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_9};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2061, __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(0, 2061, __pyx_L1_error)
2062: else:
+2063: raise ValueError(f'Invalid value for {cls.__name__}: {tag!r}')
/*else*/ {
__pyx_t_9 = NULL;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_cls, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2063, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2063, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_tag), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2063, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_value_for;
__pyx_t_8[1] = __pyx_t_5;
__pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_;
__pyx_t_8[3] = __pyx_t_6;
__pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_8, 4, 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6));
if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2063, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_10 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_7};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2063, __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(0, 2063, __pyx_L1_error)
}
2064:
2065:
+2066: class Protocol(TaggedEnum):
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_TaggedEnum); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_13 = PyTuple_Pack(1, __pyx_t_17); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = __Pyx_PEP560_update_bases(__pyx_t_13); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_4 = __Pyx_CalculateMetaclass(NULL, __pyx_t_17); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_14 = __Pyx_Py3MetaclassPrepare(__pyx_t_4, __pyx_t_17, __pyx_mstate_global->__pyx_n_u_Protocol, __pyx_mstate_global->__pyx_n_u_Protocol, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_Protocol_to_use_for_sending_dat); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (__pyx_t_17 != __pyx_t_13) { if (unlikely((PyDict_SetItemString(__pyx_t_14, "__orig_bases__", __pyx_t_13) < 0))) __PYX_ERR(0, 2066, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; /* … */ __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Protocol, __pyx_t_17, __pyx_t_14, NULL, 0, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Protocol, __pyx_t_13) < (0)) __PYX_ERR(0, 2066, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2067: """
2068: Protocol to use for sending data to QuestDB.
2069:
2070: See :ref:`sender_which_protocol` for more information.
2071: """
+2072: Tcp = ('tcp', 0)
if (__Pyx_SetNameInClass(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_Tcp, __pyx_mstate_global->__pyx_tuple[9]) < (0)) __PYX_ERR(0, 2072, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[9] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_tcp, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[9])) __PYX_ERR(0, 2072, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[9]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[9]);
+2073: Tcps = ('tcps', 1)
if (__Pyx_SetNameInClass(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_Tcps, __pyx_mstate_global->__pyx_tuple[10]) < (0)) __PYX_ERR(0, 2073, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[10] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_tcps, __pyx_mstate_global->__pyx_int_1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[10])) __PYX_ERR(0, 2073, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[10]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[10]);
+2074: Http = ('http', 2)
if (__Pyx_SetNameInClass(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_Http, __pyx_mstate_global->__pyx_tuple[11]) < (0)) __PYX_ERR(0, 2074, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[11] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_http, __pyx_mstate_global->__pyx_int_2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[11])) __PYX_ERR(0, 2074, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[11]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[11]);
+2075: Https = ('https', 3)
if (__Pyx_SetNameInClass(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_Https, __pyx_mstate_global->__pyx_tuple[12]) < (0)) __PYX_ERR(0, 2075, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[12] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_https, __pyx_mstate_global->__pyx_int_3); if (unlikely(!__pyx_mstate_global->__pyx_tuple[12])) __PYX_ERR(0, 2075, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[12]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[12]);
+2076: Udp = ('udp', 4)
if (__Pyx_SetNameInClass(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_Udp, __pyx_mstate_global->__pyx_tuple[13]) < (0)) __PYX_ERR(0, 2076, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[13] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_udp, __pyx_mstate_global->__pyx_int_4); if (unlikely(!__pyx_mstate_global->__pyx_tuple[13])) __PYX_ERR(0, 2076, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[13]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[13]);
+2077: Ws = ('ws', 5)
if (__Pyx_SetNameInClass(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_Ws, __pyx_mstate_global->__pyx_tuple[14]) < (0)) __PYX_ERR(0, 2077, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[14] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_ws, __pyx_mstate_global->__pyx_int_5); if (unlikely(!__pyx_mstate_global->__pyx_tuple[14])) __PYX_ERR(0, 2077, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[14]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[14]);
+2078: Wss = ('wss', 6)
if (__Pyx_SetNameInClass(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_Wss, __pyx_mstate_global->__pyx_tuple[15]) < (0)) __PYX_ERR(0, 2078, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[15] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_wss, __pyx_mstate_global->__pyx_int_6); if (unlikely(!__pyx_mstate_global->__pyx_tuple[15])) __PYX_ERR(0, 2078, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[15]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[15]);
2079:
+2080: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_8Protocol_1tls_enabled(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_8Protocol_1tls_enabled = {"tls_enabled", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_8Protocol_1tls_enabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_8Protocol_1tls_enabled(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("tls_enabled (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(0, 2080, __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(0, 2080, __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, "tls_enabled", 0) < (0)) __PYX_ERR(0, 2080, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("tls_enabled", 1, 1, 1, i); __PYX_ERR(0, 2080, __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(0, 2080, __pyx_L3_error)
}
__pyx_v_self = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("tls_enabled", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 2080, __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.Protocol.tls_enabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_8Protocol_tls_enabled(__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_8Protocol_tls_enabled(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.Protocol.tls_enabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_16 = NULL;
__pyx_t_19 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_8Protocol_1tls_enabled, 0, __pyx_mstate_global->__pyx_n_u_Protocol_tls_enabled, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[75])); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2080, __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_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_16, __pyx_t_19};
__pyx_t_13 = __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_16); __pyx_t_16 = 0;
__Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2080, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
}
if (__Pyx_SetNameInClass(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_tls_enabled, __pyx_t_13) < (0)) __PYX_ERR(0, 2080, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
2081: def tls_enabled(self):
+2082: return self in (Protocol.Tcps, Protocol.Https, Protocol.Wss)
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_self); __pyx_t_1 = __pyx_v_self; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Protocol); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2082, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Tcps); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2082, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2082, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 2082, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!__pyx_t_5) { } else { __pyx_t_2 = __pyx_t_5; goto __pyx_L3_bool_binop_done; } __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Protocol); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2082, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Https); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2082, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2082, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 2082, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!__pyx_t_5) { } else { __pyx_t_2 = __pyx_t_5; goto __pyx_L3_bool_binop_done; } __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Protocol); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2082, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Wss); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2082, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2082, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 2082, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_5; __pyx_L3_bool_binop_done:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2082, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
2083:
2084:
+2085: class QwpWsProgress(TaggedEnum):
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_TaggedEnum); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2085, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_4 = PyTuple_Pack(1, __pyx_t_17); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2085, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = __Pyx_PEP560_update_bases(__pyx_t_4); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2085, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_14 = __Pyx_CalculateMetaclass(NULL, __pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2085, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_13 = __Pyx_Py3MetaclassPrepare(__pyx_t_14, __pyx_t_17, __pyx_mstate_global->__pyx_n_u_QwpWsProgress, __pyx_mstate_global->__pyx_n_u_QwpWsProgress, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_Progress_mode_for_QWP_WebSocket); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2085, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (__pyx_t_17 != __pyx_t_4) { if (unlikely((PyDict_SetItemString(__pyx_t_13, "__orig_bases__", __pyx_t_4) < 0))) __PYX_ERR(0, 2085, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_QwpWsProgress, __pyx_t_17, __pyx_t_13, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2085, __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_QwpWsProgress, __pyx_t_4) < (0)) __PYX_ERR(0, 2085, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2086: """
2087: Progress mode for QWP/WebSocket senders.
2088: """
+2089: Background = ('background', LINE_SENDER_QWPWS_PROGRESS_BACKGROUND)
__pyx_t_4 = __Pyx_PyLong_From_enum__line_sender_qwpws_progress(LINE_SENDER_QWPWS_PROGRESS_BACKGROUND); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2089, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_19 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_background, __pyx_t_4); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2089, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_Background, __pyx_t_19) < (0)) __PYX_ERR(0, 2089, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+2090: Manual = ('manual', LINE_SENDER_QWPWS_PROGRESS_MANUAL)
__pyx_t_19 = __Pyx_PyLong_From_enum__line_sender_qwpws_progress(LINE_SENDER_QWPWS_PROGRESS_MANUAL); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_4 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_manual, __pyx_t_19); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_Manual, __pyx_t_4) < (0)) __PYX_ERR(0, 2090, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2091:
2092:
+2093: class SenderErrorCategory(TaggedEnum):
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_TaggedEnum); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_14 = PyTuple_Pack(1, __pyx_t_17); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = __Pyx_PEP560_update_bases(__pyx_t_14); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_13 = __Pyx_CalculateMetaclass(NULL, __pyx_t_17); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_13, __pyx_t_17, __pyx_mstate_global->__pyx_n_u_SenderErrorCategory, __pyx_mstate_global->__pyx_n_u_SenderErrorCategory, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_Category_of_a_structured_QWP_We); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_17 != __pyx_t_14) { if (unlikely((PyDict_SetItemString(__pyx_t_4, "__orig_bases__", __pyx_t_14) < 0))) __PYX_ERR(0, 2093, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; /* … */ __pyx_t_14 = __Pyx_Py3ClassCreate(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_SenderErrorCategory, __pyx_t_17, __pyx_t_4, NULL, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_14); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SenderErrorCategory, __pyx_t_14) < (0)) __PYX_ERR(0, 2093, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2094: """
2095: Category of a structured QWP/WebSocket diagnostic.
2096: """
2097: SchemaMismatch = (
+2098: 'schema_mismatch',
__pyx_t_19 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_schema_mismatch, __pyx_t_14); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2098, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SchemaMismatch, __pyx_t_19) < (0)) __PYX_ERR(0, 2097, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+2099: LINE_SENDER_QWPWS_ERROR_SCHEMA_MISMATCH)
__pyx_t_14 = __Pyx_PyLong_From_enum__line_sender_qwpws_error_category(LINE_SENDER_QWPWS_ERROR_SCHEMA_MISMATCH); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2099, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14);
+2100: ParseError = ('parse_error', LINE_SENDER_QWPWS_ERROR_PARSE_ERROR)
__pyx_t_19 = __Pyx_PyLong_From_enum__line_sender_qwpws_error_category(LINE_SENDER_QWPWS_ERROR_PARSE_ERROR); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_14 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_parse_error, __pyx_t_19); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ParseError, __pyx_t_14) < (0)) __PYX_ERR(0, 2100, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+2101: InternalError = ('internal_error', LINE_SENDER_QWPWS_ERROR_INTERNAL_ERROR)
__pyx_t_14 = __Pyx_PyLong_From_enum__line_sender_qwpws_error_category(LINE_SENDER_QWPWS_ERROR_INTERNAL_ERROR); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_19 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_internal_error, __pyx_t_14); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_InternalError, __pyx_t_19) < (0)) __PYX_ERR(0, 2101, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+2102: SecurityError = ('security_error', LINE_SENDER_QWPWS_ERROR_SECURITY_ERROR)
__pyx_t_19 = __Pyx_PyLong_From_enum__line_sender_qwpws_error_category(LINE_SENDER_QWPWS_ERROR_SECURITY_ERROR); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_14 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_security_error, __pyx_t_19); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SecurityError, __pyx_t_14) < (0)) __PYX_ERR(0, 2102, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+2103: WriteError = ('write_error', LINE_SENDER_QWPWS_ERROR_WRITE_ERROR)
__pyx_t_14 = __Pyx_PyLong_From_enum__line_sender_qwpws_error_category(LINE_SENDER_QWPWS_ERROR_WRITE_ERROR); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_19 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_write_error, __pyx_t_14); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_WriteError, __pyx_t_19) < (0)) __PYX_ERR(0, 2103, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+2104: NotWritable = ('not_writable', LINE_SENDER_QWPWS_ERROR_NOT_WRITABLE)
__pyx_t_19 = __Pyx_PyLong_From_enum__line_sender_qwpws_error_category(LINE_SENDER_QWPWS_ERROR_NOT_WRITABLE); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_14 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_not_writable, __pyx_t_19); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_NotWritable, __pyx_t_14) < (0)) __PYX_ERR(0, 2104, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
2105: ProtocolViolation = (
+2106: 'protocol_violation',
__pyx_t_19 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_protocol_violation, __pyx_t_14); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ProtocolViolation, __pyx_t_19) < (0)) __PYX_ERR(0, 2105, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+2107: LINE_SENDER_QWPWS_ERROR_PROTOCOL_VIOLATION)
__pyx_t_14 = __Pyx_PyLong_From_enum__line_sender_qwpws_error_category(LINE_SENDER_QWPWS_ERROR_PROTOCOL_VIOLATION); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14);
+2108: Unknown = ('unknown', LINE_SENDER_QWPWS_ERROR_UNKNOWN)
__pyx_t_19 = __Pyx_PyLong_From_enum__line_sender_qwpws_error_category(LINE_SENDER_QWPWS_ERROR_UNKNOWN); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_14 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_unknown, __pyx_t_19); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Unknown, __pyx_t_14) < (0)) __PYX_ERR(0, 2108, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
2109:
2110:
+2111: class SenderErrorPolicy(TaggedEnum):
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_TaggedEnum); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_13 = PyTuple_Pack(1, __pyx_t_17); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = __Pyx_PEP560_update_bases(__pyx_t_13); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_4 = __Pyx_CalculateMetaclass(NULL, __pyx_t_17); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_14 = __Pyx_Py3MetaclassPrepare(__pyx_t_4, __pyx_t_17, __pyx_mstate_global->__pyx_n_u_SenderErrorPolicy, __pyx_mstate_global->__pyx_n_u_SenderErrorPolicy, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_Applied_policy_for_a_structured); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (__pyx_t_17 != __pyx_t_13) { if (unlikely((PyDict_SetItemString(__pyx_t_14, "__orig_bases__", __pyx_t_13) < 0))) __PYX_ERR(0, 2111, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; /* … */ __pyx_t_19 = __Pyx_Py3ClassCreate(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SenderErrorPolicy, __pyx_t_17, __pyx_t_14, NULL, 0, 0); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_19); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SenderErrorPolicy, __pyx_t_19) < (0)) __PYX_ERR(0, 2111, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2112: """
2113: Applied policy for a structured QWP/WebSocket diagnostic.
2114: """
+2115: Retriable = ('retriable', LINE_SENDER_QWPWS_ERROR_RETRIABLE)
__pyx_t_13 = __Pyx_PyLong_From_enum__line_sender_qwpws_error_policy(LINE_SENDER_QWPWS_ERROR_RETRIABLE); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_19 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_retriable, __pyx_t_13); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__Pyx_SetNameInClass(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_Retriable, __pyx_t_19) < (0)) __PYX_ERR(0, 2115, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
2116: RetriableOther = (
+2117: 'retriable_other',
__pyx_t_13 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_retriable_other, __pyx_t_19); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (__Pyx_SetNameInClass(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_RetriableOther, __pyx_t_13) < (0)) __PYX_ERR(0, 2116, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+2118: LINE_SENDER_QWPWS_ERROR_RETRIABLE_OTHER)
__pyx_t_19 = __Pyx_PyLong_From_enum__line_sender_qwpws_error_policy(LINE_SENDER_QWPWS_ERROR_RETRIABLE_OTHER); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2118, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19);
+2119: Terminal = ('terminal', LINE_SENDER_QWPWS_ERROR_TERMINAL)
__pyx_t_13 = __Pyx_PyLong_From_enum__line_sender_qwpws_error_policy(LINE_SENDER_QWPWS_ERROR_TERMINAL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_19 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_terminal, __pyx_t_13); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__Pyx_SetNameInClass(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_Terminal, __pyx_t_19) < (0)) __PYX_ERR(0, 2119, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
2120:
2121:
+2122: @dataclass(frozen=True)
__pyx_t_14 = NULL; __pyx_t_13 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_dataclass); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_6 = 1; { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_13, NULL}; __pyx_t_18 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_frozen, Py_True, __pyx_t_18, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 2122, __pyx_L1_error) __pyx_t_19 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_16, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_18); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); }
+2123: class SenderError:
__pyx_t_17 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_SenderError, __pyx_mstate_global->__pyx_n_u_SenderError, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_Structured_QWP_WebSocket_server); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_4 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_category, __pyx_mstate_global->__pyx_n_u_SenderErrorCategory) < (0)) __PYX_ERR(0, 2123, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_applied_policy, __pyx_mstate_global->__pyx_n_u_SenderErrorPolicy) < (0)) __PYX_ERR(0, 2123, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_status, __pyx_mstate_global->__pyx_kp_u_Optional_int) < (0)) __PYX_ERR(0, 2123, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_message, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(0, 2123, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_message_sequence, __pyx_mstate_global->__pyx_kp_u_Optional_int) < (0)) __PYX_ERR(0, 2123, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_from_fsn, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 2123, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_to_fsn, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 2123, __pyx_L1_error) if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_annotations, __pyx_t_4) < (0)) __PYX_ERR(0, 2123, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_t_16 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_SenderError, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_17, NULL, 0, 0); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2123, __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_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_t_16}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_19, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SenderError, __pyx_t_4) < (0)) __PYX_ERR(0, 2123, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2124: """Structured QWP/WebSocket server diagnostic."""
2125: category: SenderErrorCategory
2126: applied_policy: SenderErrorPolicy
2127: status: Optional[int]
2128: message: str
2129: message_sequence: Optional[int]
2130: from_fsn: int
2131: to_fsn: int
2132:
2133:
+2134: class ConnectionEventKind(TaggedEnum):
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_TaggedEnum); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2134, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_4 = PyTuple_Pack(1, __pyx_t_17); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2134, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = __Pyx_PEP560_update_bases(__pyx_t_4); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2134, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_19 = __Pyx_CalculateMetaclass(NULL, __pyx_t_17); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2134, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_16 = __Pyx_Py3MetaclassPrepare(__pyx_t_19, __pyx_t_17, __pyx_mstate_global->__pyx_n_u_ConnectionEventKind, __pyx_mstate_global->__pyx_n_u_ConnectionEventKind, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_Connection_state_transitions_ob); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2134, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (__pyx_t_17 != __pyx_t_4) { if (unlikely((PyDict_SetItemString(__pyx_t_16, "__orig_bases__", __pyx_t_4) < 0))) __PYX_ERR(0, 2134, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_ConnectionEventKind, __pyx_t_17, __pyx_t_16, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2134, __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_ConnectionEventKind, __pyx_t_4) < (0)) __PYX_ERR(0, 2134, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2135: """
2136: Connection-state transitions observed by the ingress connection pool.
2137: """
2138: #: First successful connect of the pool's lifetime.
+2139: Connected = ('connected', 0)
if (__Pyx_SetNameInClass(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_Connected, __pyx_mstate_global->__pyx_tuple[16]) < (0)) __PYX_ERR(0, 2139, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[16] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_connected, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[16])) __PYX_ERR(0, 2139, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[16]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[16]);
2140: #: An active wire connection died.
+2141: Disconnected = ('disconnected', 1)
if (__Pyx_SetNameInClass(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_Disconnected, __pyx_mstate_global->__pyx_tuple[17]) < (0)) __PYX_ERR(0, 2141, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[17] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_disconnected, __pyx_mstate_global->__pyx_int_1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[17])) __PYX_ERR(0, 2141, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[17]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[17]);
2142: #: Reconnect succeeded against the same endpoint after a failure.
+2143: Reconnected = ('reconnected', 2)
if (__Pyx_SetNameInClass(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_Reconnected, __pyx_mstate_global->__pyx_tuple[18]) < (0)) __PYX_ERR(0, 2143, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[18] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_reconnected, __pyx_mstate_global->__pyx_int_2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[18])) __PYX_ERR(0, 2143, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[18]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[18]);
2144: #: Reconnect succeeded against a different endpoint.
+2145: FailedOver = ('failed_over', 3)
if (__Pyx_SetNameInClass(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_FailedOver, __pyx_mstate_global->__pyx_tuple[19]) < (0)) __PYX_ERR(0, 2145, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[19] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_failed_over, __pyx_mstate_global->__pyx_int_3); if (unlikely(!__pyx_mstate_global->__pyx_tuple[19])) __PYX_ERR(0, 2145, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[19]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[19]);
2146: #: One endpoint connect/upgrade attempt failed; the walk moves on.
+2147: EndpointAttemptFailed = ('endpoint_attempt_failed', 4)
if (__Pyx_SetNameInClass(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_EndpointAttemptFailed, __pyx_mstate_global->__pyx_tuple[20]) < (0)) __PYX_ERR(0, 2147, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[20] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_endpoint_attempt_failed, __pyx_mstate_global->__pyx_int_4); if (unlikely(!__pyx_mstate_global->__pyx_tuple[20])) __PYX_ERR(0, 2147, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[20]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[20]);
2148: #: Every configured endpoint was attempted and none accepted.
+2149: AllEndpointsUnreachable = ('all_endpoints_unreachable', 5)
if (__Pyx_SetNameInClass(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_AllEndpointsUnreachable, __pyx_mstate_global->__pyx_tuple[21]) < (0)) __PYX_ERR(0, 2149, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[21] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_all_endpoints_unreachable, __pyx_mstate_global->__pyx_int_5); if (unlikely(!__pyx_mstate_global->__pyx_tuple[21])) __PYX_ERR(0, 2149, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[21]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[21]);
2150: #: Terminal: the server rejected credentials.
+2151: AuthFailed = ('auth_failed', 6)
if (__Pyx_SetNameInClass(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_AuthFailed, __pyx_mstate_global->__pyx_tuple[22]) < (0)) __PYX_ERR(0, 2151, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[22] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_auth_failed, __pyx_mstate_global->__pyx_int_6); if (unlikely(!__pyx_mstate_global->__pyx_tuple[22])) __PYX_ERR(0, 2151, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[22]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[22]);
2152:
2153:
+2154: @dataclass(frozen=True)
__pyx_t_16 = NULL; __pyx_t_14 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_dataclass); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_6 = 1; { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_14, NULL}; __pyx_t_13 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_frozen, Py_True, __pyx_t_13, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 2154, __pyx_L1_error) __pyx_t_4 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_18, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_13); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); }
+2155: class ConnectionEvent:
__pyx_t_17 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ConnectionEvent, __pyx_mstate_global->__pyx_n_u_ConnectionEvent, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_One_connection_state_transition); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_19 = __Pyx_PyDict_NewPresized(9); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_kind, __pyx_mstate_global->__pyx_n_u_ConnectionEventKind) < (0)) __PYX_ERR(0, 2155, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_host, __pyx_mstate_global->__pyx_kp_u_Optional_str) < (0)) __PYX_ERR(0, 2155, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_port, __pyx_mstate_global->__pyx_kp_u_Optional_str) < (0)) __PYX_ERR(0, 2155, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_previous_host, __pyx_mstate_global->__pyx_kp_u_Optional_str) < (0)) __PYX_ERR(0, 2155, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_previous_port, __pyx_mstate_global->__pyx_kp_u_Optional_str) < (0)) __PYX_ERR(0, 2155, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_attempt_number, __pyx_mstate_global->__pyx_kp_u_Optional_int) < (0)) __PYX_ERR(0, 2155, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_cause_code, __pyx_mstate_global->__pyx_kp_u_Optional_QuestDBErrorCode) < (0)) __PYX_ERR(0, 2155, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_cause_msg, __pyx_mstate_global->__pyx_kp_u_Optional_str) < (0)) __PYX_ERR(0, 2155, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_timestamp_millis, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 2155, __pyx_L1_error) if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_annotations, __pyx_t_19) < (0)) __PYX_ERR(0, 2155, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; /* … */ __pyx_t_18 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ConnectionEvent, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_17, NULL, 0, 0); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18); #endif __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_16, __pyx_t_18}; __pyx_t_19 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__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; if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); } if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ConnectionEvent, __pyx_t_19) < (0)) __PYX_ERR(0, 2155, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2156: """
2157: One connection-state transition, delivered to the
2158: ``connection_listener`` registered via :meth:`QuestDB.from_conf`.
2159:
2160: Listeners run on a dedicated dispatcher thread — never on an I/O or
2161: caller thread — fed by a bounded inbox with a drop-oldest overflow
2162: policy, so a slow listener cannot stall ingest or reconnects.
2163: Successful events are queued only after negotiated connection state,
2164: including the server-advertised frame cap, is committed. They are not
2165: data-delivery or acknowledgement barriers.
2166: Exceptions raised by the listener are logged and swallowed.
2167: """
2168: kind: ConnectionEventKind
2169: host: Optional[str]
2170: port: Optional[str]
2171: #: For :attr:`ConnectionEventKind.FailedOver`, the previously-active
2172: #: endpoint.
2173: previous_host: Optional[str]
2174: previous_port: Optional[str]
2175: #: Monotonic connect-attempt counter at the time the event fired.
2176: attempt_number: Optional[int]
2177: cause_code: Optional[QuestDBErrorCode]
2178: cause_msg: Optional[str]
2179: #: Wall-clock time of the event, milliseconds since the Unix epoch.
2180: timestamp_millis: int
2181:
2182:
+2183: cdef inline object _conn_event_str(const char* buf, size_t buf_len):
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client__conn_event_str(char const *__pyx_v_buf, size_t __pyx_v_buf_len) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client._conn_event_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2184: if buf == NULL:
__pyx_t_1 = (__pyx_v_buf == NULL);
if (__pyx_t_1) {
/* … */
}
+2185: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
+2186: return PyUnicode_FromStringAndSize(buf, <Py_ssize_t>buf_len)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyUnicode_FromStringAndSize(__pyx_v_buf, ((Py_ssize_t)__pyx_v_buf_len)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
2187:
2188:
+2189: _DISPATCH_THREAD = threading.local()
__pyx_t_19 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_threading); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_local); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_19, NULL}; __pyx_t_17 = __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_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); } if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_DISPATCH_THREAD, __pyx_t_17) < (0)) __PYX_ERR(0, 2189, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2190:
2191:
2192: # Module-level strong root for callback targets registered with the native
2193: # dispatchers. It keeps each handler/listener function object reachable from a
2194: # GC root for as long as its dispatchers can still fire, so the cycle collector
2195: # never clears a live callback's internals (which would crash the interpreter
2196: # when a dispatch calls it). A handle abandoned in a reference cycle through its
2197: # own callback therefore leaks rather than crashing; explicit close() removes
2198: # the entry once the dispatchers are joined and lets the cycle collect.
+2199: _LIVE_CALLBACK_REFS = {}
__pyx_t_17 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_LIVE_CALLBACK_REFS, __pyx_t_17) < (0)) __PYX_ERR(0, 2199, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2200:
2201:
2202: # The registry is keyed by a value captured while the owner is alive and
2203: # released through that key alone: `tp_dealloc` must never pass the dying
2204: # owner back into Python-level calls (PyPy's cpyext aborts on reviving a
2205: # dying object mid-dealloc).
+2206: cdef size_t _retain_callback_refs(
static size_t __pyx_f_7questdb_7_client__retain_callback_refs(PyObject *__pyx_v_owner, PyObject *__pyx_v_error_handler, PyObject *__pyx_v_listener) {
size_t __pyx_v_key;
size_t __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client._retain_callback_refs", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1L;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2207: object owner, object error_handler, object listener):
+2208: cdef size_t key = id(owner)
__pyx_t_2 = NULL;
__pyx_t_3 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_owner};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_id, __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;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2208, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_3 = __Pyx_PyLong_As_size_t(__pyx_t_1); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2208, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_key = __pyx_t_3;
+2209: _LIVE_CALLBACK_REFS[key] = (error_handler, listener)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_error_handler); __Pyx_GIVEREF(__pyx_v_error_handler); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_error_handler) != (0)) __PYX_ERR(0, 2209, __pyx_L1_error); __Pyx_INCREF(__pyx_v_listener); __Pyx_GIVEREF(__pyx_v_listener); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_listener) != (0)) __PYX_ERR(0, 2209, __pyx_L1_error); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_LIVE_CALLBACK_REFS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely((__Pyx_SetItemInt(__pyx_t_2, __pyx_v_key, __pyx_t_1, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(0, 2209, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2210: return key
__pyx_r = __pyx_v_key; goto __pyx_L0;
2211:
2212:
+2213: cdef _release_callback_refs(size_t key):
static PyObject *__pyx_f_7questdb_7_client__release_callback_refs(size_t __pyx_v_key) {
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_5);
__Pyx_AddTraceback("questdb._client._release_callback_refs", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2214: if key != 0:
__pyx_t_1 = (__pyx_v_key != 0);
if (__pyx_t_1) {
/* … */
}
+2215: _LIVE_CALLBACK_REFS.pop(key, None)
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_LIVE_CALLBACK_REFS); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2215, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_pop); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2215, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyLong_FromSize_t(__pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2215, __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[3] = {__pyx_t_3, __pyx_t_4, Py_None};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__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;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2215, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2216:
2217:
+2218: cdef list _dispatch_target_stack():
static PyObject *__pyx_f_7questdb_7_client__dispatch_target_stack(void) {
PyObject *__pyx_v_stack = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client._dispatch_target_stack", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_stack);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2219: stack = getattr(_DISPATCH_THREAD, 'targets', None)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_DISPATCH_THREAD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2219, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetAttr3(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_targets, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2219, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_stack = __pyx_t_2; __pyx_t_2 = 0;
+2220: if stack is None:
__pyx_t_3 = (__pyx_v_stack == Py_None);
if (__pyx_t_3) {
/* … */
}
+2221: stack = []
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2221, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_stack, __pyx_t_2); __pyx_t_2 = 0;
+2222: _DISPATCH_THREAD.targets = stack
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_DISPATCH_THREAD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2222, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__Pyx_PyObject_SetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_targets, __pyx_v_stack) < (0)) __PYX_ERR(0, 2222, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2223: return stack
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __pyx_v_stack; __Pyx_INCREF(__pyx_t_2); if (!(likely(PyList_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_2))) __PYX_ERR(0, 2223, __pyx_L1_error) __pyx_r = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0;
2224:
2225:
+2226: cdef bint _on_dispatch_thread_for(object handler, object listener):
static int __pyx_f_7questdb_7_client__on_dispatch_thread_for(PyObject *__pyx_v_handler, PyObject *__pyx_v_listener) {
PyObject *__pyx_v_stack = NULL;
PyObject *__pyx_v_target = NULL;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client._on_dispatch_thread_for", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_stack);
__Pyx_XDECREF(__pyx_v_target);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2227: stack = getattr(_DISPATCH_THREAD, 'targets', None)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_DISPATCH_THREAD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetAttr3(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_targets, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_stack = __pyx_t_2; __pyx_t_2 = 0;
+2228: if not stack:
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_stack); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 2228, __pyx_L1_error) __pyx_t_4 = (!__pyx_t_3); if (__pyx_t_4) { /* … */ }
+2229: return False
__pyx_r = 0;
goto __pyx_L0;
+2230: for target in stack:
if (likely(PyList_CheckExact(__pyx_v_stack)) || PyTuple_CheckExact(__pyx_v_stack)) { __pyx_t_2 = __pyx_v_stack; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_stack); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2230, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_6)) { 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(0, 2230, __pyx_L1_error) #endif if (__pyx_t_5 >= __pyx_temp) break; } __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_2, __pyx_t_5, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_5; } 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(0, 2230, __pyx_L1_error) #endif if (__pyx_t_5 >= __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_5)); #else __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_5); #endif ++__pyx_t_5; } if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2230, __pyx_L1_error) } else { __pyx_t_1 = __pyx_t_6(__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(0, 2230, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_target, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2231: if target is handler or target is listener:
__pyx_t_3 = (__pyx_v_target == __pyx_v_handler);
if (!__pyx_t_3) {
} else {
__pyx_t_4 = __pyx_t_3;
goto __pyx_L7_bool_binop_done;
}
__pyx_t_3 = (__pyx_v_target == __pyx_v_listener);
__pyx_t_4 = __pyx_t_3;
__pyx_L7_bool_binop_done:;
if (__pyx_t_4) {
/* … */
}
+2232: return True
__pyx_r = 1;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
goto __pyx_L0;
+2233: return False
__pyx_r = 0; goto __pyx_L0;
2234:
2235:
+2236: cdef void _connection_event_dispatch(
static void __pyx_f_7questdb_7_client__connection_event_dispatch(void *__pyx_v_user_data, struct questdb_connection_event const *__pyx_v_event) {
PyObject *__pyx_v_listener = NULL;
PyObject *__pyx_v_stack = NULL;
PyObject *__pyx_v_kind = NULL;
PyObject *__pyx_v_entry = 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_9);
__Pyx_XDECREF(__pyx_t_10);
__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_17);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_XDECREF(__pyx_t_19);
__Pyx_XDECREF(__pyx_t_20);
__Pyx_XDECREF(__pyx_t_21);
__Pyx_XDECREF(__pyx_t_23);
__Pyx_WriteUnraisable("questdb._client._connection_event_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_listener);
__Pyx_XDECREF(__pyx_v_stack);
__Pyx_XDECREF(__pyx_v_kind);
__Pyx_XDECREF(__pyx_v_entry);
__Pyx_RefNannyFinishContext();
__Pyx_PyGILState_Release(__pyx_gilstate_save);
}
2237: void* user_data,
2238: const questdb_connection_event* event) noexcept with gil:
+2239: listener = <object>user_data
__pyx_t_1 = ((PyObject *)__pyx_v_user_data);
__Pyx_INCREF(__pyx_t_1);
__pyx_v_listener = __pyx_t_1;
__pyx_t_1 = 0;
+2240: stack = _dispatch_target_stack()
__pyx_t_1 = __pyx_f_7questdb_7_client__dispatch_target_stack(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_stack = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2241: stack.append(listener)
if (unlikely(__pyx_v_stack == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
__PYX_ERR(0, 2241, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_PyList_Append(__pyx_v_stack, __pyx_v_listener); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2241, __pyx_L1_error)
+2242: try:
/*try:*/ {
{
/*try:*/ {
/* … */
}
__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;
goto __pyx_L11_try_end;
__pyx_L6_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
__Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
__Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
__Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L8_except_error:;
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
goto __pyx_L4_error;
__pyx_L7_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
__pyx_L11_try_end:;
}
}
+2243: kind = ConnectionEventKind.Connected
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ConnectionEventKind); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2243, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_Connected); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2243, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_kind = __pyx_t_6; __pyx_t_6 = 0;
+2244: for entry in ConnectionEventKind:
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ConnectionEventKind); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2244, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_6); if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) { __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2244, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2244, __pyx_L6_error) } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; for (;;) { if (likely(!__pyx_t_8)) { if (likely(PyList_CheckExact(__pyx_t_1))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2244, __pyx_L6_error) #endif if (__pyx_t_7 >= __pyx_temp) break; } __pyx_t_6 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_7, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_7; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2244, __pyx_L6_error) #endif if (__pyx_t_7 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7)); #else __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_7); #endif ++__pyx_t_7; } if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2244, __pyx_L6_error) } else { __pyx_t_6 = __pyx_t_8(__pyx_t_1); if (unlikely(!__pyx_t_6)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 2244, __pyx_L6_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_entry, __pyx_t_6); __pyx_t_6 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L15_for_end; __pyx_L13_break:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L15_for_end; __pyx_L15_for_end:;
+2245: if entry.c_value == <int>event.kind:
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_entry, __pyx_mstate_global->__pyx_n_u_c_value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2245, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = __Pyx_PyLong_From_int(((int)__pyx_v_event->kind)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2245, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = PyObject_RichCompare(__pyx_t_6, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2245, __pyx_L6_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 2245, __pyx_L6_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (__pyx_t_11) { /* … */ }
+2246: kind = entry
__Pyx_INCREF(__pyx_v_entry); __Pyx_DECREF_SET(__pyx_v_kind, __pyx_v_entry);
+2247: break
goto __pyx_L13_break;
+2248: listener(ConnectionEvent(
__pyx_t_10 = NULL;
__Pyx_INCREF(__pyx_v_listener);
__pyx_t_9 = __pyx_v_listener;
__pyx_t_12 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_ConnectionEvent); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2248, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_13);
2249: kind=kind,
+2250: host=_conn_event_str(event.host, event.host_len),
__pyx_t_14 = __pyx_f_7questdb_7_client__conn_event_str(__pyx_v_event->host, __pyx_v_event->host_len); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2250, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_14);
+2251: port=_conn_event_str(event.port, event.port_len),
__pyx_t_15 = __pyx_f_7questdb_7_client__conn_event_str(__pyx_v_event->port, __pyx_v_event->port_len); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2251, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_15);
+2252: previous_host=_conn_event_str(
__pyx_t_16 = __pyx_f_7questdb_7_client__conn_event_str(__pyx_v_event->previous_host, __pyx_v_event->previous_host_len); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2252, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_16);
2253: event.previous_host, event.previous_host_len),
+2254: previous_port=_conn_event_str(
__pyx_t_17 = __pyx_f_7questdb_7_client__conn_event_str(__pyx_v_event->previous_port, __pyx_v_event->previous_port_len); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2254, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_17);
2255: event.previous_port, event.previous_port_len),
+2256: attempt_number=event.attempt_number
__pyx_t_19 = __Pyx_PyLong_From_uint64_t(__pyx_v_event->attempt_number); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2256, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_18 = __pyx_t_19; __pyx_t_19 = 0; } else {
+2257: if event.has_attempt else None,
__pyx_t_11 = (__pyx_v_event->has_attempt != 0);
if (__pyx_t_11) {
/* … */
__Pyx_INCREF(Py_None);
__pyx_t_18 = Py_None;
}
+2258: cause_code=c_err_code_to_py(event.cause_code)
__pyx_t_20 = __pyx_f_7questdb_7_client_c_err_code_to_py(__pyx_v_event->cause_code); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 2258, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_20); __pyx_t_19 = __pyx_t_20; __pyx_t_20 = 0; } else {
+2259: if event.has_cause else None,
__pyx_t_11 = (__pyx_v_event->has_cause != 0);
if (__pyx_t_11) {
/* … */
__Pyx_INCREF(Py_None);
__pyx_t_19 = Py_None;
}
+2260: cause_msg=_conn_event_str(event.cause_msg, event.cause_msg_len)
__pyx_t_21 = __pyx_f_7questdb_7_client__conn_event_str(__pyx_v_event->cause_msg, __pyx_v_event->cause_msg_len); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2260, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_21); __pyx_t_20 = __pyx_t_21; __pyx_t_21 = 0; } else {
+2261: if event.has_cause else None,
__pyx_t_11 = (__pyx_v_event->has_cause != 0);
if (__pyx_t_11) {
/* … */
__Pyx_INCREF(Py_None);
__pyx_t_20 = Py_None;
}
+2262: timestamp_millis=event.timestamp_millis))
__pyx_t_21 = __Pyx_PyLong_From_int64_t(__pyx_v_event->timestamp_millis); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2262, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_21); __pyx_t_22 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_13))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13); assert(__pyx_t_12); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_13, __pyx__function); __pyx_t_22 = 0; } #endif { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 9 : 0)] = {__pyx_t_12, NULL}; __pyx_t_23 = __Pyx_MakeVectorcallBuilderKwds(9); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2248, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_23); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_kind, __pyx_v_kind, __pyx_t_23, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 2248, __pyx_L6_error) if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_host, __pyx_t_14, __pyx_t_23, __pyx_callargs+1, 1) < (0)) __PYX_ERR(0, 2248, __pyx_L6_error) if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_port, __pyx_t_15, __pyx_t_23, __pyx_callargs+1, 2) < (0)) __PYX_ERR(0, 2248, __pyx_L6_error) if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_previous_host, __pyx_t_16, __pyx_t_23, __pyx_callargs+1, 3) < (0)) __PYX_ERR(0, 2248, __pyx_L6_error) if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_previous_port, __pyx_t_17, __pyx_t_23, __pyx_callargs+1, 4) < (0)) __PYX_ERR(0, 2248, __pyx_L6_error) if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_attempt_number, __pyx_t_18, __pyx_t_23, __pyx_callargs+1, 5) < (0)) __PYX_ERR(0, 2248, __pyx_L6_error) if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_cause_code, __pyx_t_19, __pyx_t_23, __pyx_callargs+1, 6) < (0)) __PYX_ERR(0, 2248, __pyx_L6_error) if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_cause_msg, __pyx_t_20, __pyx_t_23, __pyx_callargs+1, 7) < (0)) __PYX_ERR(0, 2248, __pyx_L6_error) if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_timestamp_millis, __pyx_t_21, __pyx_t_23, __pyx_callargs+1, 8) < (0)) __PYX_ERR(0, 2248, __pyx_L6_error) __pyx_t_6 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_13, __pyx_callargs+__pyx_t_22, (1-__pyx_t_22) | (__pyx_t_22*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_23); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2248, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_6); } __pyx_t_22 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); assert(__pyx_t_10); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_9, __pyx__function); __pyx_t_22 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_6}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_22, (2-__pyx_t_22) | (__pyx_t_22*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2248, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2263: except BaseException:
__pyx_t_24 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_24) { __Pyx_AddTraceback("questdb._client._connection_event_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_9, &__pyx_t_6) < 0) __PYX_ERR(0, 2263, __pyx_L8_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_6);
+2264: logging.getLogger("questdb").exception(
__pyx_t_21 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_logging); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 2264, __pyx_L8_except_error)
__Pyx_GOTREF(__pyx_t_20);
__pyx_t_19 = __Pyx_PyObject_GetAttrStr(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_getLogger); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2264, __pyx_L8_except_error)
__Pyx_GOTREF(__pyx_t_19);
__Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
__pyx_t_22 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_19))) {
__pyx_t_21 = PyMethod_GET_SELF(__pyx_t_19);
assert(__pyx_t_21);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_19);
__Pyx_INCREF(__pyx_t_21);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_19, __pyx__function);
__pyx_t_22 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_21, __pyx_mstate_global->__pyx_n_u_questdb};
__pyx_t_23 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_19, __pyx_callargs+__pyx_t_22, (2-__pyx_t_22) | (__pyx_t_22*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
__Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2264, __pyx_L8_except_error)
__Pyx_GOTREF(__pyx_t_23);
}
__pyx_t_13 = __pyx_t_23;
__Pyx_INCREF(__pyx_t_13);
__pyx_t_22 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_mstate_global->__pyx_kp_u_connection_event_listener_failed};
__pyx_t_10 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_exception, __pyx_callargs+__pyx_t_22, (2-__pyx_t_22) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2264, __pyx_L8_except_error)
__Pyx_GOTREF(__pyx_t_10);
}
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__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_L7_exception_handled;
}
goto __pyx_L8_except_error;
2265: "connection event listener failed")
2266: finally:
+2267: stack.pop()
/*finally:*/ {
/*normal exit:*/{
if (unlikely(__pyx_v_stack == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
__PYX_ERR(0, 2267, __pyx_L1_error)
}
__pyx_t_6 = __Pyx_PyList_Pop(__pyx_v_stack); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2267, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L5;
}
__pyx_L4_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
__Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
__Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
__Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_ExceptionSwap(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29);
if ( unlikely(__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3) < 0)) __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_27);
__Pyx_XGOTREF(__pyx_t_28);
__Pyx_XGOTREF(__pyx_t_29);
__pyx_t_24 = __pyx_lineno; __pyx_t_25 = __pyx_clineno; __pyx_t_26 = __pyx_filename;
{
if (unlikely(__pyx_v_stack == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
__PYX_ERR(0, 2267, __pyx_L19_error)
}
__pyx_t_6 = __Pyx_PyList_Pop(__pyx_v_stack); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2267, __pyx_L19_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
__Pyx_XGIVEREF(__pyx_t_27);
__Pyx_XGIVEREF(__pyx_t_28);
__Pyx_XGIVEREF(__pyx_t_29);
__Pyx_ExceptionReset(__pyx_t_27, __pyx_t_28, __pyx_t_29);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ErrRestore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
__pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0;
__pyx_lineno = __pyx_t_24; __pyx_clineno = __pyx_t_25; __pyx_filename = __pyx_t_26;
goto __pyx_L1_error;
__pyx_L19_error:;
__Pyx_XGIVEREF(__pyx_t_27);
__Pyx_XGIVEREF(__pyx_t_28);
__Pyx_XGIVEREF(__pyx_t_29);
__Pyx_ExceptionReset(__pyx_t_27, __pyx_t_28, __pyx_t_29);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0;
goto __pyx_L1_error;
}
__pyx_L5:;
}
2268:
2269:
+2270: cdef void _connection_event_trampoline(
static void __pyx_f_7questdb_7_client__connection_event_trampoline(void *__pyx_v_user_data, struct questdb_connection_event const *__pyx_v_event) {
/* … */
/* function exit code */
__pyx_L0:;
}
2271: void* user_data,
2272: const questdb_connection_event* event) noexcept nogil:
2273: # No object locals here: the finalizing early return must not touch
2274: # the GIL, which a Cython epilogue with object cleanup would.
+2275: if qdb_py_is_finalizing():
__pyx_t_1 = qdb_py_is_finalizing();
if (__pyx_t_1) {
/* … */
}
+2276: return
goto __pyx_L0;
+2277: _connection_event_dispatch(user_data, event)
__pyx_f_7questdb_7_client__connection_event_dispatch(__pyx_v_user_data, __pyx_v_event);
2278:
2279:
+2280: class ServerRole(TaggedEnum):
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_TaggedEnum); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_18 = PyTuple_Pack(1, __pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = __Pyx_PEP560_update_bases(__pyx_t_18); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_19 = __Pyx_CalculateMetaclass(NULL, __pyx_t_17); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_19, __pyx_t_17, __pyx_mstate_global->__pyx_n_u_ServerRole, __pyx_mstate_global->__pyx_n_u_ServerRole, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_Cluster_role_advertised_by_the); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_17 != __pyx_t_18) { if (unlikely((PyDict_SetItemString(__pyx_t_4, "__orig_bases__", __pyx_t_18) < 0))) __PYX_ERR(0, 2280, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; /* … */ __pyx_t_18 = __Pyx_Py3ClassCreate(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_ServerRole, __pyx_t_17, __pyx_t_4, NULL, 0, 0); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2280, __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_ServerRole, __pyx_t_18) < (0)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__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;
2281: """
2282: Cluster role advertised by the server's ``SERVER_INFO`` handshake.
2283: """
+2284: Standalone = ('standalone', 0)
if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Standalone, __pyx_mstate_global->__pyx_tuple[23]) < (0)) __PYX_ERR(0, 2284, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[23] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_standalone, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[23])) __PYX_ERR(0, 2284, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[23]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[23]);
+2285: Primary = ('primary', 1)
if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Primary, __pyx_mstate_global->__pyx_tuple[24]) < (0)) __PYX_ERR(0, 2285, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[24] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_primary, __pyx_mstate_global->__pyx_int_1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[24])) __PYX_ERR(0, 2285, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[24]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[24]);
+2286: Replica = ('replica', 2)
if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Replica, __pyx_mstate_global->__pyx_tuple[25]) < (0)) __PYX_ERR(0, 2286, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[25] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_replica, __pyx_mstate_global->__pyx_int_2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[25])) __PYX_ERR(0, 2286, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[25]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[25]);
+2287: PrimaryCatchup = ('primary_catchup', 3)
if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_PrimaryCatchup, __pyx_mstate_global->__pyx_tuple[26]) < (0)) __PYX_ERR(0, 2287, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[26] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_primary_catchup, __pyx_mstate_global->__pyx_int_3); if (unlikely(!__pyx_mstate_global->__pyx_tuple[26])) __PYX_ERR(0, 2287, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[26]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[26]);
2288: #: Forward-compat: a role byte this client doesn't recognise. The raw
2289: #: byte is available via :attr:`ServerInfo.role_byte`.
+2290: Other = ('other', 0xFF)
if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Other, __pyx_mstate_global->__pyx_tuple[27]) < (0)) __PYX_ERR(0, 2290, __pyx_L1_error) /* … */ __pyx_mstate_global->__pyx_tuple[27] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_other, __pyx_mstate_global->__pyx_int_255); if (unlikely(!__pyx_mstate_global->__pyx_tuple[27])) __PYX_ERR(0, 2290, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[27]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[27]);
2291:
2292:
+2293: @dataclass(frozen=True)
__pyx_t_4 = NULL; __pyx_t_16 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_dataclass); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_6 = 1; { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_16, NULL}; __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_frozen, Py_True, __pyx_t_14, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 2293, __pyx_L1_error) __pyx_t_18 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_13, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14); __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); }
+2294: class ServerInfo:
__pyx_t_17 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ServerInfo, __pyx_mstate_global->__pyx_n_u_ServerInfo, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_Snapshot_of_the_server_s_SERVER); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_19 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_role, __pyx_mstate_global->__pyx_n_u_ServerRole) < (0)) __PYX_ERR(0, 2294, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_role_byte, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 2294, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_epoch, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 2294, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_capabilities, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 2294, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_server_wall_ns, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 2294, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_cluster_id, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(0, 2294, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_node_id, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(0, 2294, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_zone_id, __pyx_mstate_global->__pyx_kp_u_Optional_str) < (0)) __PYX_ERR(0, 2294, __pyx_L1_error) if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_annotations, __pyx_t_19) < (0)) __PYX_ERR(0, 2294, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; /* … */ __pyx_t_13 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ServerInfo, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_17, NULL, 0, 0); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_13}; __pyx_t_19 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_18, __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_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); } if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ServerInfo, __pyx_t_19) < (0)) __PYX_ERR(0, 2294, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2295: """
2296: Snapshot of the server's ``SERVER_INFO`` handshake, as advertised on
2297: the connection :meth:`QuestDB.server_info` sampled. Fields mirror the
2298: Rust reader's ``ServerInfo``.
2299: """
2300: #: Cluster role; :attr:`ServerRole.Other` for unrecognised role bytes.
2301: role: ServerRole
2302: #: Raw wire role byte; disambiguates ``role == ServerRole.Other``.
2303: role_byte: int
2304: #: Monotonic generation counter; increases on failover/role
2305: #: transitions, useful for fencing replayed batches.
2306: epoch: int
2307: #: Bitset of QWP capability flags negotiated with the server.
2308: capabilities: int
2309: #: Server wall-clock at handshake, nanoseconds since the Unix epoch
2310: #: (UTC). Useful for clock-skew detection.
2311: server_wall_ns: int
2312: cluster_id: str
2313: node_id: str
2314: #: Zone identifier, present iff the server advertised ``CAP_ZONE`` in
2315: #: ``capabilities``; ``None`` otherwise. Compared case-insensitively
2316: #: against the client's ``zone=`` connect-string knob during failover.
2317: zone_id: Optional[str]
2318:
2319:
+2320: def _sender_error_from_raw(raw):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_7_sender_error_from_raw(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_7_sender_error_from_raw = {"_sender_error_from_raw", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_7_sender_error_from_raw, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_7_sender_error_from_raw(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_raw = 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("_sender_error_from_raw (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_raw,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(0, 2320, __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(0, 2320, __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, "_sender_error_from_raw", 0) < (0)) __PYX_ERR(0, 2320, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_sender_error_from_raw", 1, 1, 1, i); __PYX_ERR(0, 2320, __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(0, 2320, __pyx_L3_error)
}
__pyx_v_raw = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_sender_error_from_raw", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 2320, __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._sender_error_from_raw", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_6_sender_error_from_raw(__pyx_self, __pyx_v_raw);
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_6_sender_error_from_raw(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_raw) {
PyObject *__pyx_v_category = NULL;
PyObject *__pyx_v_applied_policy = NULL;
PyObject *__pyx_v_status = NULL;
PyObject *__pyx_v_message = NULL;
PyObject *__pyx_v_message_sequence = NULL;
PyObject *__pyx_v_from_fsn = NULL;
PyObject *__pyx_v_to_fsn = NULL;
PyObject *__pyx_v_py_category = NULL;
PyObject *__pyx_v_entry = NULL;
PyObject *__pyx_v_py_policy = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* 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_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("questdb._client._sender_error_from_raw", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_category);
__Pyx_XDECREF(__pyx_v_applied_policy);
__Pyx_XDECREF(__pyx_v_status);
__Pyx_XDECREF(__pyx_v_message);
__Pyx_XDECREF(__pyx_v_message_sequence);
__Pyx_XDECREF(__pyx_v_from_fsn);
__Pyx_XDECREF(__pyx_v_to_fsn);
__Pyx_XDECREF(__pyx_v_py_category);
__Pyx_XDECREF(__pyx_v_entry);
__Pyx_XDECREF(__pyx_v_py_policy);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_7_sender_error_from_raw, 0, __pyx_mstate_global->__pyx_n_u_sender_error_from_raw, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[76])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2320, __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_sender_error_from_raw, __pyx_t_17) < (0)) __PYX_ERR(0, 2320, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+2321: if raw is None or isinstance(raw, SenderError):
__pyx_t_2 = (__pyx_v_raw == Py_None);
if (!__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SenderError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2321, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_2 = PyObject_IsInstance(__pyx_v_raw, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2321, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+2322: return raw
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_raw); __pyx_r = __pyx_v_raw; goto __pyx_L0;
2323:
2324: (
+2325: category,
__pyx_v_category = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_applied_policy = __pyx_t_4; __pyx_t_4 = 0; __pyx_v_status = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_message = __pyx_t_6; __pyx_t_6 = 0; __pyx_v_message_sequence = __pyx_t_7; __pyx_t_7 = 0; __pyx_v_from_fsn = __pyx_t_8; __pyx_t_8 = 0; __pyx_v_to_fsn = __pyx_t_9; __pyx_t_9 = 0;
2326: applied_policy,
2327: status,
2328: message,
2329: message_sequence,
2330: from_fsn,
2331: to_fsn,
+2332: ) = raw
if ((likely(PyTuple_CheckExact(__pyx_v_raw))) || (PyList_CheckExact(__pyx_v_raw))) { PyObject* sequence = __pyx_v_raw; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 7)) { if (size > 7) __Pyx_RaiseTooManyValuesError(7); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2325, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 3); __Pyx_INCREF(__pyx_t_6); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 4); __Pyx_INCREF(__pyx_t_7); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 5); __Pyx_INCREF(__pyx_t_8); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 6); __Pyx_INCREF(__pyx_t_9); } else { __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2325, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2325, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(sequence, 2, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2325, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyList_GET_ITEM_REF(sequence, 3, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2325, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyList_GET_ITEM_REF(sequence, 4, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2325, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyList_GET_ITEM_REF(sequence, 5, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2325, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyList_GET_ITEM_REF(sequence, 6, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2325, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_9); } #else { Py_ssize_t i; PyObject** temps[7] = {&__pyx_t_3,&__pyx_t_4,&__pyx_t_5,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9}; for (i=0; i < 7; i++) { PyObject* item = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 2325, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif } else { Py_ssize_t index = -1; PyObject** temps[7] = {&__pyx_t_3,&__pyx_t_4,&__pyx_t_5,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9}; __pyx_t_10 = PyObject_GetIter(__pyx_v_raw); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2325, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_10); for (index=0; index < 7; index++) { PyObject* item = __pyx_t_11(__pyx_t_10); if (unlikely(!item)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 7) < (0)) __PYX_ERR(0, 2325, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L7_unpacking_done; __pyx_L6_unpacking_failed:; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2325, __pyx_L1_error) __pyx_L7_unpacking_done:; }
2333:
+2334: py_category = SenderErrorCategory.Unknown
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_SenderErrorCategory); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_Unknown); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_py_category = __pyx_t_8; __pyx_t_8 = 0;
+2335: for entry in SenderErrorCategory:
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_SenderErrorCategory); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) { __pyx_t_9 = __pyx_t_8; __Pyx_INCREF(__pyx_t_9); __pyx_t_12 = 0; __pyx_t_13 = NULL; } else { __pyx_t_12 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_13 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2335, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; for (;;) { if (likely(!__pyx_t_13)) { if (likely(PyList_CheckExact(__pyx_t_9))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_9); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2335, __pyx_L1_error) #endif if (__pyx_t_12 >= __pyx_temp) break; } __pyx_t_8 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_9, __pyx_t_12, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_12; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_9); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2335, __pyx_L1_error) #endif if (__pyx_t_12 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_8 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_12)); #else __pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_9, __pyx_t_12); #endif ++__pyx_t_12; } if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2335, __pyx_L1_error) } else { __pyx_t_8 = __pyx_t_13(__pyx_t_9); if (unlikely(!__pyx_t_8)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 2335, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_8); __Pyx_XDECREF_SET(__pyx_v_entry, __pyx_t_8); __pyx_t_8 = 0; /* … */ } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L11_for_end; __pyx_L9_break:; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L11_for_end; __pyx_L11_for_end:;
+2336: if entry.c_value == category:
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_entry, __pyx_mstate_global->__pyx_n_u_c_value); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = PyObject_RichCompare(__pyx_t_8, __pyx_v_category, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2336, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2336, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_1) { /* … */ }
+2337: py_category = entry
__Pyx_INCREF(__pyx_v_entry); __Pyx_DECREF_SET(__pyx_v_py_category, __pyx_v_entry);
+2338: break
goto __pyx_L9_break;
2339:
+2340: py_policy = SenderErrorPolicy.Terminal
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_SenderErrorPolicy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_Terminal); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_py_policy = __pyx_t_7; __pyx_t_7 = 0;
+2341: for entry in SenderErrorPolicy:
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SenderErrorPolicy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) { __pyx_t_9 = __pyx_t_7; __Pyx_INCREF(__pyx_t_9); __pyx_t_12 = 0; __pyx_t_13 = NULL; } else { __pyx_t_12 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_13 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2341, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; for (;;) { if (likely(!__pyx_t_13)) { if (likely(PyList_CheckExact(__pyx_t_9))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_9); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2341, __pyx_L1_error) #endif if (__pyx_t_12 >= __pyx_temp) break; } __pyx_t_7 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_9, __pyx_t_12, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_12; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_9); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2341, __pyx_L1_error) #endif if (__pyx_t_12 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_12)); #else __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_9, __pyx_t_12); #endif ++__pyx_t_12; } if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2341, __pyx_L1_error) } else { __pyx_t_7 = __pyx_t_13(__pyx_t_9); if (unlikely(!__pyx_t_7)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 2341, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_7); __Pyx_XDECREF_SET(__pyx_v_entry, __pyx_t_7); __pyx_t_7 = 0; /* … */ } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L15_for_end; __pyx_L13_break:; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L15_for_end; __pyx_L15_for_end:;
+2342: if entry.c_value == applied_policy:
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_entry, __pyx_mstate_global->__pyx_n_u_c_value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PyObject_RichCompare(__pyx_t_7, __pyx_v_applied_policy, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2342, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 2342, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (__pyx_t_1) { /* … */ }
+2343: py_policy = entry
__Pyx_INCREF(__pyx_v_entry); __Pyx_DECREF_SET(__pyx_v_py_policy, __pyx_v_entry);
+2344: break
goto __pyx_L13_break;
2345:
+2346: return SenderError(
__Pyx_XDECREF(__pyx_r); __pyx_t_8 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_SenderError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7);
2347: py_category,
2348: py_policy,
2349: status,
2350: message,
2351: message_sequence,
2352: from_fsn,
+2353: to_fsn)
__pyx_t_14 = 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_14 = 0; } #endif { PyObject *__pyx_callargs[8] = {__pyx_t_8, __pyx_v_py_category, __pyx_v_py_policy, __pyx_v_status, __pyx_v_message, __pyx_v_message_sequence, __pyx_v_from_fsn, __pyx_v_to_fsn}; __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_14, (8-__pyx_t_14) | (__pyx_t_14*__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_9)) __PYX_ERR(0, 2346, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); } __pyx_r = __pyx_t_9; __pyx_t_9 = 0; goto __pyx_L0;
2354:
2355:
+2356: def _default_error_handler(error):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_9_default_error_handler(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_9_default_error_handler = {"_default_error_handler", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_9_default_error_handler, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_9_default_error_handler(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_error = 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("_default_error_handler (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_error,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(0, 2356, __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(0, 2356, __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, "_default_error_handler", 0) < (0)) __PYX_ERR(0, 2356, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_default_error_handler", 1, 1, 1, i); __PYX_ERR(0, 2356, __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(0, 2356, __pyx_L3_error)
}
__pyx_v_error = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_default_error_handler", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 2356, __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._default_error_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_8_default_error_handler(__pyx_self, __pyx_v_error);
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_8_default_error_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_error) {
PyObject *__pyx_v_level = 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_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("questdb._client._default_error_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_level);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_9_default_error_handler, 0, __pyx_mstate_global->__pyx_n_u_default_error_handler, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[77])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2356, __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_default_error_handler, __pyx_t_17) < (0)) __PYX_ERR(0, 2356, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2357: level = (
+2358: logging.ERROR
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_logging); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2358, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ERROR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2358, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; } else {
+2359: if error.applied_policy is SenderErrorPolicy.Terminal
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_mstate_global->__pyx_n_u_applied_policy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SenderErrorPolicy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Terminal); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = (__pyx_t_2 == __pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_5) {
+2360: else logging.WARNING)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_logging); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_WARNING); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = __pyx_t_4; __pyx_t_4 = 0; } __pyx_v_level = __pyx_t_1; __pyx_t_1 = 0;
+2361: logging.getLogger("questdb").log(
__pyx_t_3 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_logging); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_getLogger); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2361, __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_3 = PyMethod_GET_SELF(__pyx_t_7); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); __pyx_t_8 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u_questdb}; __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_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4);
2362: level,
2363: "QWP/WebSocket server rejection: "
2364: "category=%s policy=%s status=%s fsn=[%s,%s] seq=%s message=%s",
+2365: error.category.tag,
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_mstate_global->__pyx_n_u_category); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2365, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2365, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2366: error.applied_policy.tag,
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_mstate_global->__pyx_n_u_applied_policy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2366, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_tag); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2366, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2367: error.status,
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_mstate_global->__pyx_n_u_status); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2367, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7);
+2368: error.from_fsn,
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_mstate_global->__pyx_n_u_from_fsn); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9);
+2369: error.to_fsn,
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_mstate_global->__pyx_n_u_to_fsn); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10);
+2370: error.message_sequence,
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_mstate_global->__pyx_n_u_message_sequence); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2370, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11);
+2371: error.message)
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_error, __pyx_mstate_global->__pyx_n_u_message); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2371, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_8 = 0; { PyObject *__pyx_callargs[10] = {__pyx_t_4, __pyx_v_level, __pyx_mstate_global->__pyx_kp_u_QWP_WebSocket_server_rejection_c, __pyx_t_3, __pyx_t_6, __pyx_t_7, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_log, __pyx_callargs+__pyx_t_8, (10-__pyx_t_8) | (1*__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; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2372:
2373:
+2374: cdef void _sender_error_dispatch(
static void __pyx_f_7questdb_7_client__sender_error_dispatch(void *__pyx_v_user_data, struct line_sender_qwpws_error_view const *__pyx_v_view) {
PyObject *__pyx_v_handler = NULL;
PyObject *__pyx_v_stack = 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_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_WriteUnraisable("questdb._client._sender_error_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_handler);
__Pyx_XDECREF(__pyx_v_stack);
__Pyx_RefNannyFinishContext();
__Pyx_PyGILState_Release(__pyx_gilstate_save);
}
2375: void* user_data,
2376: const line_sender_qwpws_error_view* view) noexcept with gil:
+2377: handler = <object>user_data
__pyx_t_1 = ((PyObject *)__pyx_v_user_data);
__Pyx_INCREF(__pyx_t_1);
__pyx_v_handler = __pyx_t_1;
__pyx_t_1 = 0;
+2378: stack = _dispatch_target_stack()
__pyx_t_1 = __pyx_f_7questdb_7_client__dispatch_target_stack(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_stack = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2379: stack.append(handler)
if (unlikely(__pyx_v_stack == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
__PYX_ERR(0, 2379, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_PyList_Append(__pyx_v_stack, __pyx_v_handler); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2379, __pyx_L1_error)
+2380: try:
/*try:*/ {
{
/*try:*/ {
/* … */
}
__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;
goto __pyx_L11_try_end;
__pyx_L6_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 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_L8_except_error:;
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
goto __pyx_L4_error;
__pyx_L7_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
__pyx_L11_try_end:;
}
}
+2381: handler(_sender_error_from_raw(
__pyx_t_6 = NULL;
__Pyx_INCREF(__pyx_v_handler);
__pyx_t_7 = __pyx_v_handler;
__pyx_t_9 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_sender_error_from_raw); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2381, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_10);
+2382: c_sender_error_view_to_raw(view[0])))
__pyx_t_11 = __pyx_f_7questdb_7_client_c_sender_error_view_to_raw((__pyx_v_view[0])); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2382, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10); assert(__pyx_t_9); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_10, __pyx__function); __pyx_t_12 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_11}; __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2381, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_8); } __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[2] = {__pyx_t_6, __pyx_t_8}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__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_1)) __PYX_ERR(0, 2381, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2383: except BaseException:
__pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_13) { __Pyx_AddTraceback("questdb._client._sender_error_dispatch", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(0, 2383, __pyx_L8_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8);
+2384: logging.getLogger("questdb").exception(
__pyx_t_9 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_logging); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2384, __pyx_L8_except_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_getLogger); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2384, __pyx_L8_except_error)
__Pyx_GOTREF(__pyx_t_15);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
__pyx_t_12 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_15))) {
__pyx_t_9 = PyMethod_GET_SELF(__pyx_t_15);
assert(__pyx_t_9);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15);
__Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_15, __pyx__function);
__pyx_t_12 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_n_u_questdb};
__pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2384, __pyx_L8_except_error)
__Pyx_GOTREF(__pyx_t_11);
}
__pyx_t_10 = __pyx_t_11;
__Pyx_INCREF(__pyx_t_10);
__pyx_t_12 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_mstate_global->__pyx_kp_u_QWP_WebSocket_error_handler_fail};
__pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_exception, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2384, __pyx_L8_except_error)
__Pyx_GOTREF(__pyx_t_6);
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L7_exception_handled;
}
goto __pyx_L8_except_error;
2385: "QWP/WebSocket error handler failed")
2386: finally:
+2387: stack.pop()
/*finally:*/ {
/*normal exit:*/{
if (unlikely(__pyx_v_stack == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
__PYX_ERR(0, 2387, __pyx_L1_error)
}
__pyx_t_8 = __Pyx_PyList_Pop(__pyx_v_stack); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2387, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L5;
}
__pyx_L4_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 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_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
if ( unlikely(__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3) < 0)) __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_18);
__Pyx_XGOTREF(__pyx_t_19);
__Pyx_XGOTREF(__pyx_t_20);
__pyx_t_13 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_17 = __pyx_filename;
{
if (unlikely(__pyx_v_stack == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
__PYX_ERR(0, 2387, __pyx_L15_error)
}
__pyx_t_8 = __Pyx_PyList_Pop(__pyx_v_stack); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2387, __pyx_L15_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ErrRestore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
__pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
__pyx_lineno = __pyx_t_13; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_17;
goto __pyx_L1_error;
__pyx_L15_error:;
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
goto __pyx_L1_error;
}
__pyx_L5:;
}
2388:
2389:
+2390: cdef void _sender_error_trampoline(
static void __pyx_f_7questdb_7_client__sender_error_trampoline(void *__pyx_v_user_data, struct line_sender_qwpws_error_view const *__pyx_v_view) {
/* … */
/* function exit code */
__pyx_L0:;
}
2391: void* user_data,
2392: const line_sender_qwpws_error_view* view) noexcept nogil:
2393: # No object locals here: the finalizing early return must not touch
2394: # the GIL, which a Cython epilogue with object cleanup would.
+2395: if qdb_py_is_finalizing():
__pyx_t_1 = qdb_py_is_finalizing();
if (__pyx_t_1) {
/* … */
}
+2396: return
goto __pyx_L0;
+2397: _sender_error_dispatch(user_data, view)
__pyx_f_7questdb_7_client__sender_error_dispatch(__pyx_v_user_data, __pyx_v_view);
2398:
2399:
+2400: class TlsCa(TaggedEnum):
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_TaggedEnum); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_19 = PyTuple_Pack(1, __pyx_t_17); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = __Pyx_PEP560_update_bases(__pyx_t_19); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_18 = __Pyx_CalculateMetaclass(NULL, __pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 2400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_13 = __Pyx_Py3MetaclassPrepare(__pyx_t_18, __pyx_t_17, __pyx_mstate_global->__pyx_n_u_TlsCa, __pyx_mstate_global->__pyx_n_u_TlsCa, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_Verification_mechanism_for_the); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (__pyx_t_17 != __pyx_t_19) { if (unlikely((PyDict_SetItemString(__pyx_t_13, "__orig_bases__", __pyx_t_19) < 0))) __PYX_ERR(0, 2400, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; /* … */ __pyx_t_19 = __Pyx_Py3ClassCreate(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_TlsCa, __pyx_t_17, __pyx_t_13, NULL, 0, 0); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_19); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_TlsCa, __pyx_t_19) < (0)) __PYX_ERR(0, 2400, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2401: """
2402: Verification mechanism for the server's certificate.
2403:
2404: Here ``webpki`` refers to the
2405: `WebPKI library <https://github.com/rustls/webpki-roots>`_ and
2406: ``os`` refers to the operating system's certificate store.
2407:
2408: See :ref:`sender_conf_tls` for more information.
2409: """
+2410: WebpkiRoots = ('webpki_roots', line_sender_ca_webpki_roots)
__pyx_t_19 = __Pyx_PyLong_From_enum__line_sender_ca(line_sender_ca_webpki_roots); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_4 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_webpki_roots, __pyx_t_19); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_WebpkiRoots, __pyx_t_4) < (0)) __PYX_ERR(0, 2410, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2411: OsRoots = ('os_roots', line_sender_ca_os_roots)
__pyx_t_4 = __Pyx_PyLong_From_enum__line_sender_ca(line_sender_ca_os_roots); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_19 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_os_roots, __pyx_t_4); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_OsRoots, __pyx_t_19) < (0)) __PYX_ERR(0, 2411, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+2412: WebpkiAndOsRoots = ('webpki_and_os_roots', line_sender_ca_webpki_and_os_roots)
__pyx_t_19 = __Pyx_PyLong_From_enum__line_sender_ca(line_sender_ca_webpki_and_os_roots); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_4 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_webpki_and_os_roots, __pyx_t_19); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_WebpkiAndOsRoots, __pyx_t_4) < (0)) __PYX_ERR(0, 2412, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2413: PemFile = ('pem_file', line_sender_ca_pem_file)
__pyx_t_4 = __Pyx_PyLong_From_enum__line_sender_ca(line_sender_ca_pem_file); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_19 = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_pem_file, __pyx_t_4); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__Pyx_SetNameInClass(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_PemFile, __pyx_t_19) < (0)) __PYX_ERR(0, 2413, __pyx_L1_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
2414:
2415:
+2416: cdef object c_parse_conf_err_to_py(questdb_conf_str_parse_err* err):
static PyObject *__pyx_f_7questdb_7_client_c_parse_conf_err_to_py(struct questdb_conf_str_parse_err *__pyx_v_err) {
PyObject *__pyx_v_msg = 0;
PyObject *__pyx_v_py_err = 0;
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.c_parse_conf_err_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_msg);
__Pyx_XDECREF(__pyx_v_py_err);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2417: cdef str msg = PyUnicode_FromStringAndSize(
__pyx_t_1 = PyUnicode_FromStringAndSize(__pyx_v_err->msg, ((Py_ssize_t)__pyx_v_err->msg_len)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_msg = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
2418: err.msg, <Py_ssize_t>err.msg_len)
+2419: cdef object py_err = QuestDBError(QuestDBErrorCode.ConfigError, msg)
__pyx_t_2 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = 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_6 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_5, __pyx_v_msg}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__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(0, 2419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_v_py_err = __pyx_t_1; __pyx_t_1 = 0;
+2420: questdb_conf_str_parse_err_free(err)
questdb_conf_str_parse_err_free(__pyx_v_err);
+2421: return py_err
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_py_err); __pyx_r = __pyx_v_py_err; goto __pyx_L0;
2422:
2423:
+2424: cdef object parse_conf_str(
static PyObject *__pyx_f_7questdb_7_client_parse_conf_str(struct qdb_pystr_buf *__pyx_v_b, PyObject *__pyx_v_conf_str) {
size_t __pyx_v_c_len1;
char const *__pyx_v_c_buf1;
size_t __pyx_v_c_len2;
char const *__pyx_v_c_buf2;
PyObject *__pyx_v_service = 0;
struct questdb_conf_str_iter *__pyx_v_c_iter;
PyObject *__pyx_v_key = 0;
PyObject *__pyx_v_value = 0;
PyObject *__pyx_v_params = 0;
struct line_sender_utf8 __pyx_v_c_conf_str_utf8;
struct questdb_conf_str_parse_err *__pyx_v_err;
struct questdb_conf_str *__pyx_v_c_conf_str;
PyObject *__pyx_v_type_mappings = NULL;
PyObject *__pyx_v_typed_params = NULL;
PyObject *__pyx_v_converter = NULL;
PyObject *__pyx_v_e = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_XDECREF(__pyx_t_19);
__Pyx_XDECREF(__pyx_t_20);
__Pyx_XDECREF(__pyx_t_21);
__Pyx_XDECREF(__pyx_t_22);
__Pyx_XDECREF(__pyx_t_23);
__Pyx_XDECREF(__pyx_t_24);
__Pyx_XDECREF(__pyx_t_26);
__Pyx_AddTraceback("questdb._client.parse_conf_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_service);
__Pyx_XDECREF(__pyx_v_key);
__Pyx_XDECREF(__pyx_v_value);
__Pyx_XDECREF(__pyx_v_params);
__Pyx_XDECREF(__pyx_v_type_mappings);
__Pyx_XDECREF(__pyx_v_typed_params);
__Pyx_XDECREF(__pyx_v_converter);
__Pyx_XDECREF(__pyx_v_e);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2425: qdb_pystr_buf* b,
2426: str conf_str):
2427: """
2428: Parse a config string to a tuple of (Protocol, dict[str, str]).
2429: """
2430: cdef size_t c_len1
2431: cdef const char* c_buf1
2432: cdef size_t c_len2
2433: cdef const char* c_buf2
2434: cdef str service
2435: cdef questdb_conf_str_iter* c_iter
2436: cdef str key
2437: cdef str value
+2438: cdef dict params = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_params = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
2439: cdef line_sender_utf8 c_conf_str_utf8
2440: cdef questdb_conf_str_parse_err* err
2441: cdef questdb_conf_str* c_conf_str
+2442: str_to_utf8(b, <PyObject*>conf_str, &c_conf_str_utf8)
__pyx_t_2 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, ((PyObject *)__pyx_v_conf_str), (&__pyx_v_c_conf_str_utf8)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 2442, __pyx_L1_error)
+2443: c_conf_str = questdb_conf_str_parse(
__pyx_v_c_conf_str = questdb_conf_str_parse(__pyx_v_c_conf_str_utf8.buf, __pyx_v_c_conf_str_utf8.len, (&__pyx_v_err));
2444: c_conf_str_utf8.buf,
2445: c_conf_str_utf8.len,
2446: &err)
+2447: if c_conf_str == NULL:
__pyx_t_3 = (__pyx_v_c_conf_str == NULL);
if (unlikely(__pyx_t_3)) {
/* … */
}
+2448: raise c_parse_conf_err_to_py(err)
__pyx_t_1 = __pyx_f_7questdb_7_client_c_parse_conf_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2448, __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(0, 2448, __pyx_L1_error)
2449:
+2450: c_iter = NULL
__pyx_v_c_iter = NULL;
+2451: try:
/*try:*/ {
+2452: c_buf1 = questdb_conf_str_service(c_conf_str, &c_len1)
__pyx_v_c_buf1 = questdb_conf_str_service(__pyx_v_c_conf_str, (&__pyx_v_c_len1));
+2453: service = PyUnicode_FromStringAndSize(c_buf1, <Py_ssize_t>c_len1)
__pyx_t_1 = PyUnicode_FromStringAndSize(__pyx_v_c_buf1, ((Py_ssize_t)__pyx_v_c_len1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2453, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_service = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
2454:
+2455: c_iter = questdb_conf_str_iter_pairs(c_conf_str)
__pyx_v_c_iter = questdb_conf_str_iter_pairs(__pyx_v_c_conf_str);
+2456: while questdb_conf_str_iter_next(c_iter, &c_buf1, &c_len1, &c_buf2, &c_len2):
while (1) {
__pyx_t_3 = questdb_conf_str_iter_next(__pyx_v_c_iter, (&__pyx_v_c_buf1), (&__pyx_v_c_len1), (&__pyx_v_c_buf2), (&__pyx_v_c_len2));
if (!__pyx_t_3) break;
+2457: key = PyUnicode_FromStringAndSize(c_buf1, <Py_ssize_t>c_len1)
__pyx_t_1 = PyUnicode_FromStringAndSize(__pyx_v_c_buf1, ((Py_ssize_t)__pyx_v_c_len1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2457, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_key, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0;
+2458: value = PyUnicode_FromStringAndSize(c_buf2, <Py_ssize_t>c_len2)
__pyx_t_1 = PyUnicode_FromStringAndSize(__pyx_v_c_buf2, ((Py_ssize_t)__pyx_v_c_len2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2458, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_value, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0;
+2459: params[key] = value
if (unlikely((PyDict_SetItem(__pyx_v_params, __pyx_v_key, __pyx_v_value) < 0))) __PYX_ERR(0, 2459, __pyx_L5_error) } }
2460: finally:
+2461: if c_iter != NULL:
/*finally:*/ {
/*normal exit:*/{
__pyx_t_3 = (__pyx_v_c_iter != NULL);
if (__pyx_t_3) {
/* … */
}
/* … */
__pyx_t_3 = (__pyx_v_c_iter != NULL);
if (__pyx_t_3) {
/* … */
}
+2462: questdb_conf_str_iter_free(c_iter)
questdb_conf_str_iter_free(__pyx_v_c_iter);
/* … */
questdb_conf_str_iter_free(__pyx_v_c_iter);
+2463: questdb_conf_str_free(c_conf_str)
questdb_conf_str_free(__pyx_v_c_conf_str);
goto __pyx_L6;
}
__pyx_L5_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
if ( unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
__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_XGOTREF(__pyx_t_12);
__pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
{
/* … */
questdb_conf_str_free(__pyx_v_c_conf_str);
}
__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_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
__pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
__pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
goto __pyx_L1_error;
}
__pyx_L6:;
}
2464:
2465: # We now need to parse the various values in the dict from their
2466: # string values to their Python types, as expected by the overrides
2467: # API of Sender.from_conf and Sender.from_env.
2468: # Note that some of these values, such as `tls_ca` or `auto_flush`
2469: # are kept as strings and are parsed by Sender._set_sender_fields.
2470: type_mappings = {
+2471: 'bind_interface': str,
__pyx_t_1 = __Pyx_PyDict_NewPresized(25); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_bind_interface, ((PyObject *)(&PyUnicode_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2472: 'max_datagram_size': int,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_max_datagram_size, ((PyObject *)(&PyLong_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2473: 'multicast_ttl': int,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_multicast_ttl, ((PyObject *)(&PyLong_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2474: 'username': str,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_username, ((PyObject *)(&PyUnicode_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2475: 'password': str,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_password, ((PyObject *)(&PyUnicode_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2476: 'token': str,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_token, ((PyObject *)(&PyUnicode_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2477: 'token_x': str,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_token_x, ((PyObject *)(&PyUnicode_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2478: 'token_y': str,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_token_y, ((PyObject *)(&PyUnicode_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2479: 'auth_timeout': int,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_auth_timeout, ((PyObject *)(&PyLong_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2480: 'tls_verify': str,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_tls_verify, ((PyObject *)(&PyUnicode_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2481: 'tls_ca': str,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_tls_ca, ((PyObject *)(&PyUnicode_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2482: 'tls_roots': str,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_tls_roots, ((PyObject *)(&PyUnicode_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2483: 'tls_roots_password': str,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_tls_roots_password, ((PyObject *)(&PyUnicode_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2484: 'max_buf_size': int,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_max_buf_size, ((PyObject *)(&PyLong_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2485: 'retry_timeout': int,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_retry_timeout, ((PyObject *)(&PyLong_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2486: 'retry_max_backoff_millis': int,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_retry_max_backoff_millis, ((PyObject *)(&PyLong_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2487: 'request_min_throughput': int,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_request_min_throughput, ((PyObject *)(&PyLong_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2488: 'request_timeout': int,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_request_timeout, ((PyObject *)(&PyLong_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2489: 'auto_flush': str,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_auto_flush, ((PyObject *)(&PyUnicode_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2490: 'auto_flush_rows': str,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_auto_flush_rows, ((PyObject *)(&PyUnicode_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2491: 'auto_flush_bytes': str,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_auto_flush_bytes, ((PyObject *)(&PyUnicode_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2492: 'auto_flush_interval': str,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_auto_flush_interval, ((PyObject *)(&PyUnicode_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2493: 'init_buf_size': int,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_init_buf_size, ((PyObject *)(&PyLong_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2494: 'max_name_len': int,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_max_name_len, ((PyObject *)(&PyLong_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error)
+2495: 'qwp_ws_progress': str,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_qwp_ws_progress, ((PyObject *)(&PyUnicode_Type))) < (0)) __PYX_ERR(0, 2471, __pyx_L1_error) __pyx_v_type_mappings = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
2496: }
+2497: typed_params = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_typed_params = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2498: for key, value in params.items():
__pyx_t_13 = 0; __pyx_t_15 = __Pyx_dict_iterator(__pyx_v_params, 1, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_14), (&__pyx_t_5)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_15; __pyx_t_15 = 0; while (1) { __pyx_t_4 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_14, &__pyx_t_13, &__pyx_t_15, &__pyx_t_16, NULL, __pyx_t_5); if (unlikely(__pyx_t_4 == 0)) break; if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 2498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_GOTREF(__pyx_t_16); if (!(likely(PyUnicode_CheckExact(__pyx_t_15))||((__pyx_t_15) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_15))) __PYX_ERR(0, 2498, __pyx_L1_error) if (!(likely(PyUnicode_CheckExact(__pyx_t_16))||((__pyx_t_16) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_16))) __PYX_ERR(0, 2498, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_key, ((PyObject*)__pyx_t_15)); __pyx_t_15 = 0; __Pyx_XDECREF_SET(__pyx_v_value, ((PyObject*)__pyx_t_16)); __pyx_t_16 = 0;
+2499: converter = type_mappings.get(key, str)
__pyx_t_16 = __Pyx_PyDict_GetItemDefault(__pyx_v_type_mappings, __pyx_v_key, ((PyObject *)(&PyUnicode_Type))); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_XDECREF_SET(__pyx_v_converter, __pyx_t_16); __pyx_t_16 = 0;
+2500: 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_L22_try_end;
__pyx_L15_error:;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
/* … */
__pyx_L17_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_L22_try_end:;
}
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2501: typed_params[key] = converter(value)
__pyx_t_15 = NULL;
__Pyx_INCREF(__pyx_v_converter);
__pyx_t_17 = __pyx_v_converter;
__pyx_t_18 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_17))) {
__pyx_t_15 = PyMethod_GET_SELF(__pyx_t_17);
assert(__pyx_t_15);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_17);
__Pyx_INCREF(__pyx_t_15);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_17, __pyx__function);
__pyx_t_18 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_v_value};
__pyx_t_16 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_17, __pyx_callargs+__pyx_t_18, (2-__pyx_t_18) | (__pyx_t_18*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2501, __pyx_L15_error)
__Pyx_GOTREF(__pyx_t_16);
}
if (unlikely((PyDict_SetItem(__pyx_v_typed_params, __pyx_v_key, __pyx_t_16) < 0))) __PYX_ERR(0, 2501, __pyx_L15_error)
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2502: except (ValueError, TypeError) as e:
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), ((PyObject *)(((PyTypeObject*)PyExc_TypeError))));
if (__pyx_t_4) {
__Pyx_AddTraceback("questdb._client.parse_conf_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_15) < 0) __PYX_ERR(0, 2502, __pyx_L17_except_error)
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_17);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_INCREF(__pyx_t_17);
__pyx_v_e = __pyx_t_17;
/*try:*/ {
/* … */
/*finally:*/ {
__pyx_L28_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0; __pyx_t_31 = 0;
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
__Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
__Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
__Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
__Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
__Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0;
__Pyx_ExceptionSwap(&__pyx_t_29, &__pyx_t_30, &__pyx_t_31);
if ( unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_8);
__Pyx_XGOTREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_29);
__Pyx_XGOTREF(__pyx_t_30);
__Pyx_XGOTREF(__pyx_t_31);
__pyx_t_4 = __pyx_lineno; __pyx_t_27 = __pyx_clineno; __pyx_t_28 = __pyx_filename;
{
__Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
}
__Pyx_XGIVEREF(__pyx_t_29);
__Pyx_XGIVEREF(__pyx_t_30);
__Pyx_XGIVEREF(__pyx_t_31);
__Pyx_ExceptionReset(__pyx_t_29, __pyx_t_30, __pyx_t_31);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ErrRestore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
__pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_29 = 0; __pyx_t_30 = 0; __pyx_t_31 = 0;
__pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_27; __pyx_filename = __pyx_t_28;
goto __pyx_L17_except_error;
}
}
}
goto __pyx_L17_except_error;
+2503: raise QuestDBError(
__pyx_t_20 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_21, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 2503, __pyx_L28_error)
__Pyx_GOTREF(__pyx_t_21);
+2504: QuestDBErrorCode.ConfigError,
__Pyx_GetModuleGlobalName(__pyx_t_22, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 2504, __pyx_L28_error) __Pyx_GOTREF(__pyx_t_22); __pyx_t_23 = __Pyx_PyObject_GetAttrStr(__pyx_t_22, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 2504, __pyx_L28_error) __Pyx_GOTREF(__pyx_t_23); __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
+2505: f'Invalid value for config key {key!r}: {value!r}') from e
__pyx_t_22 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_key), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 2505, __pyx_L28_error) __Pyx_GOTREF(__pyx_t_22); __pyx_t_24 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_value), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 2505, __pyx_L28_error) __Pyx_GOTREF(__pyx_t_24); __pyx_t_25[0] = __pyx_mstate_global->__pyx_kp_u_Invalid_value_for_config_key; __pyx_t_25[1] = __pyx_t_22; __pyx_t_25[2] = __pyx_mstate_global->__pyx_kp_u_; __pyx_t_25[3] = __pyx_t_24; __pyx_t_26 = __Pyx_PyUnicode_Join(__pyx_t_25, 4, 29 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_22) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_24), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_22) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_24)); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 2505, __pyx_L28_error) __Pyx_GOTREF(__pyx_t_26); __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0; __pyx_t_18 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_21))) { __pyx_t_20 = PyMethod_GET_SELF(__pyx_t_21); assert(__pyx_t_20); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_21); __Pyx_INCREF(__pyx_t_20); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_21, __pyx__function); __pyx_t_18 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_20, __pyx_t_23, __pyx_t_26}; __pyx_t_19 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_21, __pyx_callargs+__pyx_t_18, (3-__pyx_t_18) | (__pyx_t_18*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0; __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0; __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2503, __pyx_L28_error) __Pyx_GOTREF(__pyx_t_19); } __Pyx_Raise(__pyx_t_19, 0, 0, __pyx_v_e); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __PYX_ERR(0, 2503, __pyx_L28_error) }
+2506: if service == 'udps':
__pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_service, __pyx_mstate_global->__pyx_n_u_udps, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 2506, __pyx_L1_error) if (unlikely(__pyx_t_3)) { /* … */ }
+2507: raise QuestDBError(
__pyx_t_15 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 2507, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
+2508: QuestDBErrorCode.ConfigError,
__Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_19 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_18 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_17))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_17); assert(__pyx_t_15); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_17); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_17, __pyx__function); __pyx_t_18 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_15, __pyx_t_19, __pyx_mstate_global->__pyx_kp_u_TLS_is_not_supported_for_UDP}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_17, __pyx_callargs+__pyx_t_18, (3-__pyx_t_18) | (__pyx_t_18*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2507, __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(0, 2507, __pyx_L1_error)
2509: 'TLS is not supported for UDP.')
+2510: return (Protocol.parse(service), typed_params)
__Pyx_XDECREF(__pyx_r); __pyx_t_17 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_Protocol); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 2510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_parse); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __pyx_t_18 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_15))) { __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_15); assert(__pyx_t_17); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_17); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_15, __pyx__function); __pyx_t_18 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_17, __pyx_v_service}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_18, (2-__pyx_t_18) | (__pyx_t_18*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_t_15 = PyTuple_New(2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 2510, __pyx_L1_error); __Pyx_INCREF(__pyx_v_typed_params); __Pyx_GIVEREF(__pyx_v_typed_params); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_15, 1, __pyx_v_typed_params) != (0)) __PYX_ERR(0, 2510, __pyx_L1_error); __pyx_t_1 = 0; __pyx_r = __pyx_t_15; __pyx_t_15 = 0; goto __pyx_L0;
2511:
2512:
+2513: cdef str conf_str_value(object value):
static PyObject *__pyx_f_7questdb_7_client_conf_str_value(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_AddTraceback("questdb._client.conf_str_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2514: return str(value).replace(';', ';;')
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_Unicode(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyUnicode_Replace(((PyObject*)__pyx_t_1), __pyx_mstate_global->__pyx_kp_u__23, __pyx_mstate_global->__pyx_kp_u__24, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0;
2515:
2516:
+2517: cdef bint _dataframe_columnar_has_single_contiguous_chunk(
static int __pyx_f_7questdb_7_client__dataframe_columnar_has_single_contiguous_chunk(struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, size_t __pyx_v_row_count) {
struct ArrowArray *__pyx_v_arr;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
2518: col_t* col,
2519: size_t row_count) noexcept nogil:
2520: cdef ArrowArray* arr
+2521: if col.setup.chunks.n_chunks != 1:
__pyx_t_1 = (__pyx_v_col->setup->chunks.n_chunks != 1);
if (__pyx_t_1) {
/* … */
}
+2522: return False
__pyx_r = 0;
goto __pyx_L0;
+2523: if col.setup.chunks.chunks == NULL:
__pyx_t_1 = (__pyx_v_col->setup->chunks.chunks == NULL);
if (__pyx_t_1) {
/* … */
}
+2524: return False
__pyx_r = 0;
goto __pyx_L0;
+2525: arr = &col.setup.chunks.chunks[0]
__pyx_v_arr = (&(__pyx_v_col->setup->chunks.chunks[0]));
2526: return (
+2527: arr.offset == 0 and
__pyx_t_2 = (__pyx_v_arr->offset == 0);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L5_bool_binop_done;
}
+2528: arr.length == <int64_t>row_count and
__pyx_t_2 = (__pyx_v_arr->length == ((int64_t)__pyx_v_row_count));
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L5_bool_binop_done;
}
+2529: arr.buffers != NULL and
__pyx_t_2 = (__pyx_v_arr->buffers != NULL);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L5_bool_binop_done;
}
+2530: arr.buffers[1] != NULL)
__pyx_t_2 = ((__pyx_v_arr->buffers[1]) != NULL); __pyx_t_1 = __pyx_t_2; __pyx_L5_bool_binop_done:; __pyx_r = __pyx_t_1; goto __pyx_L0;
2531:
2532:
+2533: cdef bint _dataframe_columnar_i64_has_nat(
static int __pyx_f_7questdb_7_client__dataframe_columnar_i64_has_nat(int64_t const *__pyx_v_data, size_t __pyx_v_row_count) {
size_t __pyx_v_row_index;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
2534: const int64_t* data,
2535: size_t row_count) noexcept nogil:
2536: cdef size_t row_index
+2537: for row_index in range(row_count):
__pyx_t_1 = __pyx_v_row_count;
__pyx_t_2 = __pyx_t_1;
for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_row_index = __pyx_t_3;
+2538: if data[row_index] == _NAT:
__pyx_t_4 = ((__pyx_v_data[__pyx_v_row_index]) == __pyx_v_7questdb_7_client__NAT);
if (__pyx_t_4) {
/* … */
}
}
+2539: return True
__pyx_r = 1;
goto __pyx_L0;
+2540: return False
__pyx_r = 0; goto __pyx_L0;
2541:
2542:
+2543: cdef bint _dataframe_columnar_col_has_nat(
static int __pyx_f_7questdb_7_client__dataframe_columnar_col_has_nat(struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, size_t __pyx_v_row_count) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
2544: col_t* col,
2545: size_t row_count) noexcept nogil:
+2546: if not col.setup.nat_scan_done:
__pyx_t_1 = (!__pyx_v_col->setup->nat_scan_done);
if (__pyx_t_1) {
/* … */
}
+2547: col.setup.nat_found = _dataframe_columnar_i64_has_nat(
__pyx_v_col->setup->nat_found = __pyx_f_7questdb_7_client__dataframe_columnar_i64_has_nat(((int64_t const *)((__pyx_v_col->setup->chunks.chunks[0]).buffers[1])), __pyx_v_row_count);
2548: <const int64_t*>col.setup.chunks.chunks[0].buffers[1],
2549: row_count)
+2550: col.setup.nat_scan_done = True
__pyx_v_col->setup->nat_scan_done = 1;
+2551: return col.setup.nat_found
__pyx_r = __pyx_v_col->setup->nat_found; goto __pyx_L0;
2552:
2553:
+2554: cdef bint _dataframe_columnar_i64_has_negative(
static int __pyx_f_7questdb_7_client__dataframe_columnar_i64_has_negative(int64_t const *__pyx_v_data, size_t __pyx_v_row_count) {
size_t __pyx_v_row_index;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
2555: const int64_t* data,
2556: size_t row_count) noexcept nogil:
2557: cdef size_t row_index
+2558: for row_index in range(row_count):
__pyx_t_1 = __pyx_v_row_count;
__pyx_t_2 = __pyx_t_1;
for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_row_index = __pyx_t_3;
+2559: if data[row_index] < 0:
__pyx_t_4 = ((__pyx_v_data[__pyx_v_row_index]) < 0);
if (__pyx_t_4) {
/* … */
}
}
+2560: return True
__pyx_r = 1;
goto __pyx_L0;
+2561: return False
__pyx_r = 0; goto __pyx_L0;
2562:
2563:
+2564: cdef const qwp_validity* _dataframe_columnar_validity(
static struct qwp_validity const *__pyx_f_7questdb_7_client__dataframe_columnar_validity(struct ArrowArray *__pyx_v_arr, size_t __pyx_v_row_offset, size_t __pyx_v_row_count, struct qwp_validity *__pyx_v_validity) {
struct qwp_validity const *__pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_validity", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2565: ArrowArray* arr,
2566: size_t row_offset,
2567: size_t row_count,
2568: qwp_validity* validity) except? NULL:
+2569: if arr.null_count == 0:
__pyx_t_1 = (__pyx_v_arr->null_count == 0);
if (__pyx_t_1) {
/* … */
}
+2570: return NULL
__pyx_r = NULL;
goto __pyx_L0;
+2571: if row_offset % 8 != 0:
__pyx_t_1 = ((__pyx_v_row_offset % 8) != 0);
if (unlikely(__pyx_t_1)) {
/* … */
}
+2572: raise RuntimeError(
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Columnar_validity_slices_must_st};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __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_2)) __PYX_ERR(0, 2572, __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(0, 2572, __pyx_L1_error)
2573: 'Columnar validity slices must start at byte-aligned row offsets.')
+2574: validity.bits = (<const uint8_t*>arr.buffers[0]) + (row_offset // 8)
__pyx_v_validity->bits = (((uint8_t const *)(__pyx_v_arr->buffers[0])) + (__pyx_v_row_offset / 8));
+2575: validity.bit_len = row_count
__pyx_v_validity->bit_len = __pyx_v_row_count;
+2576: return validity
__pyx_r = __pyx_v_validity; goto __pyx_L0;
2577:
2578:
+2579: cdef bint _dataframe_columnar_has_validity(
static int __pyx_f_7questdb_7_client__dataframe_columnar_has_validity(struct ArrowArray *__pyx_v_arr) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
2580: ArrowArray* arr) noexcept nogil:
+2581: return arr.null_count == 0 or arr.buffers[0] != NULL
__pyx_t_2 = (__pyx_v_arr->null_count == 0);
if (!__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L3_bool_binop_done;
}
__pyx_t_2 = ((__pyx_v_arr->buffers[0]) != NULL);
__pyx_t_1 = __pyx_t_2;
__pyx_L3_bool_binop_done:;
__pyx_r = __pyx_t_1;
goto __pyx_L0;
2582:
2583:
+2584: cdef bint _dataframe_columnar_has_utf8_values(
static int __pyx_f_7questdb_7_client__dataframe_columnar_has_utf8_values(struct ArrowArray *__pyx_v_arr, int __pyx_v_large_offsets) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
2585: ArrowArray* arr, bint large_offsets) noexcept nogil:
+2586: if not (arr.n_buffers >= 3 and
__pyx_t_2 = (__pyx_v_arr->n_buffers >= 3);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
/* … */
__pyx_t_2 = (!__pyx_t_1);
if (__pyx_t_2) {
/* … */
}
+2587: arr.buffers != NULL and
__pyx_t_2 = (__pyx_v_arr->buffers != NULL);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
+2588: arr.buffers[1] != NULL):
__pyx_t_2 = ((__pyx_v_arr->buffers[1]) != NULL); __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:;
+2589: return False
__pyx_r = 0;
goto __pyx_L0;
+2590: if arr.length == 0 or arr.buffers[2] != NULL:
__pyx_t_1 = (__pyx_v_arr->length == 0);
if (!__pyx_t_1) {
} else {
__pyx_t_2 = __pyx_t_1;
goto __pyx_L8_bool_binop_done;
}
__pyx_t_1 = ((__pyx_v_arr->buffers[2]) != NULL);
__pyx_t_2 = __pyx_t_1;
__pyx_L8_bool_binop_done:;
if (__pyx_t_2) {
/* … */
}
+2591: return True
__pyx_r = 1;
goto __pyx_L0;
2592: # NULL byte buffer is valid only with zero data bytes (all-null/empty).
+2593: if large_offsets:
if (__pyx_v_large_offsets) {
/* … */
}
+2594: return (<const int64_t*>arr.buffers[1])[arr.offset + arr.length] == 0
__pyx_r = ((((int64_t const *)(__pyx_v_arr->buffers[1]))[(__pyx_v_arr->offset + __pyx_v_arr->length)]) == 0);
goto __pyx_L0;
+2595: return (<const int32_t*>arr.buffers[1])[arr.offset + arr.length] == 0
__pyx_r = ((((int32_t const *)(__pyx_v_arr->buffers[1]))[(__pyx_v_arr->offset + __pyx_v_arr->length)]) == 0); goto __pyx_L0;
2596:
2597:
+2598: cdef bint _dataframe_columnar_has_utf8_dictionary(
static int __pyx_f_7questdb_7_client__dataframe_columnar_has_utf8_dictionary(struct ArrowArray *__pyx_v_arr) {
struct ArrowArray *__pyx_v_dictionary;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
2599: ArrowArray* arr) noexcept nogil:
+2600: cdef ArrowArray* dictionary = arr.dictionary
__pyx_t_1 = __pyx_v_arr->dictionary; __pyx_v_dictionary = __pyx_t_1;
+2601: if dictionary == NULL:
__pyx_t_2 = (__pyx_v_dictionary == NULL);
if (__pyx_t_2) {
/* … */
}
+2602: return False
__pyx_r = 0;
goto __pyx_L0;
2603: return (
+2604: dictionary.offset == 0 and
__pyx_t_3 = (__pyx_v_dictionary->offset == 0);
if (__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
+2605: dictionary.n_buffers >= 3 and
__pyx_t_3 = (__pyx_v_dictionary->n_buffers >= 3);
if (__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
+2606: dictionary.buffers != NULL and
__pyx_t_3 = (__pyx_v_dictionary->buffers != NULL);
if (__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
+2607: dictionary.buffers[1] != NULL and
__pyx_t_3 = ((__pyx_v_dictionary->buffers[1]) != NULL);
if (__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
+2608: (dictionary.length == 0 or dictionary.buffers[2] != NULL))
__pyx_t_3 = (__pyx_v_dictionary->length == 0);
if (!__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_3 = ((__pyx_v_dictionary->buffers[2]) != NULL);
__pyx_t_2 = __pyx_t_3;
__pyx_L4_bool_binop_done:;
__pyx_r = __pyx_t_2;
goto __pyx_L0;
2609:
2610:
+2611: cdef bint _dataframe_columnar_plan_has_validity(
static int __pyx_f_7questdb_7_client__dataframe_columnar_plan_has_validity(struct __pyx_t_7questdb_7_client_dataframe_plan_t *__pyx_v_plan) {
size_t __pyx_v_col_index;
struct ArrowArray *__pyx_v_arr;
struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
2612: dataframe_plan_t* plan) noexcept nogil:
2613: """
2614: True when chunk row boundaries must be byte-aligned (multiples of 8).
2615: Triggers for:
2616: - Any Arrow column whose `null_count != 0` (the encoder reads a
2617: validity bitmap and our slicing requires byte-alignment).
2618: - Any PyObject source. The planner can't see the nulls until the
2619: build phase walks the column; we conservatively assume they
2620: might be present and require alignment.
2621: - col_source_bool_pyobj specifically packs its VALUES into an
2622: LSB-first bitmap; the emit shift `row_offset // 8` requires
2623: alignment whether or not nulls are present.
2624: """
2625: cdef size_t col_index
2626: cdef ArrowArray* arr
2627: cdef col_t* col
+2628: for col_index in range(plan.col_count):
__pyx_t_1 = __pyx_v_plan->col_count;
__pyx_t_2 = __pyx_t_1;
for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_col_index = __pyx_t_3;
+2629: col = &plan.cols.d[col_index]
__pyx_v_col = (&(__pyx_v_plan->cols.d[__pyx_v_col_index]));
+2630: if _is_pyobj_source(col.setup.source):
__pyx_t_4 = __pyx_f_7questdb_7_client__is_pyobj_source(__pyx_v_col->setup->source);
if (__pyx_t_4) {
/* … */
}
+2631: return True
__pyx_r = 1;
goto __pyx_L0;
+2632: arr = &col.setup.chunks.chunks[0]
__pyx_v_arr = (&(__pyx_v_col->setup->chunks.chunks[0]));
+2633: if arr.null_count != 0:
__pyx_t_4 = (__pyx_v_arr->null_count != 0);
if (__pyx_t_4) {
/* … */
}
}
+2634: return True
__pyx_r = 1;
goto __pyx_L0;
+2635: return False
__pyx_r = 0; goto __pyx_L0;
2636:
2637:
+2638: cdef size_t _dataframe_columnar_rows_per_chunk(
static size_t __pyx_f_7questdb_7_client__dataframe_columnar_rows_per_chunk(struct __pyx_t_7questdb_7_client_dataframe_plan_t *__pyx_v_plan, size_t __pyx_v_max_rows_per_chunk) {
size_t __pyx_v_rows_per_chunk;
size_t __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
2639: dataframe_plan_t* plan,
2640: size_t max_rows_per_chunk) noexcept nogil:
2641: # Clamp to a hard safety upper bound and align to 8 rows when the plan
2642: # carries a validity bitmap (chunk boundary must be byte-aligned).
+2643: cdef size_t rows_per_chunk = max_rows_per_chunk
__pyx_v_rows_per_chunk = __pyx_v_max_rows_per_chunk;
+2644: if rows_per_chunk > 1000000:
__pyx_t_1 = (__pyx_v_rows_per_chunk > 0xF4240);
if (__pyx_t_1) {
/* … */
}
+2645: rows_per_chunk = 1000000
__pyx_v_rows_per_chunk = 0xF4240;
+2646: if rows_per_chunk == 0:
__pyx_t_1 = (__pyx_v_rows_per_chunk == 0);
if (__pyx_t_1) {
/* … */
}
+2647: rows_per_chunk = 1
__pyx_v_rows_per_chunk = 1;
+2648: if _dataframe_columnar_plan_has_validity(plan):
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_plan_has_validity(__pyx_v_plan);
if (__pyx_t_1) {
/* … */
}
+2649: if rows_per_chunk < 8 and rows_per_chunk < plan.row_count:
__pyx_t_2 = (__pyx_v_rows_per_chunk < 8);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L7_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_rows_per_chunk < __pyx_v_plan->row_count);
__pyx_t_1 = __pyx_t_2;
__pyx_L7_bool_binop_done:;
if (__pyx_t_1) {
/* … */
goto __pyx_L6;
}
+2650: rows_per_chunk = 8
__pyx_v_rows_per_chunk = 8;
+2651: elif rows_per_chunk > 8:
__pyx_t_1 = (__pyx_v_rows_per_chunk > 8);
if (__pyx_t_1) {
/* … */
}
__pyx_L6:;
+2652: rows_per_chunk -= rows_per_chunk % 8
__pyx_v_rows_per_chunk = (__pyx_v_rows_per_chunk - (__pyx_v_rows_per_chunk % 8));
+2653: if rows_per_chunk == 0:
__pyx_t_1 = (__pyx_v_rows_per_chunk == 0);
if (__pyx_t_1) {
/* … */
}
+2654: rows_per_chunk = 8
__pyx_v_rows_per_chunk = 8;
+2655: return rows_per_chunk
__pyx_r = __pyx_v_rows_per_chunk; goto __pyx_L0;
2656:
2657:
+2658: cdef object _dataframe_columnar_global_failure(str reason):
static PyObject *__pyx_f_7questdb_7_client__dataframe_columnar_global_failure(PyObject *__pyx_v_reason) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_global_failure", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2659: return {
__Pyx_XDECREF(__pyx_r);
+2660: 'column': None,
__pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_column_2, Py_None) < (0)) __PYX_ERR(0, 2660, __pyx_L1_error)
+2661: 'target': None,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_target, Py_None) < (0)) __PYX_ERR(0, 2660, __pyx_L1_error)
+2662: 'source_code': None,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_source_code, Py_None) < (0)) __PYX_ERR(0, 2660, __pyx_L1_error)
+2663: 'reason': reason,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_reason, __pyx_v_reason) < (0)) __PYX_ERR(0, 2660, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
2664: }
2665:
2666:
+2667: cdef object _dataframe_columnar_col_failure(
static PyObject *__pyx_f_7questdb_7_client__dataframe_columnar_col_failure(PyObject *__pyx_v_df, struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, PyObject *__pyx_v_reason) {
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._dataframe_columnar_col_failure", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2668: object df,
2669: col_t* col,
2670: str reason):
+2671: return {
__Pyx_XDECREF(__pyx_r);
+2672: 'column': df.columns[col.setup.orig_index],
__pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_columns); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, __pyx_v_col->setup->orig_index, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2672, __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_column_2, __pyx_t_3) < (0)) __PYX_ERR(0, 2672, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+2673: 'target': _TARGET_NAMES[col.setup.target],
if (unlikely(__pyx_v_7questdb_7_client__TARGET_NAMES == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 2673, __pyx_L1_error)
}
__pyx_t_3 = __Pyx_PyLong_From_enum____pyx_t_7questdb_7_client_col_target_t(__pyx_v_col->setup->target); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2673, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_7questdb_7_client__TARGET_NAMES, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2673, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_target, __pyx_t_2) < (0)) __PYX_ERR(0, 2672, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2674: 'source_code': <int>col.setup.source,
__pyx_t_2 = __Pyx_PyLong_From_int(((int)__pyx_v_col->setup->source)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2674, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_source_code, __pyx_t_2) < (0)) __PYX_ERR(0, 2672, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2675: 'reason': reason,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_reason, __pyx_v_reason) < (0)) __PYX_ERR(0, 2672, __pyx_L1_error) __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
2676: }
2677:
2678:
+2679: cdef object _dataframe_columnar_plan_normalizations(
static PyObject *__pyx_f_7questdb_7_client__dataframe_columnar_plan_normalizations(CYTHON_UNUSED PyObject *__pyx_v_df, CYTHON_UNUSED struct __pyx_t_7questdb_7_client_dataframe_plan_t *__pyx_v_plan) {
PyObject *__pyx_v_normalizations = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_plan_normalizations", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_normalizations);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2680: object df,
2681: dataframe_plan_t* plan):
+2682: cdef list normalizations = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_normalizations = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2683: return normalizations
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_normalizations); __pyx_r = __pyx_v_normalizations; goto __pyx_L0;
2684:
2685:
+2686: cdef object _dataframe_columnar_plan_failures(
static PyObject *__pyx_f_7questdb_7_client__dataframe_columnar_plan_failures(PyObject *__pyx_v_df, struct __pyx_t_7questdb_7_client_dataframe_plan_t *__pyx_v_plan) {
PyObject *__pyx_v_failures = 0;
size_t __pyx_v_col_index;
size_t __pyx_v_field_count;
struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col;
int64_t const *__pyx_v_ts_data;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_plan_failures", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_failures);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2687: object df,
2688: dataframe_plan_t* plan):
+2689: cdef list failures = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_failures = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
2690: cdef size_t col_index
+2691: cdef size_t field_count = 0
__pyx_v_field_count = 0;
2692: cdef col_t* col
2693: cdef const int64_t* ts_data
2694:
+2695: if (plan.col_count == 0) or (plan.row_count == 0):
__pyx_t_3 = (__pyx_v_plan->col_count == 0);
if (!__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_3 = (__pyx_v_plan->row_count == 0);
__pyx_t_2 = __pyx_t_3;
__pyx_L4_bool_binop_done:;
if (__pyx_t_2) {
/* … */
}
+2696: return failures
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_failures); __pyx_r = __pyx_v_failures; goto __pyx_L0;
2697:
+2698: if plan.c_table_name.buf == NULL:
__pyx_t_2 = (__pyx_v_plan->c_table_name.buf == NULL);
if (__pyx_t_2) {
/* … */
}
+2699: failures.append(_dataframe_columnar_global_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_global_failure(__pyx_mstate_global->__pyx_kp_u_v1_requires_a_fixed_table_name_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2699, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2700: 'v1 requires a fixed table_name; table_name_col is not supported.'))
2701:
+2702: if (plan.at_value != _AT_IS_SET_BY_COLUMN
__pyx_t_3 = (__pyx_v_plan->at_value != __pyx_v_7questdb_7_client__AT_IS_SET_BY_COLUMN);
if (__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L8_bool_binop_done;
}
/* … */
if (__pyx_t_2) {
/* … */
}
+2703: and plan.at_value != _AT_IS_SERVER_NOW
__pyx_t_3 = (__pyx_v_plan->at_value != __pyx_v_7questdb_7_client__AT_IS_SERVER_NOW);
if (__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L8_bool_binop_done;
}
+2704: and plan.at_value < 0):
__pyx_t_3 = (__pyx_v_plan->at_value < 0); __pyx_t_2 = __pyx_t_3; __pyx_L8_bool_binop_done:;
+2705: failures.append(_dataframe_columnar_global_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_global_failure(__pyx_mstate_global->__pyx_kp_u_v1_requires_at_to_be_a_non_null); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2706: 'v1 requires at to be a non-null DataFrame timestamp column, '
2707: 'a fixed timestamp shared by every row, or the explicit '
2708: 'ServerTimestamp sentinel.'))
2709:
+2710: for col_index in range(plan.col_count):
__pyx_t_5 = __pyx_v_plan->col_count;
__pyx_t_6 = __pyx_t_5;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_col_index = __pyx_t_7;
+2711: col = &plan.cols.d[col_index]
__pyx_v_col = (&(__pyx_v_plan->cols.d[__pyx_v_col_index]));
+2712: if col.setup.target == col_target_t.col_target_skip:
__pyx_t_2 = (__pyx_v_col->setup->target == __pyx_e_7questdb_7_client_col_target_skip);
if (__pyx_t_2) {
/* … */
}
+2713: continue
goto __pyx_L11_continue;
+2714: if col.setup.target == col_target_t.col_target_table:
__pyx_t_2 = (__pyx_v_col->setup->target == __pyx_e_7questdb_7_client_col_target_table);
if (__pyx_t_2) {
/* … */
}
+2715: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_table_name_columns_are_not_suppo); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2715, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2716: df, col, 'table-name columns are not supported in v1.'))
+2717: continue
goto __pyx_L11_continue;
+2718: if col.setup.target != col_target_t.col_target_at:
__pyx_t_2 = (__pyx_v_col->setup->target != __pyx_e_7questdb_7_client_col_target_at);
if (__pyx_t_2) {
/* … */
}
+2719: field_count += 1
__pyx_v_field_count = (__pyx_v_field_count + 1);
+2720: if not _dataframe_columnar_has_single_contiguous_chunk(
__pyx_t_2 = (!__pyx_f_7questdb_7_client__dataframe_columnar_has_single_contiguous_chunk(__pyx_v_col, __pyx_v_plan->row_count));
if (__pyx_t_2) {
/* … */
}
2721: col, plan.row_count):
+2722: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_requires_one_contiguous_zero); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2722, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2723: df, col, 'v1 requires one contiguous zero-offset buffer.'))
+2724: continue
goto __pyx_L11_continue;
+2725: if not _dataframe_columnar_has_validity(
__pyx_t_2 = (!__pyx_f_7questdb_7_client__dataframe_columnar_has_validity((&(__pyx_v_col->setup->chunks.chunks[0]))));
if (__pyx_t_2) {
/* … */
}
2726: &col.setup.chunks.chunks[0]):
+2727: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_requires_a_zero_offset_validi); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2727, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2727, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2728: df, col, 'v1 requires a zero-offset validity bitmap when '
2729: 'nulls are present.'))
+2730: continue
goto __pyx_L11_continue;
2731:
+2732: if col.setup.target == col_target_t.col_target_column_bool:
switch (__pyx_v_col->setup->target) {
case __pyx_e_7questdb_7_client_col_target_column_bool:
/* … */
break;
case __pyx_e_7questdb_7_client_col_target_column_i64:
+2733: if col.setup.source not in (
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_bool_pyobj:
/* … */
__pyx_t_2 = 0;
break;
default:
__pyx_t_2 = 1;
break;
}
__pyx_t_3 = __pyx_t_2;
if (__pyx_t_3) {
/* … */
}
+2734: col_source_t.col_source_bool_pyobj,
case __pyx_e_7questdb_7_client_col_source_bool_numpy:
2735: col_source_t.col_source_bool_numpy):
+2736: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_only_supports_object_dtype_bo); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2736, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2737: df,
2738: col,
2739: 'v1 only supports object-dtype bool or NumPy bool '
2740: 'columns; Arrow nullable bool not yet supported.'))
+2741: elif col.setup.target == col_target_t.col_target_column_i64:
break;
case __pyx_e_7questdb_7_client_col_target_column_f64:
+2742: if col.setup.source not in (
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_i64_numpy:
/* … */
__pyx_t_3 = 0;
break;
default:
__pyx_t_3 = 1;
break;
}
__pyx_t_2 = __pyx_t_3;
if (__pyx_t_2) {
/* … */
}
+2743: col_source_t.col_source_i64_numpy,
case __pyx_e_7questdb_7_client_col_source_i8_numpy:
+2744: col_source_t.col_source_i8_numpy,
case __pyx_e_7questdb_7_client_col_source_i16_numpy:
+2745: col_source_t.col_source_i16_numpy,
case __pyx_e_7questdb_7_client_col_source_i32_numpy:
+2746: col_source_t.col_source_i32_numpy,
case __pyx_e_7questdb_7_client_col_source_u8_numpy:
+2747: col_source_t.col_source_u8_numpy,
case __pyx_e_7questdb_7_client_col_source_u16_numpy:
+2748: col_source_t.col_source_u16_numpy,
case __pyx_e_7questdb_7_client_col_source_u32_numpy:
+2749: col_source_t.col_source_u32_numpy,
case __pyx_e_7questdb_7_client_col_source_u64_numpy:
+2750: col_source_t.col_source_u64_numpy,
case __pyx_e_7questdb_7_client_col_source_u32_arrow:
+2751: col_source_t.col_source_u32_arrow,
case __pyx_e_7questdb_7_client_col_source_i64_arrow:
+2752: col_source_t.col_source_i64_arrow,
case __pyx_e_7questdb_7_client_col_source_int_pyobj:
2753: col_source_t.col_source_int_pyobj):
+2754: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_only_supports_NumPy_signed_un); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2754, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2754, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2755: df,
2756: col,
2757: 'v1 only supports NumPy signed/unsigned int columns, '
2758: 'Arrow uint32/int64 columns, or object-dtype int '
2759: 'columns.'))
+2760: elif col.setup.target == col_target_t.col_target_column_f64:
break;
case __pyx_e_7questdb_7_client_col_target_column_ts:
+2761: if col.setup.source not in (
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_f64_numpy:
/* … */
__pyx_t_2 = 0;
break;
default:
__pyx_t_2 = 1;
break;
}
__pyx_t_3 = __pyx_t_2;
if (__pyx_t_3) {
/* … */
}
+2762: col_source_t.col_source_f64_numpy,
case __pyx_e_7questdb_7_client_col_source_f32_numpy:
+2763: col_source_t.col_source_f32_numpy,
case __pyx_e_7questdb_7_client_col_source_f64_arrow:
+2764: col_source_t.col_source_f64_arrow,
case __pyx_e_7questdb_7_client_col_source_float_pyobj:
2765: col_source_t.col_source_float_pyobj):
+2766: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_only_supports_NumPy_float32_f); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2766, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2767: df,
2768: col,
2769: 'v1 only supports NumPy float32/float64, Arrow '
2770: 'float64, or object-dtype float columns.'))
+2771: elif col.setup.target == col_target_t.col_target_column_ts:
break;
case __pyx_e_7questdb_7_client_col_target_column_str:
+2772: if col.setup.source not in (
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_dt64ns_numpy:
/* … */
__pyx_t_3 = 0;
break;
default:
__pyx_t_3 = 1;
break;
}
__pyx_t_2 = __pyx_t_3;
if (__pyx_t_2) {
/* … */
goto __pyx_L21;
}
+2773: col_source_t.col_source_dt64ns_numpy,
case __pyx_e_7questdb_7_client_col_source_dt64us_numpy:
+2774: col_source_t.col_source_dt64us_numpy,
case __pyx_e_7questdb_7_client_col_source_dt64ns_tz_arrow:
+2775: col_source_t.col_source_dt64ns_tz_arrow,
case __pyx_e_7questdb_7_client_col_source_dt64us_tz_arrow:
+2776: col_source_t.col_source_dt64us_tz_arrow,
case __pyx_e_7questdb_7_client_col_source_datetime_pyobj:
2777: col_source_t.col_source_datetime_pyobj):
+2778: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_only_supports_NumPy_datetime6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2778, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2779: df,
2780: col,
2781: 'v1 only supports NumPy datetime64[ns/us], '
2782: 'tz-aware datetime64/timestamp[pyarrow], or '
2783: 'object-dtype datetime timestamp field columns.'))
+2784: elif (col.setup.source == col_source_t.col_source_dt64ns_numpy
__pyx_t_3 = (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_dt64ns_numpy);
if (__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L22_bool_binop_done;
}
/* … */
if (__pyx_t_2) {
/* … */
}
__pyx_L21:;
+2785: and _PYARROW is None):
__pyx_t_3 = (__pyx_v_7questdb_7_client__PYARROW == Py_None);
__pyx_t_2 = __pyx_t_3;
__pyx_L22_bool_binop_done:;
2786: # NaT in a datetime64[ns] field is INT64_MIN nanoseconds;
2787: # the zero-copy ns->micros wire conversion would corrupt
2788: # that null sentinel into a bogus 1677 timestamp. With
2789: # pyarrow, _dataframe_columnar_promote_cols already
2790: # re-exported any NaT-carrying column through Arrow (and
2791: # imported pyarrow doing so), leaving nothing to reject.
+2792: if _dataframe_columnar_col_has_nat(col, plan.row_count):
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_columnar_col_has_nat(__pyx_v_col, __pyx_v_plan->row_count);
if (__pyx_t_2) {
/* … */
}
+2793: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_datetime64_ns_timestamp_field); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2793, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2793, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2794: df,
2795: col,
2796: 'v1 datetime64[ns] timestamp field columns cannot '
2797: 'contain NaT without pyarrow; install pyarrow, or '
2798: 'use datetime64[us] or an object-dtype datetime '
2799: 'column for NULL timestamps.'))
+2800: elif col.setup.target == col_target_t.col_target_column_str:
break;
case __pyx_e_7questdb_7_client_col_target_symbol:
+2801: if col.setup.source == col_source_t.col_source_str_pyobj:
__pyx_t_2 = (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_str_pyobj);
if (__pyx_t_2) {
goto __pyx_L25;
}
2802: # PyObject sources are validated by the pre-build phase
2803: # at row level (one walk catches all rows). The planner
2804: # has nothing more to check here.
2805: pass
+2806: elif col.setup.source in (
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_str_i8_cat:
/* … */
__pyx_t_2 = 1;
break;
default:
__pyx_t_2 = 0;
break;
}
__pyx_t_3 = __pyx_t_2;
if (__pyx_t_3) {
/* … */
goto __pyx_L25;
}
+2807: col_source_t.col_source_str_i8_cat,
case __pyx_e_7questdb_7_client_col_source_str_i16_cat:
+2808: col_source_t.col_source_str_i16_cat,
case __pyx_e_7questdb_7_client_col_source_str_i32_cat:
2809: col_source_t.col_source_str_i32_cat):
+2810: if not _dataframe_columnar_has_utf8_dictionary(
__pyx_t_3 = (!__pyx_f_7questdb_7_client__dataframe_columnar_has_utf8_dictionary((&(__pyx_v_col->setup->chunks.chunks[0]))));
if (__pyx_t_3) {
/* … */
}
2811: &col.setup.chunks.chunks[0]):
+2812: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_requires_Arrow_UTF_8_or_Large); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2812, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2812, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2813: df,
2814: col,
2815: 'v1 requires Arrow UTF-8 or LargeUtf8 dictionary '
2816: 'offsets and byte buffers for categorical columns.'))
+2817: elif col.setup.source not in (
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_str_utf8_arrow:
/* … */
__pyx_t_3 = 0;
break;
default:
__pyx_t_3 = 1;
break;
}
__pyx_t_2 = __pyx_t_3;
if (__pyx_t_2) {
/* … */
goto __pyx_L25;
}
+2818: col_source_t.col_source_str_utf8_arrow,
case __pyx_e_7questdb_7_client_col_source_str_lrg_utf8_arrow:
2819: col_source_t.col_source_str_lrg_utf8_arrow):
+2820: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_only_supports_string_pyarrow); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2820, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2821: df,
2822: col,
2823: 'v1 only supports string[pyarrow] columns backed by '
2824: 'Arrow UTF-8 or LargeUtf8, pandas string Categorical, '
2825: 'or object-dtype str.'))
+2826: elif not _dataframe_columnar_has_utf8_values(
__pyx_t_2 = (!__pyx_f_7questdb_7_client__dataframe_columnar_has_utf8_values((&(__pyx_v_col->setup->chunks.chunks[0])), (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_str_lrg_utf8_arrow)));
if (__pyx_t_2) {
/* … */
}
__pyx_L25:;
2827: &col.setup.chunks.chunks[0],
2828: col.setup.source ==
2829: col_source_t.col_source_str_lrg_utf8_arrow):
+2830: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_requires_Arrow_UTF_8_or_Large_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2830, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2831: df,
2832: col,
2833: 'v1 requires Arrow UTF-8 or LargeUtf8 offsets and byte buffers.'))
+2834: elif col.setup.target == col_target_t.col_target_symbol:
break;
case __pyx_e_7questdb_7_client_col_target_at:
+2835: if col.setup.source in (
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_str_i8_cat:
/* … */
break;
case __pyx_e_7questdb_7_client_col_source_str_utf8_arrow:
+2836: col_source_t.col_source_str_i8_cat,
case __pyx_e_7questdb_7_client_col_source_str_i16_cat:
+2837: col_source_t.col_source_str_i16_cat,
case __pyx_e_7questdb_7_client_col_source_str_i32_cat:
2838: col_source_t.col_source_str_i32_cat):
+2839: if not _dataframe_columnar_has_utf8_dictionary(
__pyx_t_2 = (!__pyx_f_7questdb_7_client__dataframe_columnar_has_utf8_dictionary((&(__pyx_v_col->setup->chunks.chunks[0]))));
if (__pyx_t_2) {
/* … */
}
2840: &col.setup.chunks.chunks[0]):
+2841: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_requires_Arrow_UTF_8_or_Large_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2841, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2842: df,
2843: col,
2844: 'v1 requires Arrow UTF-8 or LargeUtf8 dictionary '
2845: 'offsets and byte buffers for categorical symbols.'))
+2846: elif col.setup.source in (
break;
default:
+2847: col_source_t.col_source_str_utf8_arrow,
case __pyx_e_7questdb_7_client_col_source_str_lrg_utf8_arrow:
2848: col_source_t.col_source_str_lrg_utf8_arrow):
+2849: if not _dataframe_columnar_has_utf8_values(
__pyx_t_2 = (!__pyx_f_7questdb_7_client__dataframe_columnar_has_utf8_values((&(__pyx_v_col->setup->chunks.chunks[0])), (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_str_lrg_utf8_arrow)));
if (__pyx_t_2) {
/* … */
}
2850: &col.setup.chunks.chunks[0],
2851: col.setup.source ==
2852: col_source_t.col_source_str_lrg_utf8_arrow):
+2853: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_requires_Arrow_UTF_8_or_Large_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2853, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2853, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2854: df,
2855: col,
2856: 'v1 requires Arrow UTF-8 or LargeUtf8 offsets and '
2857: 'byte buffers.'))
2858: else:
+2859: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_only_supports_pandas_string_C); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2859, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2859, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; break; }
2860: df,
2861: col,
2862: 'v1 only supports pandas string Categorical or '
2863: 'string[pyarrow] symbol columns.'))
+2864: elif col.setup.target == col_target_t.col_target_at:
break;
case __pyx_e_7questdb_7_client_col_target_column_decimal:
+2865: if col.setup.source not in (
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_dt64ns_numpy:
/* … */
__pyx_t_2 = 0;
break;
default:
__pyx_t_2 = 1;
break;
}
__pyx_t_3 = __pyx_t_2;
if (__pyx_t_3) {
/* … */
goto __pyx_L29;
}
+2866: col_source_t.col_source_dt64ns_numpy,
case __pyx_e_7questdb_7_client_col_source_dt64us_numpy:
+2867: col_source_t.col_source_dt64us_numpy,
case __pyx_e_7questdb_7_client_col_source_dt64ns_tz_arrow:
+2868: col_source_t.col_source_dt64ns_tz_arrow,
case __pyx_e_7questdb_7_client_col_source_dt64us_tz_arrow:
+2869: col_source_t.col_source_dt64us_tz_arrow,
case __pyx_e_7questdb_7_client_col_source_dt64ms_tz_arrow:
+2870: col_source_t.col_source_dt64ms_tz_arrow,
case __pyx_e_7questdb_7_client_col_source_dt64s_tz_arrow:
2871: col_source_t.col_source_dt64s_tz_arrow):
+2872: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_only_supports_NumPy_datetime6_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2872, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2872, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2873: df,
2874: col,
2875: 'v1 only supports NumPy datetime64[ns/us] or '
2876: 'tz-aware datetime64/timestamp[pyarrow] '
2877: 'designated timestamp columns.'))
+2878: elif (col.setup.source in (
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_dt64ns_tz_arrow:
/* … */
__pyx_t_2 = 1;
break;
default:
__pyx_t_2 = 0;
break;
}
__pyx_t_8 = __pyx_t_2;
if (__pyx_t_8) {
} else {
__pyx_t_3 = __pyx_t_8;
goto __pyx_L30_bool_binop_done;
}
/* … */
if (__pyx_t_3) {
/* … */
goto __pyx_L29;
}
+2879: col_source_t.col_source_dt64ns_tz_arrow,
case __pyx_e_7questdb_7_client_col_source_dt64us_tz_arrow:
+2880: col_source_t.col_source_dt64us_tz_arrow,
case __pyx_e_7questdb_7_client_col_source_dt64ms_tz_arrow:
+2881: col_source_t.col_source_dt64ms_tz_arrow,
case __pyx_e_7questdb_7_client_col_source_dt64s_tz_arrow:
2882: col_source_t.col_source_dt64s_tz_arrow)
+2883: and col.setup.chunks.chunks[0].null_count != 0):
__pyx_t_8 = ((__pyx_v_col->setup->chunks.chunks[0]).null_count != 0);
__pyx_t_3 = __pyx_t_8;
__pyx_L30_bool_binop_done:;
+2884: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_designated_timestamp_columns); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2884, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2884, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2885: df,
2886: col,
2887: 'v1 designated timestamp columns cannot contain nulls.'))
2888: else:
+2889: ts_data = <const int64_t*>col.setup.chunks.chunks[0].buffers[1]
/*else*/ {
__pyx_v_ts_data = ((int64_t const *)((__pyx_v_col->setup->chunks.chunks[0]).buffers[1]));
+2890: if _dataframe_columnar_i64_has_nat(ts_data, plan.row_count):
__pyx_t_3 = __pyx_f_7questdb_7_client__dataframe_columnar_i64_has_nat(__pyx_v_ts_data, __pyx_v_plan->row_count);
if (__pyx_t_3) {
/* … */
goto __pyx_L32;
}
+2891: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_designated_timestamp_columns_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2891, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2891, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2892: df,
2893: col,
2894: 'v1 designated timestamp columns cannot contain NaT.'))
+2895: elif _dataframe_columnar_i64_has_negative(
__pyx_t_3 = __pyx_f_7questdb_7_client__dataframe_columnar_i64_has_negative(__pyx_v_ts_data, __pyx_v_plan->row_count);
if (__pyx_t_3) {
/* … */
}
__pyx_L32:;
}
__pyx_L29:;
2896: ts_data, plan.row_count):
+2897: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_designated_timestamp_columns_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2897, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2898: df,
2899: col,
2900: 'v1 designated timestamp columns cannot contain '
2901: 'timestamps before the Unix epoch.'))
+2902: elif col.setup.target == col_target_t.col_target_column_decimal:
break;
case __pyx_e_7questdb_7_client_col_target_column_i8:
+2903: if col.setup.source == col_source_t.col_source_decimal_pyobj:
__pyx_t_3 = (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_decimal_pyobj);
if (__pyx_t_3) {
/* … */
goto __pyx_L33;
}
2904: # _dataframe_columnar_promote_cols re-exports these through
2905: # Arrow; reaching this branch means pyarrow is unavailable.
+2906: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_object_dtype_Decimal_columns_req); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2906, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2906, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2907: df,
2908: col,
2909: 'object-dtype Decimal columns require pyarrow on the '
2910: 'columnar path; install pyarrow, or back the column '
2911: 'with an Arrow decimal type.'))
+2912: elif col.setup.source not in (
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_decimal32_arrow:
/* … */
__pyx_t_3 = 0;
break;
default:
__pyx_t_3 = 1;
break;
}
__pyx_t_8 = __pyx_t_3;
if (__pyx_t_8) {
/* … */
}
__pyx_L33:;
+2913: col_source_t.col_source_decimal32_arrow,
case __pyx_e_7questdb_7_client_col_source_decimal64_arrow:
+2914: col_source_t.col_source_decimal64_arrow,
case __pyx_e_7questdb_7_client_col_source_decimal128_arrow:
+2915: col_source_t.col_source_decimal128_arrow,
case __pyx_e_7questdb_7_client_col_source_decimal256_arrow:
2916: col_source_t.col_source_decimal256_arrow):
+2917: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, __pyx_mstate_global->__pyx_kp_u_v1_only_supports_Arrow_backed_de); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2917, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2918: df,
2919: col,
2920: 'v1 only supports Arrow-backed decimal columns '
2921: '(pyarrow decimal32/64/128/256).'))
+2922: elif col.setup.target in (
break;
default:
+2923: col_target_t.col_target_column_i8,
case __pyx_e_7questdb_7_client_col_target_column_i16:
+2924: col_target_t.col_target_column_i16,
case __pyx_e_7questdb_7_client_col_target_column_i32:
+2925: col_target_t.col_target_column_i32,
case __pyx_e_7questdb_7_client_col_target_column_f32:
+2926: col_target_t.col_target_column_f32,
case __pyx_e_7questdb_7_client_col_target_column_uuid:
+2927: col_target_t.col_target_column_uuid,
case __pyx_e_7questdb_7_client_col_target_column_long256:
+2928: col_target_t.col_target_column_long256,
case __pyx_e_7questdb_7_client_col_target_column_ipv4:
+2929: col_target_t.col_target_column_ipv4,
case __pyx_e_7questdb_7_client_col_target_column_binary:
+2930: col_target_t.col_target_column_binary,
case __pyx_e_7questdb_7_client_col_target_column_arrow:
2931: col_target_t.col_target_column_arrow):
2932: # Column-QWP-only targets reached via `_FIELD_TARGETS_QWP`.
2933: # Each currently reachable target's source-set in
2934: # `_TARGET_TO_SOURCES` is a singleton, so the source is
2935: # already constrained by routing. The contiguous-buffer +
2936: # validity checks above cover layout; the per-type FFI
2937: # handles the wire encoding. col_target_column_arrow delegates
2938: # type validation to the Rust importer.
2939: pass
2940: else:
+2941: failures.append(_dataframe_columnar_col_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_col_failure(__pyx_v_df, __pyx_v_col, ((PyObject*)__pyx_t_9)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2941, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; break; } __pyx_L11_continue:; }
2942: df,
2943: col,
+2944: f'v1 does not support {_TARGET_NAMES[col.setup.target]} '
if (unlikely(__pyx_v_7questdb_7_client__TARGET_NAMES == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 2944, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_PyLong_From_enum____pyx_t_7questdb_7_client_col_target_t(__pyx_v_col->setup->target); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2944, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_9 = __Pyx_PyDict_GetItem(__pyx_v_7questdb_7_client__TARGET_NAMES, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2944, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_t_9, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2944, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_10[0] = __pyx_mstate_global->__pyx_kp_u_v1_does_not_support;
__pyx_t_10[1] = __pyx_t_1;
__pyx_t_10[2] = __pyx_mstate_global->__pyx_kp_u_columns_2;
__pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_10, 3, 20 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 9, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2944, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2945: 'columns.'))
2946:
+2947: if field_count == 0:
__pyx_t_8 = (__pyx_v_field_count == 0);
if (__pyx_t_8) {
/* … */
}
+2948: failures.append(_dataframe_columnar_global_failure(
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_global_failure(__pyx_mstate_global->__pyx_kp_u_v1_requires_at_least_one_non_tim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2948, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_failures, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2948, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2949: 'v1 requires at least one non-timestamp data column.'))
2950:
+2951: return failures
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_failures); __pyx_r = __pyx_v_failures; goto __pyx_L0;
2952:
2953:
+2954: cdef void_int _dataframe_columnar_validate_plan(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_columnar_validate_plan(PyObject *__pyx_v_df, struct __pyx_t_7questdb_7_client_dataframe_plan_t *__pyx_v_plan) {
PyObject *__pyx_v_failures = 0;
__pyx_t_7questdb_7_client_void_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_AddTraceback("questdb._client._dataframe_columnar_validate_plan", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_failures);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2955: object df,
2956: dataframe_plan_t* plan) except -1:
+2957: cdef object failures = _dataframe_columnar_plan_failures(df, plan)
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_plan_failures(__pyx_v_df, __pyx_v_plan); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_failures = __pyx_t_1; __pyx_t_1 = 0;
+2958: if failures:
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_failures); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 2958, __pyx_L1_error) if (unlikely(__pyx_t_2)) { /* … */ }
+2959: raise UnsupportedDataFrameShapeError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_UnsupportedDataFrameShapeError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2959, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
2960: 'DataFrame is not supported by QuestDB.dataframe() columnar v1.',
+2961: failures)
__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[3] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_DataFrame_is_not_supported_by_Qu, __pyx_v_failures};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (3-__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(0, 2959, __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(0, 2959, __pyx_L1_error)
2962:
2963:
+2964: cdef object _dataframe_columnar_ndarray_col_to_arrow(object df, col_t* col):
static PyObject *__pyx_f_7questdb_7_client__dataframe_columnar_ndarray_col_to_arrow(PyObject *__pyx_v_df, struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col) {
PyObject *__pyx_v_series = 0;
PyObject *__pyx_v_cell = 0;
PyArrayObject *__pyx_v_arr;
int __pyx_v_nested;
PyObject *__pyx_v_col_name = 0;
PyObject *__pyx_9genexpr10__pyx_v_cell = NULL;
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_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_ndarray_col_to_arrow", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_series);
__Pyx_XDECREF(__pyx_v_cell);
__Pyx_XDECREF(__pyx_v_col_name);
__Pyx_XDECREF(__pyx_9genexpr10__pyx_v_cell);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2965: cdef object series = df.iloc[:, col.setup.orig_index]
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_iloc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyLong_FromSize_t(__pyx_v_col->setup->orig_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_mstate_global->__pyx_slice[0]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[0]); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_mstate_global->__pyx_slice[0]) != (0)) __PYX_ERR(0, 2965, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2) != (0)) __PYX_ERR(0, 2965, __pyx_L1_error); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_series = __pyx_t_2; __pyx_t_2 = 0;
2966: cdef object cell
2967: cdef PyArrayObject* arr
+2968: cdef bint nested = False
__pyx_v_nested = 0;
+2969: cdef object col_name = df.columns[col.setup.orig_index]
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_columns); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2969, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, __pyx_v_col->setup->orig_index, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2969, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_col_name = __pyx_t_3; __pyx_t_3 = 0;
+2970: for cell in series:
if (likely(PyList_CheckExact(__pyx_v_series)) || PyTuple_CheckExact(__pyx_v_series)) { __pyx_t_3 = __pyx_v_series; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; __pyx_t_5 = NULL; } else { __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_series); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2970, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2970, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_5)) { if (likely(PyList_CheckExact(__pyx_t_3))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2970, __pyx_L1_error) #endif if (__pyx_t_4 >= __pyx_temp) break; } __pyx_t_2 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_4; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2970, __pyx_L1_error) #endif if (__pyx_t_4 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4)); #else __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); #endif ++__pyx_t_4; } if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2970, __pyx_L1_error) } else { __pyx_t_2 = __pyx_t_5(__pyx_t_3); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 2970, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_2); __Pyx_XDECREF_SET(__pyx_v_cell, __pyx_t_2); __pyx_t_2 = 0; /* … */ __pyx_L3_continue:; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+2971: if _dataframe_is_null_pyobj(<PyObject*>cell):
__pyx_t_6 = __pyx_f_7questdb_7_client__dataframe_is_null_pyobj(((PyObject *)__pyx_v_cell));
if (__pyx_t_6) {
/* … */
}
+2972: continue
goto __pyx_L3_continue;
+2973: if not PyArray_CheckExact(<PyObject*>cell):
__pyx_t_6 = (!PyArray_CheckExact(((PyObject *)__pyx_v_cell)));
if (unlikely(__pyx_t_6)) {
/* … */
}
+2974: raise QuestDBError(
__pyx_t_1 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2974, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+2975: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2976: f'Bad column {col_name!r}: mixed object cells; expected '
__pyx_t_8 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2976, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); /* … */ __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_12, 5, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8) + 76 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2976, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_13 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7); assert(__pyx_t_1); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); __pyx_t_13 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_9, __pyx_t_10}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_13, (3-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2974, __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(0, 2974, __pyx_L1_error)
2977: f'every non-null cell to be a numpy array, got '
+2978: f'{_fqn(type(cell))}.')
__pyx_t_10 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_cell)))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = __Pyx_PyUnicode_Unicode(__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_12[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_12[1] = __pyx_t_8; __pyx_t_12[2] = __pyx_mstate_global->__pyx_kp_u_mixed_object_cells_expected_eve; __pyx_t_12[3] = __pyx_t_11; __pyx_t_12[4] = __pyx_mstate_global->__pyx_kp_u__2;
+2979: arr = <PyArrayObject*>cell
__pyx_v_arr = ((PyArrayObject *)__pyx_v_cell);
+2980: if PyArray_TYPE(arr) != NPY_DOUBLE:
__pyx_t_6 = (PyArray_TYPE(__pyx_v_arr) != NPY_DOUBLE);
if (unlikely(__pyx_t_6)) {
/* … */
}
+2981: raise QuestDBError(
__pyx_t_7 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2981, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
+2982: QuestDBErrorCode.ArrayError,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_ArrayError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+2983: f'Bad column {col_name!r}: Only float64 numpy arrays are '
__pyx_t_9 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); /* … */ __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_14, 4, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9) + 54 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_13 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_10))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_10); assert(__pyx_t_7); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_10, __pyx__function); __pyx_t_13 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_1, __pyx_t_11}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_13, (3-__pyx_t_13) | (__pyx_t_13*__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_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2981, __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(0, 2981, __pyx_L1_error)
+2984: f'supported, got dtype: {cell.dtype}')
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_cell, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_14[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_14[1] = __pyx_t_9; __pyx_t_14[2] = __pyx_mstate_global->__pyx_kp_u_Only_float64_numpy_arrays_are_s; __pyx_t_14[3] = __pyx_t_8;
+2985: if PyArray_NDIM(arr) > 1:
__pyx_t_6 = (PyArray_NDIM(__pyx_v_arr) > 1);
if (__pyx_t_6) {
/* … */
}
+2986: nested = True
__pyx_v_nested = 1;
+2987: if not nested:
__pyx_t_6 = (!__pyx_v_nested);
if (__pyx_t_6) {
/* … */
}
+2988: return _PYARROW.Array.from_pandas(series)
__Pyx_XDECREF(__pyx_r); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_Array); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_2 = __pyx_t_10; __Pyx_INCREF(__pyx_t_2); __pyx_t_13 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_series}; __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_pandas, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
2989: # pyarrow cannot convert multi-dimensional ndarray cells directly
2990: # ("Can only convert 1-dimensional array values"); nested python
2991: # lists infer to the equivalent nested list<...<double>>.
+2992: return _PYARROW.array([
__Pyx_XDECREF(__pyx_r); __pyx_t_10 = __pyx_v_7questdb_7_client__PYARROW; __Pyx_INCREF(__pyx_t_10); { /* enter inner scope */ __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2992, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_2);
+2993: None if _dataframe_is_null_pyobj(<PyObject*>cell) else cell.tolist()
__pyx_t_6 = __pyx_f_7questdb_7_client__dataframe_is_null_pyobj(((PyObject *)__pyx_9genexpr10__pyx_v_cell));
if (__pyx_t_6) {
__Pyx_INCREF(Py_None);
__pyx_t_1 = Py_None;
} else {
__pyx_t_8 = __pyx_9genexpr10__pyx_v_cell;
__Pyx_INCREF(__pyx_t_8);
__pyx_t_13 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
__pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_tolist, __pyx_callargs+__pyx_t_13, (1-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2993, __pyx_L13_error)
__Pyx_GOTREF(__pyx_t_7);
}
__pyx_t_1 = __pyx_t_7;
__pyx_t_7 = 0;
}
if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 2992, __pyx_L13_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2994: for cell in series])
if (likely(PyList_CheckExact(__pyx_v_series)) || PyTuple_CheckExact(__pyx_v_series)) { __pyx_t_11 = __pyx_v_series; __Pyx_INCREF(__pyx_t_11); __pyx_t_4 = 0; __pyx_t_5 = NULL; } else { __pyx_t_4 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_v_series); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2994, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2994, __pyx_L13_error) } for (;;) { if (likely(!__pyx_t_5)) { if (likely(PyList_CheckExact(__pyx_t_11))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_11); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2994, __pyx_L13_error) #endif if (__pyx_t_4 >= __pyx_temp) break; } __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_11, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_4; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_11); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 2994, __pyx_L13_error) #endif if (__pyx_t_4 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_4)); #else __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_11, __pyx_t_4); #endif ++__pyx_t_4; } if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2994, __pyx_L13_error) } else { __pyx_t_1 = __pyx_t_5(__pyx_t_11); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 2994, __pyx_L13_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_9genexpr10__pyx_v_cell, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_9genexpr10__pyx_v_cell); __pyx_9genexpr10__pyx_v_cell = 0; goto __pyx_L17_exit_scope; __pyx_L13_error:; __Pyx_XDECREF(__pyx_9genexpr10__pyx_v_cell); __pyx_9genexpr10__pyx_v_cell = 0; goto __pyx_L1_error; __pyx_L17_exit_scope:; } /* exit inner scope */ __pyx_t_13 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_2}; __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_array, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2992, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
2995:
2996:
+2997: cdef object _dataframe_columnar_col_from_pandas(object df, col_t* col):
static PyObject *__pyx_f_7questdb_7_client__dataframe_columnar_col_from_pandas(PyObject *__pyx_v_df, struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col) {
PyObject *__pyx_v_e = NULL;
PyObject *__pyx_v_col_name = NULL;
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_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_col_from_pandas", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_e);
__Pyx_XDECREF(__pyx_v_col_name);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2998: # Re-export a pandas column as a pyarrow Array: pyarrow infers the
2999: # Arrow type (decimal width/scale, timestamp unit, ...) and carries a
3000: # validity bitmap for nulls, which the Rust Arrow importer then encodes.
+3001: 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;
}
+3002: return _PYARROW.Array.from_pandas(df.iloc[:, col.setup.orig_index])
__Pyx_XDECREF(__pyx_r); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_Array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3002, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_iloc); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3002, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyLong_FromSize_t(__pyx_v_col->setup->orig_index); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3002, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3002, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_mstate_global->__pyx_slice[0]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[0]); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_mstate_global->__pyx_slice[0]) != (0)) __PYX_ERR(0, 3002, __pyx_L3_error); __Pyx_GIVEREF(__pyx_t_8); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8) != (0)) __PYX_ERR(0, 3002, __pyx_L3_error); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3002, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_10 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_8}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_pandas, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (1*__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_4)) __PYX_ERR(0, 3002, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L7_try_return;
+3003: except (TypeError, ValueError) as e:
__pyx_t_11 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), ((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
if (__pyx_t_11) {
__Pyx_AddTraceback("questdb._client._dataframe_columnar_col_from_pandas", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_8) < 0) __PYX_ERR(0, 3003, __pyx_L5_except_error)
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_8);
__Pyx_INCREF(__pyx_t_6);
__pyx_v_e = __pyx_t_6;
/*try:*/ {
/* … */
/*finally:*/ {
__pyx_L14_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 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_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24);
if ( unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
__Pyx_XGOTREF(__pyx_t_19);
__Pyx_XGOTREF(__pyx_t_20);
__Pyx_XGOTREF(__pyx_t_21);
__Pyx_XGOTREF(__pyx_t_22);
__Pyx_XGOTREF(__pyx_t_23);
__Pyx_XGOTREF(__pyx_t_24);
__pyx_t_11 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
{
__Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
}
__Pyx_XGIVEREF(__pyx_t_22);
__Pyx_XGIVEREF(__pyx_t_23);
__Pyx_XGIVEREF(__pyx_t_24);
__Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24);
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_XGIVEREF(__pyx_t_21);
__Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
__pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
__pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18;
goto __pyx_L5_except_error;
}
}
}
goto __pyx_L5_except_error;
+3004: col_name = df.columns[col.setup.orig_index]
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_columns); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3004, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_5, __pyx_v_col->setup->orig_index, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3004, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_col_name = __pyx_t_9; __pyx_t_9 = 0;
+3005: raise QuestDBError(
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3005, __pyx_L14_error)
__Pyx_GOTREF(__pyx_t_7);
+3006: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3006, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3006, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+3007: f'Bad column {col_name!r}: {e}') from e
__pyx_t_12 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3007, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_14 = __Pyx_PyObject_FormatSimple(__pyx_v_e, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3007, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_15[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_15[1] = __pyx_t_12; __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u_; __pyx_t_15[3] = __pyx_t_14; __pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_15, 4, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_14)); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3007, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_10 = 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_10 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_13, __pyx_t_16}; __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3005, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_9); } __Pyx_Raise(__pyx_t_9, 0, 0, __pyx_v_e); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(0, 3005, __pyx_L14_error) }
3008:
3009:
+3010: cdef void_int _dataframe_columnar_promote_cols(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_columnar_promote_cols(PyObject *__pyx_v_df, struct __pyx_t_7questdb_7_client_dataframe_plan_t *__pyx_v_plan) {
size_t __pyx_v_col_index;
struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col;
struct ArrowArray *__pyx_v_chunk;
PyObject *__pyx_v_arrow_array = 0;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_promote_cols", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_arrow_array);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3011: object df,
3012: dataframe_plan_t* plan) except -1:
3013: # Some column shapes have no contiguous native buffer the columnar wire
3014: # can emit directly. Re-export each as an Arrow array and let the Rust
3015: # Arrow importer classify it — the same route the all-Arrow capsule path
3016: # takes:
3017: # - object-dtype numpy-array cells -> list<double> (ARRAY(DOUBLE));
3018: # - object-dtype Decimal -> DECIMAL (width/scale inferred);
3019: # - datetime64[ns] timestamp fields carrying NaT, whose INT64_MIN null
3020: # sentinel the zero-copy ns->us path would corrupt into a 1677 value.
3021: cdef size_t col_index
3022: cdef col_t* col
3023: cdef ArrowArray* chunk
3024: cdef object arrow_array
+3025: for col_index in range(plan.col_count):
__pyx_t_1 = __pyx_v_plan->col_count;
__pyx_t_2 = __pyx_t_1;
for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_col_index = __pyx_t_3;
+3026: col = &plan.cols.d[col_index]
__pyx_v_col = (&(__pyx_v_plan->cols.d[__pyx_v_col_index]));
+3027: if col.setup.source == col_source_t.col_source_arr_f64_numpyobj:
__pyx_t_4 = (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_arr_f64_numpyobj);
if (__pyx_t_4) {
/* … */
goto __pyx_L5;
}
+3028: _dataframe_require_pyarrow()
__pyx_t_5 = __pyx_f_7questdb_7_client__dataframe_require_pyarrow(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3028, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+3029: arrow_array = _dataframe_columnar_ndarray_col_to_arrow(df, col)
__pyx_t_5 = __pyx_f_7questdb_7_client__dataframe_columnar_ndarray_col_to_arrow(__pyx_v_df, __pyx_v_col); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3029, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_arrow_array, __pyx_t_5); __pyx_t_5 = 0;
+3030: elif col.setup.source == col_source_t.col_source_decimal_pyobj:
__pyx_t_4 = (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_decimal_pyobj);
if (__pyx_t_4) {
/* … */
goto __pyx_L5;
}
+3031: if not _dataframe_try_import_pyarrow():
__pyx_t_4 = __pyx_f_7questdb_7_client__dataframe_try_import_pyarrow(); if (unlikely(__pyx_t_4 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3031, __pyx_L1_error) __pyx_t_6 = (!__pyx_t_4); if (__pyx_t_6) { /* … */ }
+3032: continue
goto __pyx_L3_continue;
+3033: arrow_array = _dataframe_columnar_col_from_pandas(df, col)
__pyx_t_5 = __pyx_f_7questdb_7_client__dataframe_columnar_col_from_pandas(__pyx_v_df, __pyx_v_col); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3033, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_arrow_array, __pyx_t_5); __pyx_t_5 = 0;
+3034: elif (col.setup.target == col_target_t.col_target_column_ts
__pyx_t_4 = (__pyx_v_col->setup->target == __pyx_e_7questdb_7_client_col_target_column_ts);
if (__pyx_t_4) {
} else {
__pyx_t_6 = __pyx_t_4;
goto __pyx_L7_bool_binop_done;
}
/* … */
if (__pyx_t_6) {
/* … */
goto __pyx_L5;
}
+3035: and col.setup.source == col_source_t.col_source_dt64ns_numpy
__pyx_t_4 = (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_dt64ns_numpy);
if (__pyx_t_4) {
} else {
__pyx_t_6 = __pyx_t_4;
goto __pyx_L7_bool_binop_done;
}
+3036: and _dataframe_columnar_has_single_contiguous_chunk(
__pyx_t_4 = __pyx_f_7questdb_7_client__dataframe_columnar_has_single_contiguous_chunk(__pyx_v_col, __pyx_v_plan->row_count);
if (__pyx_t_4) {
} else {
__pyx_t_6 = __pyx_t_4;
goto __pyx_L7_bool_binop_done;
}
3037: col, plan.row_count)
+3038: and _dataframe_columnar_col_has_nat(col, plan.row_count)):
__pyx_t_4 = __pyx_f_7questdb_7_client__dataframe_columnar_col_has_nat(__pyx_v_col, __pyx_v_plan->row_count);
__pyx_t_6 = __pyx_t_4;
__pyx_L7_bool_binop_done:;
+3039: if not _dataframe_try_import_pyarrow():
__pyx_t_6 = __pyx_f_7questdb_7_client__dataframe_try_import_pyarrow(); if (unlikely(__pyx_t_6 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3039, __pyx_L1_error) __pyx_t_4 = (!__pyx_t_6); if (__pyx_t_4) { /* … */ }
+3040: continue
goto __pyx_L3_continue;
+3041: arrow_array = _dataframe_columnar_col_from_pandas(df, col)
__pyx_t_5 = __pyx_f_7questdb_7_client__dataframe_columnar_col_from_pandas(__pyx_v_df, __pyx_v_col); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3041, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_arrow_array, __pyx_t_5); __pyx_t_5 = 0;
3042: else:
+3043: continue
/*else*/ {
goto __pyx_L3_continue;
}
__pyx_L5:;
+3044: chunk = &col.setup.chunks.chunks[0]
__pyx_v_chunk = (&(__pyx_v_col->setup->chunks.chunks[0]));
+3045: if chunk.release != NULL:
__pyx_t_4 = (__pyx_v_chunk->release != NULL);
if (__pyx_t_4) {
/* … */
}
+3046: chunk.release(chunk)
__pyx_v_chunk->release(__pyx_v_chunk);
+3047: memset(chunk, 0, sizeof(ArrowArray))
(void)(memset(__pyx_v_chunk, 0, (sizeof(struct ArrowArray))));
+3048: if col.setup.arrow_schema.release != NULL:
__pyx_t_4 = (__pyx_v_col->setup->arrow_schema.release != NULL);
if (__pyx_t_4) {
/* … */
}
+3049: col.setup.arrow_schema.release(&col.setup.arrow_schema)
__pyx_v_col->setup->arrow_schema.release((&__pyx_v_col->setup->arrow_schema));
+3050: arrow_array._export_to_c(
__pyx_t_7 = __pyx_v_arrow_array;
__Pyx_INCREF(__pyx_t_7);
+3051: <uintptr_t>chunk, <uintptr_t>&col.setup.arrow_schema)
__pyx_t_8 = __Pyx_PyLong_FromSize_t(((uintptr_t)__pyx_v_chunk)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyLong_FromSize_t(((uintptr_t)(&__pyx_v_col->setup->arrow_schema))); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_8, __pyx_t_9}; __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_export_to_c, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+3052: col.setup.source = col_source_t.col_source_arrow_passthrough
__pyx_v_col->setup->source = __pyx_e_7questdb_7_client_col_source_arrow_passthrough;
+3053: col.setup.target = col_target_t.col_target_column_arrow
__pyx_v_col->setup->target = __pyx_e_7questdb_7_client_col_target_column_arrow;
__pyx_L3_continue:;
}
3054:
3055:
+3056: cdef bint _is_pyobj_source(col_source_t source) noexcept nogil:
static int __pyx_f_7questdb_7_client__is_pyobj_source(enum __pyx_t_7questdb_7_client_col_source_t __pyx_v_source) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
3057: return (
+3058: source == col_source_t.col_source_str_pyobj or
switch (__pyx_v_source) {
case __pyx_e_7questdb_7_client_col_source_str_pyobj:
case __pyx_e_7questdb_7_client_col_source_int_pyobj:
/* … */
__pyx_t_1 = 1;
break;
default:
__pyx_t_1 = 0;
break;
}
__pyx_r = __pyx_t_1;
goto __pyx_L0;
+3059: source == col_source_t.col_source_int_pyobj or
case __pyx_e_7questdb_7_client_col_source_float_pyobj:
+3060: source == col_source_t.col_source_float_pyobj or
case __pyx_e_7questdb_7_client_col_source_bool_pyobj:
+3061: source == col_source_t.col_source_bool_pyobj or
case __pyx_e_7questdb_7_client_col_source_uuid_pyobj:
+3062: source == col_source_t.col_source_uuid_pyobj or
case __pyx_e_7questdb_7_client_col_source_ipv4_pyobj:
+3063: source == col_source_t.col_source_ipv4_pyobj or
case __pyx_e_7questdb_7_client_col_source_datetime_pyobj:
+3064: source == col_source_t.col_source_datetime_pyobj or
case __pyx_e_7questdb_7_client_col_source_bytes_pyobj:
3065: source == col_source_t.col_source_bytes_pyobj)
3066:
3067:
+3068: cdef inline void _pyobj_set_validity_bit(uint8_t* bitmap, size_t row) noexcept nogil:
static CYTHON_INLINE void __pyx_f_7questdb_7_client__pyobj_set_validity_bit(uint8_t *__pyx_v_bitmap, size_t __pyx_v_row) {
/* … */
/* function exit code */
}
+3069: bitmap[row >> 3] |= <uint8_t>(1 << (row & 7))
__pyx_t_1 = (__pyx_v_row >> 3); (__pyx_v_bitmap[__pyx_t_1]) = ((__pyx_v_bitmap[__pyx_t_1]) | ((uint8_t)(1 << (__pyx_v_row & 7))));
3070:
3071:
+3072: cdef pyobj_built_t* _dataframe_columnar_build_str_pyobj(
static struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_f_7questdb_7_client__dataframe_columnar_build_str_pyobj(struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, size_t __pyx_v_row_count, PyObject *__pyx_v_df_col_name) {
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_v_b;
PyObject **__pyx_v_access;
PyObject *__pyx_v_cell;
size_t __pyx_v_i;
Py_ssize_t __pyx_v_utf8_len;
char const *__pyx_v_utf8_buf;
size_t __pyx_v_validity_bytes;
size_t __pyx_v_bytes_cap;
uint8_t *__pyx_v_new_bytes;
size_t __pyx_v_bytes_used;
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_build_str_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3073: col_t* col,
3074: size_t row_count,
3075: object df_col_name) except NULL:
3076: """
3077: Walk a PyObject column once and produce Arrow-Utf8-shaped buffers
3078: (int32 offsets + uint8 bytes + LSB-packed validity). Encoding uses
3079: CPython's `PyUnicode_AsUTF8AndSize`, which rejects lone surrogates,
3080: so every emitted buffer is valid UTF-8.
3081: """
+3082: cdef pyobj_built_t* b = <pyobj_built_t*>calloc(1, sizeof(pyobj_built_t))
__pyx_v_b = ((struct __pyx_t_7questdb_7_client_pyobj_built_t *)calloc(1, (sizeof(struct __pyx_t_7questdb_7_client_pyobj_built_t))));
+3083: if b == NULL:
__pyx_t_1 = (__pyx_v_b == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3084: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3084, __pyx_L1_error)
+3085: b.row_count = row_count
__pyx_v_b->row_count = __pyx_v_row_count;
3086:
+3087: cdef PyObject** access = <PyObject**>col.setup.chunks.chunks[0].buffers[1]
__pyx_v_access = ((PyObject **)((__pyx_v_col->setup->chunks.chunks[0]).buffers[1]));
3088: cdef PyObject* cell
3089: cdef size_t i
3090: cdef Py_ssize_t utf8_len
3091: cdef const char* utf8_buf
+3092: cdef size_t validity_bytes = (row_count + 7) // 8
__pyx_v_validity_bytes = ((__pyx_v_row_count + 7) / 8);
+3093: cdef size_t bytes_cap = 16
__pyx_v_bytes_cap = 16;
3094: cdef uint8_t* new_bytes
+3095: cdef size_t bytes_used = 0
__pyx_v_bytes_used = 0;
3096:
+3097: 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_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;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
__Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__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_L9_try_end:;
}
+3098: b.str_offsets = <int32_t*>calloc(row_count + 1, sizeof(int32_t))
__pyx_v_b->str_offsets = ((int32_t *)calloc((__pyx_v_row_count + 1), (sizeof(int32_t))));
+3099: if b.str_offsets == NULL:
__pyx_t_1 = (__pyx_v_b->str_offsets == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3100: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3100, __pyx_L4_error)
+3101: if validity_bytes > 0:
__pyx_t_1 = (__pyx_v_validity_bytes > 0);
if (__pyx_t_1) {
/* … */
}
+3102: b.validity = <uint8_t*>calloc(validity_bytes, sizeof(uint8_t))
__pyx_v_b->validity = ((uint8_t *)calloc(__pyx_v_validity_bytes, (sizeof(uint8_t))));
+3103: if b.validity == NULL:
__pyx_t_1 = (__pyx_v_b->validity == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3104: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3104, __pyx_L4_error)
+3105: b.str_bytes = <uint8_t*>malloc(bytes_cap)
__pyx_v_b->str_bytes = ((uint8_t *)malloc(__pyx_v_bytes_cap));
+3106: if b.str_bytes == NULL:
__pyx_t_1 = (__pyx_v_b->str_bytes == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3107: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3107, __pyx_L4_error)
3108:
+3109: for i in range(row_count):
__pyx_t_5 = __pyx_v_row_count;
__pyx_t_6 = __pyx_t_5;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_i = __pyx_t_7;
+3110: cell = access[i]
__pyx_v_cell = (__pyx_v_access[__pyx_v_i]);
+3111: if PyUnicode_CheckExact(cell):
__pyx_t_1 = PyUnicode_CheckExact(__pyx_v_cell);
if (__pyx_t_1) {
/* … */
goto __pyx_L16;
}
+3112: utf8_buf = PyUnicode_AsUTF8AndSize(cell, &utf8_len)
__pyx_t_8 = PyUnicode_AsUTF8AndSize(__pyx_v_cell, (&__pyx_v_utf8_len)); if (unlikely(__pyx_t_8 == ((void *)NULL))) __PYX_ERR(0, 3112, __pyx_L4_error)
__pyx_v_utf8_buf = __pyx_t_8;
+3113: if bytes_used + <size_t>utf8_len > <size_t>2_147_483_647:
__pyx_t_1 = ((__pyx_v_bytes_used + ((size_t)__pyx_v_utf8_len)) > ((size_t)0x7FFFFFFF));
if (unlikely(__pyx_t_1)) {
/* … */
}
+3114: raise QuestDBError(
__pyx_t_10 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3114, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_11);
+3115: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3115, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3115, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+3116: f'Bad column {df_col_name!r}: column total UTF-8 '
__pyx_t_12 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_df_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3116, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_14[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_14[1] = __pyx_t_12; __pyx_t_14[2] = __pyx_mstate_global->__pyx_kp_u_column_total_UTF_8_bytes_exceed; __pyx_t_15 = __Pyx_PyUnicode_Join(__pyx_t_14, 3, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12) + 83, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3116, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_16 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11); assert(__pyx_t_10); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_11, __pyx__function); __pyx_t_16 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_10, __pyx_t_13, __pyx_t_15}; __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_16, (3-__pyx_t_16) | (__pyx_t_16*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3114, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); } __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(0, 3114, __pyx_L4_error)
3117: 'bytes exceeds the QWP wire varchar offset table '
3118: 'limit (2 GiB).')
+3119: while bytes_used + <size_t>utf8_len > bytes_cap:
while (1) {
__pyx_t_1 = ((__pyx_v_bytes_used + ((size_t)__pyx_v_utf8_len)) > __pyx_v_bytes_cap);
if (!__pyx_t_1) break;
+3120: bytes_cap *= 2
__pyx_v_bytes_cap = (__pyx_v_bytes_cap * 2);
+3121: new_bytes = <uint8_t*>realloc(b.str_bytes, bytes_cap)
__pyx_v_new_bytes = ((uint8_t *)realloc(__pyx_v_b->str_bytes, __pyx_v_bytes_cap));
+3122: if new_bytes == NULL:
__pyx_t_1 = (__pyx_v_new_bytes == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3123: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3123, __pyx_L4_error)
+3124: b.str_bytes = new_bytes
__pyx_v_b->str_bytes = __pyx_v_new_bytes;
}
+3125: if utf8_len > 0:
__pyx_t_1 = (__pyx_v_utf8_len > 0);
if (__pyx_t_1) {
/* … */
}
+3126: memcpy(b.str_bytes + bytes_used, utf8_buf, <size_t>utf8_len)
(void)(memcpy((__pyx_v_b->str_bytes + __pyx_v_bytes_used), __pyx_v_utf8_buf, ((size_t)__pyx_v_utf8_len)));
+3127: bytes_used += <size_t>utf8_len
__pyx_v_bytes_used = (__pyx_v_bytes_used + ((size_t)__pyx_v_utf8_len));
+3128: b.str_offsets[i + 1] = <int32_t>bytes_used
(__pyx_v_b->str_offsets[(__pyx_v_i + 1)]) = ((int32_t)__pyx_v_bytes_used);
+3129: if b.validity != NULL:
__pyx_t_1 = (__pyx_v_b->validity != NULL);
if (__pyx_t_1) {
/* … */
}
+3130: _pyobj_set_validity_bit(b.validity, i)
__pyx_f_7questdb_7_client__pyobj_set_validity_bit(__pyx_v_b->validity, __pyx_v_i);
+3131: elif _dataframe_is_null_pyobj(cell):
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_is_null_pyobj(__pyx_v_cell);
if (likely(__pyx_t_1)) {
/* … */
goto __pyx_L16;
}
+3132: b.str_offsets[i + 1] = <int32_t>bytes_used
(__pyx_v_b->str_offsets[(__pyx_v_i + 1)]) = ((int32_t)__pyx_v_bytes_used);
+3133: b.has_nulls = True
__pyx_v_b->has_nulls = 1;
3134: else:
+3135: raise QuestDBError(
/*else*/ {
__pyx_t_11 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3135, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_15);
+3136: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3136, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3136, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+3137: f'Bad column {df_col_name!r} at row {i}: expected str, '
__pyx_t_13 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_df_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3137, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyUnicode_From_size_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3137, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); /* … */ __pyx_t_17 = __Pyx_PyUnicode_Join(__pyx_t_19, 7, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13) + 8 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12) + 20 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_18) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_18)); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 3137, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_16 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_15))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_15); assert(__pyx_t_11); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_15, __pyx__function); __pyx_t_16 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_t_10, __pyx_t_17}; __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_16, (3-__pyx_t_16) | (__pyx_t_16*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3135, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); } __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(0, 3135, __pyx_L4_error) } __pyx_L16:; }
+3138: f'got {_fqn(type(<object>cell))}.')
__pyx_t_17 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_cell))))); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 3138, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_18 = __Pyx_PyUnicode_Unicode(__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3138, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_19[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_19[1] = __pyx_t_13; __pyx_t_19[2] = __pyx_mstate_global->__pyx_kp_u_at_row; __pyx_t_19[3] = __pyx_t_12; __pyx_t_19[4] = __pyx_mstate_global->__pyx_kp_u_expected_str_got; __pyx_t_19[5] = __pyx_t_18; __pyx_t_19[6] = __pyx_mstate_global->__pyx_kp_u__2;
3139:
+3140: b.str_bytes_len = bytes_used
__pyx_v_b->str_bytes_len = __pyx_v_bytes_used;
3141:
3142: # If the column turned out to be all-valid, drop the bitmap so
3143: # the FFI takes the no-validity hot path.
+3144: if not b.has_nulls and b.validity != NULL:
__pyx_t_20 = (!__pyx_v_b->has_nulls);
if (__pyx_t_20) {
} else {
__pyx_t_1 = __pyx_t_20;
goto __pyx_L24_bool_binop_done;
}
__pyx_t_20 = (__pyx_v_b->validity != NULL);
__pyx_t_1 = __pyx_t_20;
__pyx_L24_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+3145: free(b.validity)
free(__pyx_v_b->validity);
+3146: b.validity = NULL
__pyx_v_b->validity = NULL;
+3147: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._dataframe_columnar_build_str_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_15, &__pyx_t_17) < 0) __PYX_ERR(0, 3147, __pyx_L6_except_error)
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_17);
+3148: pyobj_built_free(b)
__pyx_f_7questdb_7_client_pyobj_built_free(__pyx_v_b);
+3149: raise
__Pyx_GIVEREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ErrRestoreWithState(__pyx_t_9, __pyx_t_15, __pyx_t_17); __pyx_t_9 = 0; __pyx_t_15 = 0; __pyx_t_17 = 0; __PYX_ERR(0, 3149, __pyx_L6_except_error) }
3150:
+3151: return b
__pyx_r = __pyx_v_b; goto __pyx_L0;
3152:
3153:
+3154: cdef pyobj_built_t* _dataframe_columnar_build_int_pyobj(
static struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_f_7questdb_7_client__dataframe_columnar_build_int_pyobj(struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, size_t __pyx_v_row_count, PyObject *__pyx_v_df_col_name) {
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_v_b;
PyObject **__pyx_v_access;
PyObject *__pyx_v_cell;
int64_t *__pyx_v_values;
size_t __pyx_v_validity_bytes;
size_t __pyx_v_i;
int64_t __pyx_v_value;
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__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_17);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_build_int_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3155: col_t* col,
3156: size_t row_count,
3157: object df_col_name) except NULL:
3158: """
3159: Walk a PyObject int column once and produce a contiguous int64
3160: buffer + LSB-packed validity bitmap. Null cells leave the int64
3161: slot at 0 with the validity bit cleared.
3162:
3163: Null detection: ``None``, ``pd.NA``, and ``float('nan')`` all count
3164: as null — the NaN-as-null rule matches the row-path behaviour
3165: (`_dataframe_is_null_pyobj` in dataframe.pxi). A non-NaN float in
3166: an int-sniffed column raises ``QuestDBError`` with the row index;
3167: we accept the asymmetry because column-wide sniff has already
3168: locked the source type from the first non-null cell.
3169: """
+3170: cdef pyobj_built_t* b = <pyobj_built_t*>calloc(1, sizeof(pyobj_built_t))
__pyx_v_b = ((struct __pyx_t_7questdb_7_client_pyobj_built_t *)calloc(1, (sizeof(struct __pyx_t_7questdb_7_client_pyobj_built_t))));
+3171: if b == NULL:
__pyx_t_1 = (__pyx_v_b == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3172: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3172, __pyx_L1_error)
+3173: b.row_count = row_count
__pyx_v_b->row_count = __pyx_v_row_count;
3174:
+3175: cdef PyObject** access = <PyObject**>col.setup.chunks.chunks[0].buffers[1]
__pyx_v_access = ((PyObject **)((__pyx_v_col->setup->chunks.chunks[0]).buffers[1]));
3176: cdef PyObject* cell
+3177: cdef int64_t* values = NULL
__pyx_v_values = NULL;
+3178: cdef size_t validity_bytes = (row_count + 7) // 8
__pyx_v_validity_bytes = ((__pyx_v_row_count + 7) / 8);
3179: cdef size_t i
3180: cdef int64_t value
3181:
+3182: 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_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;
__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_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
/* … */
__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_L9_try_end:;
}
+3183: values = <int64_t*>calloc(row_count if row_count > 0 else 1,
__pyx_t_1 = (__pyx_v_row_count > 0);
if (__pyx_t_1) {
__pyx_t_5 = __pyx_v_row_count;
} else {
__pyx_t_5 = 1;
}
/* … */
__pyx_v_values = ((int64_t *)calloc(__pyx_t_5, (sizeof(int64_t))));
3184: sizeof(int64_t))
+3185: if values == NULL:
__pyx_t_1 = (__pyx_v_values == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3186: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3186, __pyx_L4_error)
+3187: b.data = <void*>values
__pyx_v_b->data = ((void *)__pyx_v_values);
+3188: if validity_bytes > 0:
__pyx_t_1 = (__pyx_v_validity_bytes > 0);
if (__pyx_t_1) {
/* … */
}
+3189: b.validity = <uint8_t*>calloc(validity_bytes, sizeof(uint8_t))
__pyx_v_b->validity = ((uint8_t *)calloc(__pyx_v_validity_bytes, (sizeof(uint8_t))));
+3190: if b.validity == NULL:
__pyx_t_1 = (__pyx_v_b->validity == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3191: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3191, __pyx_L4_error)
+3192: for i in range(row_count):
__pyx_t_5 = __pyx_v_row_count;
__pyx_t_6 = __pyx_t_5;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_i = __pyx_t_7;
+3193: cell = access[i]
__pyx_v_cell = (__pyx_v_access[__pyx_v_i]);
3194: # PyBool_Check goes BEFORE PyLong_CheckExact because Python
3195: # bools are subclasses of int and PyLong_CheckExact returns
3196: # false for them; treat them as int (matches row-path).
+3197: if PyBool_Check(cell):
__pyx_t_1 = PyBool_Check(__pyx_v_cell);
if (__pyx_t_1) {
/* … */
goto __pyx_L15;
}
+3198: values[i] = 1 if cell == <PyObject*>True else 0
__pyx_t_1 = (__pyx_v_cell == ((PyObject *)1));
if (__pyx_t_1) {
__pyx_t_8 = 1;
} else {
__pyx_t_8 = 0;
}
(__pyx_v_values[__pyx_v_i]) = __pyx_t_8;
+3199: if b.validity != NULL:
__pyx_t_1 = (__pyx_v_b->validity != NULL);
if (__pyx_t_1) {
/* … */
}
+3200: _pyobj_set_validity_bit(b.validity, i)
__pyx_f_7questdb_7_client__pyobj_set_validity_bit(__pyx_v_b->validity, __pyx_v_i);
+3201: elif PyLong_CheckExact(cell):
__pyx_t_1 = PyLong_CheckExact(__pyx_v_cell);
if (__pyx_t_1) {
/* … */
goto __pyx_L15;
}
+3202: value = PyLong_AsLongLong(cell)
__pyx_t_9 = PyLong_AsLongLong(__pyx_v_cell); if (unlikely(__pyx_t_9 == ((PY_LONG_LONG)-1LL) && PyErr_Occurred())) __PYX_ERR(0, 3202, __pyx_L4_error) __pyx_v_value = __pyx_t_9;
+3203: values[i] = value
(__pyx_v_values[__pyx_v_i]) = __pyx_v_value;
+3204: if b.validity != NULL:
__pyx_t_1 = (__pyx_v_b->validity != NULL);
if (__pyx_t_1) {
/* … */
}
+3205: _pyobj_set_validity_bit(b.validity, i)
__pyx_f_7questdb_7_client__pyobj_set_validity_bit(__pyx_v_b->validity, __pyx_v_i);
+3206: elif _dataframe_is_null_pyobj(cell):
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_is_null_pyobj(__pyx_v_cell);
if (likely(__pyx_t_1)) {
/* … */
goto __pyx_L15;
}
+3207: b.has_nulls = True
__pyx_v_b->has_nulls = 1;
3208: else:
+3209: raise QuestDBError(
/*else*/ {
__pyx_t_11 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3209, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_12);
+3210: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3210, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3210, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+3211: f'Bad column {df_col_name!r} at row {i}: expected int, '
__pyx_t_13 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_df_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3211, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_15 = __Pyx_PyUnicode_From_size_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3211, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_15); /* … */ __pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_18, 7, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13) + 8 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15) + 20 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_17)); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3211, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_19 = 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_19 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_t_14, __pyx_t_16}; __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_12, __pyx_callargs+__pyx_t_19, (3-__pyx_t_19) | (__pyx_t_19*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3209, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_10); } __Pyx_Raise(__pyx_t_10, 0, 0, 0); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __PYX_ERR(0, 3209, __pyx_L4_error) } __pyx_L15:; }
+3212: f'got {_fqn(type(<object>cell))}.')
__pyx_t_16 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_cell))))); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3212, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = __Pyx_PyUnicode_Unicode(__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 3212, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_18[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_18[1] = __pyx_t_13; __pyx_t_18[2] = __pyx_mstate_global->__pyx_kp_u_at_row; __pyx_t_18[3] = __pyx_t_15; __pyx_t_18[4] = __pyx_mstate_global->__pyx_kp_u_expected_int_got; __pyx_t_18[5] = __pyx_t_17; __pyx_t_18[6] = __pyx_mstate_global->__pyx_kp_u__2;
3213:
+3214: if not b.has_nulls and b.validity != NULL:
__pyx_t_20 = (!__pyx_v_b->has_nulls);
if (__pyx_t_20) {
} else {
__pyx_t_1 = __pyx_t_20;
goto __pyx_L19_bool_binop_done;
}
__pyx_t_20 = (__pyx_v_b->validity != NULL);
__pyx_t_1 = __pyx_t_20;
__pyx_L19_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+3215: free(b.validity)
free(__pyx_v_b->validity);
+3216: b.validity = NULL
__pyx_v_b->validity = NULL;
+3217: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._dataframe_columnar_build_int_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_12, &__pyx_t_16) < 0) __PYX_ERR(0, 3217, __pyx_L6_except_error)
__Pyx_XGOTREF(__pyx_t_10);
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_16);
+3218: pyobj_built_free(b)
__pyx_f_7questdb_7_client_pyobj_built_free(__pyx_v_b);
+3219: raise
__Pyx_GIVEREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ErrRestoreWithState(__pyx_t_10, __pyx_t_12, __pyx_t_16); __pyx_t_10 = 0; __pyx_t_12 = 0; __pyx_t_16 = 0; __PYX_ERR(0, 3219, __pyx_L6_except_error) }
3220:
+3221: return b
__pyx_r = __pyx_v_b; goto __pyx_L0;
3222:
3223:
+3224: cdef pyobj_built_t* _dataframe_columnar_build_float_pyobj(
static struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_f_7questdb_7_client__dataframe_columnar_build_float_pyobj(struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, size_t __pyx_v_row_count, PyObject *__pyx_v_df_col_name) {
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_v_b;
PyObject **__pyx_v_access;
PyObject *__pyx_v_cell;
double *__pyx_v_values;
size_t __pyx_v_validity_bytes;
size_t __pyx_v_i;
double __pyx_v_value;
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__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_17);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_build_float_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3225: col_t* col,
3226: size_t row_count,
3227: object df_col_name) except NULL:
3228: """
3229: Walk a PyObject float column once and produce a contiguous double
3230: buffer + LSB-packed validity bitmap.
3231: """
+3232: cdef pyobj_built_t* b = <pyobj_built_t*>calloc(1, sizeof(pyobj_built_t))
__pyx_v_b = ((struct __pyx_t_7questdb_7_client_pyobj_built_t *)calloc(1, (sizeof(struct __pyx_t_7questdb_7_client_pyobj_built_t))));
+3233: if b == NULL:
__pyx_t_1 = (__pyx_v_b == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3234: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3234, __pyx_L1_error)
+3235: b.row_count = row_count
__pyx_v_b->row_count = __pyx_v_row_count;
3236:
+3237: cdef PyObject** access = <PyObject**>col.setup.chunks.chunks[0].buffers[1]
__pyx_v_access = ((PyObject **)((__pyx_v_col->setup->chunks.chunks[0]).buffers[1]));
3238: cdef PyObject* cell
+3239: cdef double* values = NULL
__pyx_v_values = NULL;
+3240: cdef size_t validity_bytes = (row_count + 7) // 8
__pyx_v_validity_bytes = ((__pyx_v_row_count + 7) / 8);
3241: cdef size_t i
3242: cdef double value
3243:
+3244: 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_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;
__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_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
/* … */
__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_L9_try_end:;
}
+3245: values = <double*>calloc(row_count if row_count > 0 else 1,
__pyx_t_1 = (__pyx_v_row_count > 0);
if (__pyx_t_1) {
__pyx_t_5 = __pyx_v_row_count;
} else {
__pyx_t_5 = 1;
}
/* … */
__pyx_v_values = ((double *)calloc(__pyx_t_5, (sizeof(double))));
3246: sizeof(double))
+3247: if values == NULL:
__pyx_t_1 = (__pyx_v_values == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3248: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3248, __pyx_L4_error)
+3249: b.data = <void*>values
__pyx_v_b->data = ((void *)__pyx_v_values);
+3250: if validity_bytes > 0:
__pyx_t_1 = (__pyx_v_validity_bytes > 0);
if (__pyx_t_1) {
/* … */
}
+3251: b.validity = <uint8_t*>calloc(validity_bytes, sizeof(uint8_t))
__pyx_v_b->validity = ((uint8_t *)calloc(__pyx_v_validity_bytes, (sizeof(uint8_t))));
+3252: if b.validity == NULL:
__pyx_t_1 = (__pyx_v_b->validity == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3253: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3253, __pyx_L4_error)
+3254: for i in range(row_count):
__pyx_t_5 = __pyx_v_row_count;
__pyx_t_6 = __pyx_t_5;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_i = __pyx_t_7;
+3255: cell = access[i]
__pyx_v_cell = (__pyx_v_access[__pyx_v_i]);
+3256: if PyFloat_CheckExact(cell):
__pyx_t_1 = PyFloat_CheckExact(__pyx_v_cell);
if (__pyx_t_1) {
/* … */
goto __pyx_L15;
}
+3257: value = PyFloat_AS_DOUBLE(cell)
__pyx_v_value = PyFloat_AS_DOUBLE(__pyx_v_cell);
+3258: if isnan(value):
__pyx_t_1 = isnan(__pyx_v_value);
if (__pyx_t_1) {
/* … */
goto __pyx_L16;
}
3259: # pandas NaN-as-null convention matches the row-path.
+3260: b.has_nulls = True
__pyx_v_b->has_nulls = 1;
3261: else:
+3262: values[i] = value
/*else*/ {
(__pyx_v_values[__pyx_v_i]) = __pyx_v_value;
+3263: if b.validity != NULL:
__pyx_t_1 = (__pyx_v_b->validity != NULL);
if (__pyx_t_1) {
/* … */
}
}
__pyx_L16:;
+3264: _pyobj_set_validity_bit(b.validity, i)
__pyx_f_7questdb_7_client__pyobj_set_validity_bit(__pyx_v_b->validity, __pyx_v_i);
+3265: elif PyLong_CheckExact(cell) or PyBool_Check(cell):
__pyx_t_8 = PyLong_CheckExact(__pyx_v_cell); if (!__pyx_t_8) { } else { __pyx_t_1 = __pyx_t_8; goto __pyx_L18_bool_binop_done; } __pyx_t_8 = PyBool_Check(__pyx_v_cell); __pyx_t_1 = __pyx_t_8; __pyx_L18_bool_binop_done:; if (__pyx_t_1) { /* … */ goto __pyx_L15; }
3266: # Accept widening of int / bool to float, matching how
3267: # Python implicitly converts when you do float(x).
+3268: values[i] = PyFloat_AsDouble(cell)
__pyx_t_9 = PyFloat_AsDouble(__pyx_v_cell); if (unlikely(__PYX_CHECK_FLOAT_EXCEPTION(__pyx_t_9, ((double)(-1.0))) && PyErr_Occurred())) __PYX_ERR(0, 3268, __pyx_L4_error) (__pyx_v_values[__pyx_v_i]) = __pyx_t_9;
+3269: if b.validity != NULL:
__pyx_t_1 = (__pyx_v_b->validity != NULL);
if (__pyx_t_1) {
/* … */
}
+3270: _pyobj_set_validity_bit(b.validity, i)
__pyx_f_7questdb_7_client__pyobj_set_validity_bit(__pyx_v_b->validity, __pyx_v_i);
+3271: elif _dataframe_is_null_pyobj(cell):
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_is_null_pyobj(__pyx_v_cell);
if (likely(__pyx_t_1)) {
/* … */
goto __pyx_L15;
}
+3272: b.has_nulls = True
__pyx_v_b->has_nulls = 1;
3273: else:
+3274: raise QuestDBError(
/*else*/ {
__pyx_t_11 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3274, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_12);
+3275: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3275, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3275, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+3276: f'Bad column {df_col_name!r} at row {i}: expected float, '
__pyx_t_13 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_df_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3276, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_15 = __Pyx_PyUnicode_From_size_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3276, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_15); /* … */ __pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_18, 7, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13) + 8 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15) + 22 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_17)); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3276, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_19 = 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_19 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_t_14, __pyx_t_16}; __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_12, __pyx_callargs+__pyx_t_19, (3-__pyx_t_19) | (__pyx_t_19*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3274, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_10); } __Pyx_Raise(__pyx_t_10, 0, 0, 0); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __PYX_ERR(0, 3274, __pyx_L4_error) } __pyx_L15:; }
+3277: f'got {_fqn(type(<object>cell))}.')
__pyx_t_16 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_cell))))); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3277, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = __Pyx_PyUnicode_Unicode(__pyx_t_16); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 3277, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_18[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_18[1] = __pyx_t_13; __pyx_t_18[2] = __pyx_mstate_global->__pyx_kp_u_at_row; __pyx_t_18[3] = __pyx_t_15; __pyx_t_18[4] = __pyx_mstate_global->__pyx_kp_u_expected_float_got; __pyx_t_18[5] = __pyx_t_17; __pyx_t_18[6] = __pyx_mstate_global->__pyx_kp_u__2;
3278:
+3279: if not b.has_nulls and b.validity != NULL:
__pyx_t_8 = (!__pyx_v_b->has_nulls);
if (__pyx_t_8) {
} else {
__pyx_t_1 = __pyx_t_8;
goto __pyx_L22_bool_binop_done;
}
__pyx_t_8 = (__pyx_v_b->validity != NULL);
__pyx_t_1 = __pyx_t_8;
__pyx_L22_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+3280: free(b.validity)
free(__pyx_v_b->validity);
+3281: b.validity = NULL
__pyx_v_b->validity = NULL;
+3282: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._dataframe_columnar_build_float_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_12, &__pyx_t_16) < 0) __PYX_ERR(0, 3282, __pyx_L6_except_error)
__Pyx_XGOTREF(__pyx_t_10);
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_16);
+3283: pyobj_built_free(b)
__pyx_f_7questdb_7_client_pyobj_built_free(__pyx_v_b);
+3284: raise
__Pyx_GIVEREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_12); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ErrRestoreWithState(__pyx_t_10, __pyx_t_12, __pyx_t_16); __pyx_t_10 = 0; __pyx_t_12 = 0; __pyx_t_16 = 0; __PYX_ERR(0, 3284, __pyx_L6_except_error) }
3285:
+3286: return b
__pyx_r = __pyx_v_b; goto __pyx_L0;
3287:
3288:
+3289: cdef pyobj_built_t* _dataframe_columnar_build_bool_pyobj(
static struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_f_7questdb_7_client__dataframe_columnar_build_bool_pyobj(struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, size_t __pyx_v_row_count, PyObject *__pyx_v_df_col_name) {
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_v_b;
PyObject **__pyx_v_access;
PyObject *__pyx_v_cell;
uint8_t *__pyx_v_bits;
size_t __pyx_v_bytes;
size_t __pyx_v_i;
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_build_bool_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3290: col_t* col,
3291: size_t row_count,
3292: object df_col_name) except NULL:
3293: """
3294: Walk a PyObject bool column once and pack the values into an
3295: Arrow LSB-first bitmap (one bit per row). Null cells are rejected —
3296: matches the row-path behaviour (QuestDB BOOLEAN has no null
3297: representation at the row level).
3298: """
+3299: cdef pyobj_built_t* b = <pyobj_built_t*>calloc(1, sizeof(pyobj_built_t))
__pyx_v_b = ((struct __pyx_t_7questdb_7_client_pyobj_built_t *)calloc(1, (sizeof(struct __pyx_t_7questdb_7_client_pyobj_built_t))));
+3300: if b == NULL:
__pyx_t_1 = (__pyx_v_b == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3301: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3301, __pyx_L1_error)
+3302: b.row_count = row_count
__pyx_v_b->row_count = __pyx_v_row_count;
3303:
+3304: cdef PyObject** access = <PyObject**>col.setup.chunks.chunks[0].buffers[1]
__pyx_v_access = ((PyObject **)((__pyx_v_col->setup->chunks.chunks[0]).buffers[1]));
3305: cdef PyObject* cell
+3306: cdef uint8_t* bits = NULL
__pyx_v_bits = NULL;
+3307: cdef size_t bytes = (row_count + 7) // 8
__pyx_v_bytes = ((__pyx_v_row_count + 7) / 8);
3308: cdef size_t i
3309:
+3310: 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_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;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__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_L9_try_end:;
}
+3311: if bytes == 0:
__pyx_t_1 = (__pyx_v_bytes == 0);
if (__pyx_t_1) {
/* … */
}
+3312: bytes = 1
__pyx_v_bytes = 1;
+3313: bits = <uint8_t*>calloc(bytes, sizeof(uint8_t))
__pyx_v_bits = ((uint8_t *)calloc(__pyx_v_bytes, (sizeof(uint8_t))));
+3314: if bits == NULL:
__pyx_t_1 = (__pyx_v_bits == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3315: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3315, __pyx_L4_error)
+3316: b.data = <void*>bits
__pyx_v_b->data = ((void *)__pyx_v_bits);
+3317: for i in range(row_count):
__pyx_t_5 = __pyx_v_row_count;
__pyx_t_6 = __pyx_t_5;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_i = __pyx_t_7;
+3318: cell = access[i]
__pyx_v_cell = (__pyx_v_access[__pyx_v_i]);
+3319: if PyBool_Check(cell):
__pyx_t_1 = PyBool_Check(__pyx_v_cell);
if (likely(__pyx_t_1)) {
/* … */
goto __pyx_L14;
}
+3320: if cell == <PyObject*>True:
__pyx_t_1 = (__pyx_v_cell == ((PyObject *)1));
if (__pyx_t_1) {
/* … */
}
+3321: bits[i >> 3] |= <uint8_t>(1 << (i & 7))
__pyx_t_8 = (__pyx_v_i >> 3);
(__pyx_v_bits[__pyx_t_8]) = ((__pyx_v_bits[__pyx_t_8]) | ((uint8_t)(1 << (__pyx_v_i & 7))));
+3322: elif _dataframe_is_null_pyobj(cell):
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_is_null_pyobj(__pyx_v_cell);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3323: raise QuestDBError(
__pyx_t_10 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3323, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_11);
+3324: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3324, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3324, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+3325: f'Bad column {df_col_name!r} at row {i}: cannot insert '
__pyx_t_12 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_df_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3325, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_14 = __Pyx_PyUnicode_From_size_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3325, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_15[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_15[1] = __pyx_t_12; __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u_at_row; __pyx_t_15[3] = __pyx_t_14; __pyx_t_15[4] = __pyx_mstate_global->__pyx_kp_u_cannot_insert_null_into_a_boole; __pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_15, 5, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12) + 8 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14) + 43, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12)); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3325, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11); assert(__pyx_t_10); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_11, __pyx__function); __pyx_t_8 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_10, __pyx_t_13, __pyx_t_16}; __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3323, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); } __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(0, 3323, __pyx_L4_error)
3326: 'null into a boolean column.')
3327: else:
+3328: raise QuestDBError(
/*else*/ {
__pyx_t_11 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3328, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_16);
+3329: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3329, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3329, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+3330: f'Bad column {df_col_name!r} at row {i}: expected bool, '
__pyx_t_13 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_df_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3330, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_14 = __Pyx_PyUnicode_From_size_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3330, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_14); /* … */ __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_18, 7, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13) + 8 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14) + 21 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_17)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3330, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_16))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_16); assert(__pyx_t_11); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_16); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_16, __pyx__function); __pyx_t_8 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_t_10, __pyx_t_12}; __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_16, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3328, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); } __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(0, 3328, __pyx_L4_error) } __pyx_L14:; }
+3331: f'got {_fqn(type(<object>cell))}.')
__pyx_t_12 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_cell))))); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3331, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_17 = __Pyx_PyUnicode_Unicode(__pyx_t_12); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 3331, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_18[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_18[1] = __pyx_t_13; __pyx_t_18[2] = __pyx_mstate_global->__pyx_kp_u_at_row; __pyx_t_18[3] = __pyx_t_14; __pyx_t_18[4] = __pyx_mstate_global->__pyx_kp_u_expected_bool_got; __pyx_t_18[5] = __pyx_t_17; __pyx_t_18[6] = __pyx_mstate_global->__pyx_kp_u__2;
+3332: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._dataframe_columnar_build_bool_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_16, &__pyx_t_12) < 0) __PYX_ERR(0, 3332, __pyx_L6_except_error)
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_12);
+3333: pyobj_built_free(b)
__pyx_f_7questdb_7_client_pyobj_built_free(__pyx_v_b);
+3334: raise
__Pyx_GIVEREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ErrRestoreWithState(__pyx_t_9, __pyx_t_16, __pyx_t_12); __pyx_t_9 = 0; __pyx_t_16 = 0; __pyx_t_12 = 0; __PYX_ERR(0, 3334, __pyx_L6_except_error) }
3335:
+3336: return b
__pyx_r = __pyx_v_b; goto __pyx_L0;
3337:
3338:
+3339: cdef pyobj_built_t* _dataframe_columnar_build_uuid_pyobj(
static struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_f_7questdb_7_client__dataframe_columnar_build_uuid_pyobj(struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, size_t __pyx_v_row_count, PyObject *__pyx_v_df_col_name) {
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_v_b;
PyObject **__pyx_v_access;
PyObject *__pyx_v_cell;
uint8_t *__pyx_v_buf;
size_t __pyx_v_buf_bytes;
size_t __pyx_v_validity_bytes;
size_t __pyx_v_i;
PyObject *__pyx_v_le_bytes = 0;
PyObject *__pyx_v_uuid_cls = 0;
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_11);
__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_AddTraceback("questdb._client._dataframe_columnar_build_uuid_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_le_bytes);
__Pyx_XDECREF(__pyx_v_uuid_cls);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3340: col_t* col,
3341: size_t row_count,
3342: object df_col_name) except NULL:
+3343: cdef pyobj_built_t* b = <pyobj_built_t*>calloc(1, sizeof(pyobj_built_t))
__pyx_v_b = ((struct __pyx_t_7questdb_7_client_pyobj_built_t *)calloc(1, (sizeof(struct __pyx_t_7questdb_7_client_pyobj_built_t))));
+3344: if b == NULL:
__pyx_t_1 = (__pyx_v_b == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3345: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3345, __pyx_L1_error)
+3346: b.row_count = row_count
__pyx_v_b->row_count = __pyx_v_row_count;
3347:
+3348: cdef PyObject** access = <PyObject**>col.setup.chunks.chunks[0].buffers[1]
__pyx_v_access = ((PyObject **)((__pyx_v_col->setup->chunks.chunks[0]).buffers[1]));
3349: cdef PyObject* cell
+3350: cdef uint8_t* buf = NULL
__pyx_v_buf = NULL;
+3351: cdef size_t buf_bytes = row_count * 16 if row_count > 0 else 16
__pyx_t_1 = (__pyx_v_row_count > 0);
if (__pyx_t_1) {
__pyx_t_2 = (__pyx_v_row_count * 16);
} else {
__pyx_t_2 = 16;
}
__pyx_v_buf_bytes = __pyx_t_2;
+3352: cdef size_t validity_bytes = (row_count + 7) // 8
__pyx_v_validity_bytes = ((__pyx_v_row_count + 7) / 8);
3353: cdef size_t i
3354: cdef object le_bytes
+3355: cdef object uuid_cls = _uuid.UUID
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_uuid); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_UUID); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_uuid_cls = __pyx_t_4; __pyx_t_4 = 0;
3356:
+3357: 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_L9_try_end;
__pyx_L4_error:;
__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_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 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_L9_try_end:;
}
+3358: buf = <uint8_t*>calloc(buf_bytes, sizeof(uint8_t))
__pyx_v_buf = ((uint8_t *)calloc(__pyx_v_buf_bytes, (sizeof(uint8_t))));
+3359: if buf == NULL:
__pyx_t_1 = (__pyx_v_buf == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3360: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3360, __pyx_L4_error)
+3361: b.data = <void*>buf
__pyx_v_b->data = ((void *)__pyx_v_buf);
+3362: if validity_bytes > 0:
__pyx_t_1 = (__pyx_v_validity_bytes > 0);
if (__pyx_t_1) {
/* … */
}
+3363: b.validity = <uint8_t*>calloc(validity_bytes, sizeof(uint8_t))
__pyx_v_b->validity = ((uint8_t *)calloc(__pyx_v_validity_bytes, (sizeof(uint8_t))));
+3364: if b.validity == NULL:
__pyx_t_1 = (__pyx_v_b->validity == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3365: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3365, __pyx_L4_error)
+3366: for i in range(row_count):
__pyx_t_2 = __pyx_v_row_count;
__pyx_t_8 = __pyx_t_2;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_i = __pyx_t_9;
+3367: cell = access[i]
__pyx_v_cell = (__pyx_v_access[__pyx_v_i]);
+3368: if isinstance(<object>cell, uuid_cls):
__pyx_t_1 = PyObject_IsInstance(((PyObject *)__pyx_v_cell), __pyx_v_uuid_cls); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3368, __pyx_L4_error) if (__pyx_t_1) { /* … */ goto __pyx_L15; }
3369: # `.int.to_bytes(16, 'little')` produces exactly the
3370: # QuestDB UUID wire layout: bytes 0..8 = lo half LE,
3371: # bytes 8..16 = hi half LE. One C-implemented call +
3372: # one 16-byte memcpy per row.
+3373: le_bytes = (<object>cell).int.to_bytes(16, 'little')
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cell), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3373, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_to_bytes); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3373, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[6], NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3373, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_le_bytes, __pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_mstate_global->__pyx_tuple[6] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_16, __pyx_mstate_global->__pyx_n_u_little); if (unlikely(!__pyx_mstate_global->__pyx_tuple[6])) __PYX_ERR(0, 3373, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[6]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[6]);
+3374: memcpy(buf + i * 16, PyBytes_AsString(le_bytes), 16)
__pyx_t_10 = PyBytes_AsString(__pyx_v_le_bytes); if (unlikely(__pyx_t_10 == ((void *)NULL))) __PYX_ERR(0, 3374, __pyx_L4_error) (void)(memcpy((__pyx_v_buf + (__pyx_v_i * 16)), __pyx_t_10, 16));
+3375: if b.validity != NULL:
__pyx_t_1 = (__pyx_v_b->validity != NULL);
if (__pyx_t_1) {
/* … */
}
+3376: _pyobj_set_validity_bit(b.validity, i)
__pyx_f_7questdb_7_client__pyobj_set_validity_bit(__pyx_v_b->validity, __pyx_v_i);
+3377: elif _dataframe_is_null_pyobj(cell):
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_is_null_pyobj(__pyx_v_cell);
if (likely(__pyx_t_1)) {
/* … */
goto __pyx_L15;
}
+3378: b.has_nulls = True
__pyx_v_b->has_nulls = 1;
3379: else:
+3380: raise QuestDBError(
/*else*/ {
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3380, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_11);
+3381: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3381, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3381, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+3382: f'Bad column {df_col_name!r} at row {i}: expected UUID, '
__pyx_t_12 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_df_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3382, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_14 = __Pyx_PyUnicode_From_size_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3382, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_14); /* … */ __pyx_t_15 = __Pyx_PyUnicode_Join(__pyx_t_17, 7, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12) + 8 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14) + 21 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3382, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_18 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_11, __pyx__function); __pyx_t_18 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_13, __pyx_t_15}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_18, (3-__pyx_t_18) | (__pyx_t_18*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3380, __pyx_L4_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(0, 3380, __pyx_L4_error) } __pyx_L15:; }
+3383: f'got {_fqn(type(<object>cell))}.')
__pyx_t_15 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_cell))))); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3383, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_16 = __Pyx_PyUnicode_Unicode(__pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3383, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_17[1] = __pyx_t_12; __pyx_t_17[2] = __pyx_mstate_global->__pyx_kp_u_at_row; __pyx_t_17[3] = __pyx_t_14; __pyx_t_17[4] = __pyx_mstate_global->__pyx_kp_u_expected_UUID_got; __pyx_t_17[5] = __pyx_t_16; __pyx_t_17[6] = __pyx_mstate_global->__pyx_kp_u__2;
3384:
+3385: if not b.has_nulls and b.validity != NULL:
__pyx_t_19 = (!__pyx_v_b->has_nulls);
if (__pyx_t_19) {
} else {
__pyx_t_1 = __pyx_t_19;
goto __pyx_L18_bool_binop_done;
}
__pyx_t_19 = (__pyx_v_b->validity != NULL);
__pyx_t_1 = __pyx_t_19;
__pyx_L18_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+3386: free(b.validity)
free(__pyx_v_b->validity);
+3387: b.validity = NULL
__pyx_v_b->validity = NULL;
+3388: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._dataframe_columnar_build_uuid_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_11, &__pyx_t_15) < 0) __PYX_ERR(0, 3388, __pyx_L6_except_error)
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_11);
__Pyx_XGOTREF(__pyx_t_15);
+3389: pyobj_built_free(b)
__pyx_f_7questdb_7_client_pyobj_built_free(__pyx_v_b);
+3390: raise
__Pyx_GIVEREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_11, __pyx_t_15); __pyx_t_4 = 0; __pyx_t_11 = 0; __pyx_t_15 = 0; __PYX_ERR(0, 3390, __pyx_L6_except_error) }
3391:
+3392: return b
__pyx_r = __pyx_v_b; goto __pyx_L0;
3393:
3394:
+3395: cdef pyobj_built_t* _dataframe_columnar_build_ipv4_pyobj(
static struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_f_7questdb_7_client__dataframe_columnar_build_ipv4_pyobj(struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, size_t __pyx_v_row_count, PyObject *__pyx_v_df_col_name) {
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_v_b;
PyObject **__pyx_v_access;
PyObject *__pyx_v_cell;
uint32_t *__pyx_v_values;
size_t __pyx_v_validity_bytes;
size_t __pyx_v_i;
PyObject *__pyx_v_ipv4_cls = 0;
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_11);
__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_AddTraceback("questdb._client._dataframe_columnar_build_ipv4_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_ipv4_cls);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3396: col_t* col,
3397: size_t row_count,
3398: object df_col_name) except NULL:
+3399: cdef pyobj_built_t* b = <pyobj_built_t*>calloc(1, sizeof(pyobj_built_t))
__pyx_v_b = ((struct __pyx_t_7questdb_7_client_pyobj_built_t *)calloc(1, (sizeof(struct __pyx_t_7questdb_7_client_pyobj_built_t))));
+3400: if b == NULL:
__pyx_t_1 = (__pyx_v_b == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3401: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3401, __pyx_L1_error)
+3402: b.row_count = row_count
__pyx_v_b->row_count = __pyx_v_row_count;
3403:
+3404: cdef PyObject** access = <PyObject**>col.setup.chunks.chunks[0].buffers[1]
__pyx_v_access = ((PyObject **)((__pyx_v_col->setup->chunks.chunks[0]).buffers[1]));
3405: cdef PyObject* cell
+3406: cdef uint32_t* values = NULL
__pyx_v_values = NULL;
+3407: cdef size_t validity_bytes = (row_count + 7) // 8
__pyx_v_validity_bytes = ((__pyx_v_row_count + 7) / 8);
3408: cdef size_t i
+3409: cdef object ipv4_cls = _ipaddress.IPv4Address
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ipaddress); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_IPv4Address); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_ipv4_cls = __pyx_t_3; __pyx_t_3 = 0;
3410:
+3411: try:
{
/*try:*/ {
/* … */
}
__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;
goto __pyx_L9_try_end;
__pyx_L4_error:;
__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_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
__pyx_L6_except_error:;
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L1_error;
__pyx_L9_try_end:;
}
+3412: values = <uint32_t*>calloc(row_count if row_count > 0 else 1,
__pyx_t_1 = (__pyx_v_row_count > 0);
if (__pyx_t_1) {
__pyx_t_7 = __pyx_v_row_count;
} else {
__pyx_t_7 = 1;
}
/* … */
__pyx_v_values = ((uint32_t *)calloc(__pyx_t_7, (sizeof(uint32_t))));
3413: sizeof(uint32_t))
+3414: if values == NULL:
__pyx_t_1 = (__pyx_v_values == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3415: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3415, __pyx_L4_error)
+3416: b.data = <void*>values
__pyx_v_b->data = ((void *)__pyx_v_values);
+3417: if validity_bytes > 0:
__pyx_t_1 = (__pyx_v_validity_bytes > 0);
if (__pyx_t_1) {
/* … */
}
+3418: b.validity = <uint8_t*>calloc(validity_bytes, sizeof(uint8_t))
__pyx_v_b->validity = ((uint8_t *)calloc(__pyx_v_validity_bytes, (sizeof(uint8_t))));
+3419: if b.validity == NULL:
__pyx_t_1 = (__pyx_v_b->validity == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3420: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3420, __pyx_L4_error)
+3421: for i in range(row_count):
__pyx_t_7 = __pyx_v_row_count;
__pyx_t_8 = __pyx_t_7;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_i = __pyx_t_9;
+3422: cell = access[i]
__pyx_v_cell = (__pyx_v_access[__pyx_v_i]);
+3423: if isinstance(<object>cell, ipv4_cls):
__pyx_t_1 = PyObject_IsInstance(((PyObject *)__pyx_v_cell), __pyx_v_ipv4_cls); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3423, __pyx_L4_error) if (__pyx_t_1) { /* … */ goto __pyx_L15; }
+3424: values[i] = <uint32_t>int(<object>cell)
__pyx_t_3 = __Pyx_PyNumber_Int(((PyObject *)__pyx_v_cell)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3424, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_10 = __Pyx_PyLong_As_uint32_t(__pyx_t_3); if (unlikely((__pyx_t_10 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3424, __pyx_L4_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; (__pyx_v_values[__pyx_v_i]) = ((uint32_t)__pyx_t_10);
+3425: if b.validity != NULL:
__pyx_t_1 = (__pyx_v_b->validity != NULL);
if (__pyx_t_1) {
/* … */
}
+3426: _pyobj_set_validity_bit(b.validity, i)
__pyx_f_7questdb_7_client__pyobj_set_validity_bit(__pyx_v_b->validity, __pyx_v_i);
+3427: elif _dataframe_is_null_pyobj(cell):
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_is_null_pyobj(__pyx_v_cell);
if (likely(__pyx_t_1)) {
/* … */
goto __pyx_L15;
}
+3428: b.has_nulls = True
__pyx_v_b->has_nulls = 1;
3429: else:
+3430: raise QuestDBError(
/*else*/ {
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3430, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_11);
+3431: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3431, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3431, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+3432: f'Bad column {df_col_name!r} at row {i}: expected '
__pyx_t_12 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_df_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3432, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_14 = __Pyx_PyUnicode_From_size_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3432, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_14); /* … */ __pyx_t_15 = __Pyx_PyUnicode_Join(__pyx_t_17, 7, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12) + 8 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14) + 38 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3432, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_18 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_11); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_11, __pyx__function); __pyx_t_18 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_13, __pyx_t_15}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_18, (3-__pyx_t_18) | (__pyx_t_18*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3430, __pyx_L4_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(0, 3430, __pyx_L4_error) } __pyx_L15:; }
+3433: f'ipaddress.IPv4Address, got {_fqn(type(<object>cell))}.')
__pyx_t_15 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_cell))))); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3433, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_16 = __Pyx_PyUnicode_Unicode(__pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3433, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_17[1] = __pyx_t_12; __pyx_t_17[2] = __pyx_mstate_global->__pyx_kp_u_at_row; __pyx_t_17[3] = __pyx_t_14; __pyx_t_17[4] = __pyx_mstate_global->__pyx_kp_u_expected_ipaddress_IPv4Address; __pyx_t_17[5] = __pyx_t_16; __pyx_t_17[6] = __pyx_mstate_global->__pyx_kp_u__2;
3434:
+3435: if not b.has_nulls and b.validity != NULL:
__pyx_t_19 = (!__pyx_v_b->has_nulls);
if (__pyx_t_19) {
} else {
__pyx_t_1 = __pyx_t_19;
goto __pyx_L18_bool_binop_done;
}
__pyx_t_19 = (__pyx_v_b->validity != NULL);
__pyx_t_1 = __pyx_t_19;
__pyx_L18_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+3436: free(b.validity)
free(__pyx_v_b->validity);
+3437: b.validity = NULL
__pyx_v_b->validity = NULL;
+3438: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._dataframe_columnar_build_ipv4_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_11, &__pyx_t_15) < 0) __PYX_ERR(0, 3438, __pyx_L6_except_error)
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_11);
__Pyx_XGOTREF(__pyx_t_15);
+3439: pyobj_built_free(b)
__pyx_f_7questdb_7_client_pyobj_built_free(__pyx_v_b);
+3440: raise
__Pyx_GIVEREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_11, __pyx_t_15); __pyx_t_3 = 0; __pyx_t_11 = 0; __pyx_t_15 = 0; __PYX_ERR(0, 3440, __pyx_L6_except_error) }
3441:
+3442: return b
__pyx_r = __pyx_v_b; goto __pyx_L0;
3443:
3444:
+3445: cdef inline int64_t _days_from_civil(int y, int m, int d) noexcept nogil:
static CYTHON_INLINE int64_t __pyx_f_7questdb_7_client__days_from_civil(int __pyx_v_y, int __pyx_v_m, int __pyx_v_d) {
int __pyx_v_y_adj;
int __pyx_v_era;
int __pyx_v_yoe;
int __pyx_v_m_adj;
int __pyx_v_doy;
int __pyx_v_doe;
int64_t __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
+3446: cdef int y_adj = y - 1 if m <= 2 else y
__pyx_t_2 = (__pyx_v_m <= 2);
if (__pyx_t_2) {
__pyx_t_1 = (__pyx_v_y - 1);
} else {
__pyx_t_1 = __pyx_v_y;
}
__pyx_v_y_adj = __pyx_t_1;
+3447: cdef int era = (y_adj if y_adj >= 0 else y_adj - 399) // 400
__pyx_t_2 = (__pyx_v_y_adj >= 0);
if (__pyx_t_2) {
__pyx_t_1 = __pyx_v_y_adj;
} else {
__pyx_t_1 = (__pyx_v_y_adj - 0x18F);
}
__pyx_v_era = __Pyx_div_long(__pyx_t_1, 0x190, 1);
+3448: cdef int yoe = y_adj - era * 400
__pyx_v_yoe = (__pyx_v_y_adj - (__pyx_v_era * 0x190));
+3449: cdef int m_adj = m - 3 if m > 2 else m + 9
__pyx_t_2 = (__pyx_v_m > 2);
if (__pyx_t_2) {
__pyx_t_1 = (__pyx_v_m - 3);
} else {
__pyx_t_1 = (__pyx_v_m + 9);
}
__pyx_v_m_adj = __pyx_t_1;
+3450: cdef int doy = (153 * m_adj + 2) // 5 + d - 1
__pyx_v_doy = ((__Pyx_div_long(((0x99 * __pyx_v_m_adj) + 2), 5, 1) + __pyx_v_d) - 1);
+3451: cdef int doe = yoe * 365 + yoe // 4 - yoe // 100 + doy
__pyx_v_doe = ((((__pyx_v_yoe * 0x16D) + __Pyx_div_long(__pyx_v_yoe, 4, 1)) - __Pyx_div_long(__pyx_v_yoe, 0x64, 1)) + __pyx_v_doy);
+3452: return <int64_t>era * 146097 + <int64_t>doe - 719468
__pyx_r = (((((int64_t)__pyx_v_era) * 0x23AB1) + ((int64_t)__pyx_v_doe)) - 0xAFA6C); goto __pyx_L0;
3453:
3454:
+3455: cdef pyobj_built_t* _dataframe_columnar_build_datetime_pyobj(
static struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_f_7questdb_7_client__dataframe_columnar_build_datetime_pyobj(struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, size_t __pyx_v_row_count, PyObject *__pyx_v_df_col_name) {
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_v_b;
PyObject **__pyx_v_access;
PyObject *__pyx_v_cell;
int64_t *__pyx_v_values;
size_t __pyx_v_validity_bytes;
size_t __pyx_v_i;
PyObject *__pyx_v_dt = 0;
PyObject *__pyx_v_epoch_aware = 0;
PyObject *__pyx_v_datetime_cls = 0;
PyObject *__pyx_v_delta = 0;
int __pyx_v_year;
int __pyx_v_month;
int __pyx_v_day;
int __pyx_v_hour;
int __pyx_v_minute;
int __pyx_v_second;
int __pyx_v_us;
int64_t __pyx_v_days;
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_r;
/* … */
/* 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_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_build_datetime_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_dt);
__Pyx_XDECREF(__pyx_v_epoch_aware);
__Pyx_XDECREF(__pyx_v_datetime_cls);
__Pyx_XDECREF(__pyx_v_delta);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3456: col_t* col,
3457: size_t row_count,
3458: object df_col_name) except NULL:
+3459: cdef pyobj_built_t* b = <pyobj_built_t*>calloc(1, sizeof(pyobj_built_t))
__pyx_v_b = ((struct __pyx_t_7questdb_7_client_pyobj_built_t *)calloc(1, (sizeof(struct __pyx_t_7questdb_7_client_pyobj_built_t))));
+3460: if b == NULL:
__pyx_t_1 = (__pyx_v_b == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3461: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3461, __pyx_L1_error)
+3462: b.row_count = row_count
__pyx_v_b->row_count = __pyx_v_row_count;
3463:
+3464: cdef PyObject** access = <PyObject**>col.setup.chunks.chunks[0].buffers[1]
__pyx_v_access = ((PyObject **)((__pyx_v_col->setup->chunks.chunks[0]).buffers[1]));
3465: cdef PyObject* cell
+3466: cdef int64_t* values = NULL
__pyx_v_values = NULL;
+3467: cdef size_t validity_bytes = (row_count + 7) // 8
__pyx_v_validity_bytes = ((__pyx_v_row_count + 7) / 8);
3468: cdef size_t i
3469: cdef object dt
+3470: cdef object epoch_aware = datetime.datetime(
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[1], __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_epoch_aware = __pyx_t_4; __pyx_t_4 = 0;
+3471: 1970, 1, 1, tzinfo=datetime.timezone.utc)
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3471, __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(0, 3471, __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(0, 3471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_4) < (0)) __PYX_ERR(0, 3471, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+3472: cdef object datetime_cls = datetime.datetime
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3472, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3472, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_datetime_cls = __pyx_t_2; __pyx_t_2 = 0;
3473: cdef object delta
3474: cdef int year, month, day, hour, minute, second, us
3475: cdef int64_t days
3476:
+3477: 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_L9_try_end;
__pyx_L4_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_16); __pyx_t_16 = 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_5); __pyx_t_5 = 0;
/* … */
__pyx_L6_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_L9_try_end:;
}
+3478: values = <int64_t*>calloc(row_count if row_count > 0 else 1,
__pyx_t_1 = (__pyx_v_row_count > 0);
if (__pyx_t_1) {
__pyx_t_9 = __pyx_v_row_count;
} else {
__pyx_t_9 = 1;
}
/* … */
__pyx_v_values = ((int64_t *)calloc(__pyx_t_9, (sizeof(int64_t))));
3479: sizeof(int64_t))
+3480: if values == NULL:
__pyx_t_1 = (__pyx_v_values == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3481: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3481, __pyx_L4_error)
+3482: b.data = <void*>values
__pyx_v_b->data = ((void *)__pyx_v_values);
+3483: if validity_bytes > 0:
__pyx_t_1 = (__pyx_v_validity_bytes > 0);
if (__pyx_t_1) {
/* … */
}
+3484: b.validity = <uint8_t*>calloc(validity_bytes, sizeof(uint8_t))
__pyx_v_b->validity = ((uint8_t *)calloc(__pyx_v_validity_bytes, (sizeof(uint8_t))));
+3485: if b.validity == NULL:
__pyx_t_1 = (__pyx_v_b->validity == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3486: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3486, __pyx_L4_error)
+3487: for i in range(row_count):
__pyx_t_9 = __pyx_v_row_count;
__pyx_t_10 = __pyx_t_9;
for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
+3488: cell = access[i]
__pyx_v_cell = (__pyx_v_access[__pyx_v_i]);
+3489: if _dataframe_is_null_pyobj(cell):
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_is_null_pyobj(__pyx_v_cell);
if (__pyx_t_1) {
/* … */
goto __pyx_L15;
}
+3490: b.has_nulls = True
__pyx_v_b->has_nulls = 1;
+3491: elif isinstance(<object>cell, datetime_cls):
__pyx_t_1 = PyObject_IsInstance(((PyObject *)__pyx_v_cell), __pyx_v_datetime_cls); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3491, __pyx_L4_error) if (likely(__pyx_t_1)) { /* … */ goto __pyx_L15; }
+3492: dt = <object>cell
__pyx_t_2 = ((PyObject *)__pyx_v_cell);
__Pyx_INCREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_v_dt, __pyx_t_2);
__pyx_t_2 = 0;
+3493: if dt.tzinfo is None:
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_tzinfo); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3493, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = (__pyx_t_2 == Py_None); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* … */ goto __pyx_L16; }
3494: # Fast path: C-level field extraction + Howard
3495: # Hinnant days_from_civil; no Python timedelta /
3496: # int arithmetic per row.
+3497: year = PyDateTime_GET_YEAR(dt)
__pyx_v_year = PyDateTime_GET_YEAR(__pyx_v_dt);
+3498: month = PyDateTime_GET_MONTH(dt)
__pyx_v_month = PyDateTime_GET_MONTH(__pyx_v_dt);
+3499: day = PyDateTime_GET_DAY(dt)
__pyx_v_day = PyDateTime_GET_DAY(__pyx_v_dt);
+3500: hour = PyDateTime_DATE_GET_HOUR(dt)
__pyx_v_hour = PyDateTime_DATE_GET_HOUR(__pyx_v_dt);
+3501: minute = PyDateTime_DATE_GET_MINUTE(dt)
__pyx_v_minute = PyDateTime_DATE_GET_MINUTE(__pyx_v_dt);
+3502: second = PyDateTime_DATE_GET_SECOND(dt)
__pyx_v_second = PyDateTime_DATE_GET_SECOND(__pyx_v_dt);
+3503: us = PyDateTime_DATE_GET_MICROSECOND(dt)
__pyx_v_us = PyDateTime_DATE_GET_MICROSECOND(__pyx_v_dt);
+3504: days = _days_from_civil(year, month, day)
__pyx_v_days = __pyx_f_7questdb_7_client__days_from_civil(__pyx_v_year, __pyx_v_month, __pyx_v_day);
+3505: values[i] = (
(__pyx_v_values[__pyx_v_i]) = __pyx_t_12;
+3506: days * 86_400_000_000
__pyx_t_2 = __Pyx_PyLong_From_int64_t(__pyx_v_days); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3506, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_mstate_global->__pyx_int_86400000000); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3506, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3507: + <int64_t>hour * 3_600_000_000
__pyx_t_2 = __Pyx_PyLong_From_int64_t(((int64_t)__pyx_v_hour)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3507, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_mstate_global->__pyx_int_3600000000); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3507, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3507, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3508: + <int64_t>minute * 60_000_000
__pyx_t_3 = __Pyx_PyLong_From_int64_t((((int64_t)__pyx_v_minute) * 0x3938700)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3508, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3508, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3509: + <int64_t>second * 1_000_000
__pyx_t_3 = __Pyx_PyLong_From_int64_t((((int64_t)__pyx_v_second) * 0xF4240)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3509, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3509, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3510: + <int64_t>us)
__pyx_t_3 = __Pyx_PyLong_From_int64_t(((int64_t)__pyx_v_us)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3510, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3510, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_12 = __Pyx_PyLong_As_int64_t(__pyx_t_4); if (unlikely((__pyx_t_12 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3510, __pyx_L4_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3511: else:
+3512: delta = dt - epoch_aware
/*else*/ {
__pyx_t_4 = PyNumber_Subtract(__pyx_v_dt, __pyx_v_epoch_aware); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3512, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_XDECREF_SET(__pyx_v_delta, __pyx_t_4);
__pyx_t_4 = 0;
+3513: values[i] = <int64_t>(
(__pyx_v_values[__pyx_v_i]) = ((int64_t)__pyx_t_12);
}
__pyx_L16:;
+3514: delta.days * 86_400_000_000
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_delta, __pyx_mstate_global->__pyx_n_u_days); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3514, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_mstate_global->__pyx_int_86400000000); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3514, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+3515: + delta.seconds * 1_000_000
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_delta, __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3515, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyLong_MultiplyObjC(__pyx_t_4, __pyx_mstate_global->__pyx_int_1000000, 0xF4240, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3515, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3515, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3516: + delta.microseconds)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_delta, __pyx_mstate_global->__pyx_n_u_microseconds); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3516, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3516, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_12 = __Pyx_PyLong_As_int64_t(__pyx_t_3); if (unlikely((__pyx_t_12 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3516, __pyx_L4_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3517: if b.validity != NULL:
__pyx_t_1 = (__pyx_v_b->validity != NULL);
if (__pyx_t_1) {
/* … */
}
+3518: _pyobj_set_validity_bit(b.validity, i)
__pyx_f_7questdb_7_client__pyobj_set_validity_bit(__pyx_v_b->validity, __pyx_v_i);
3519: else:
+3520: raise QuestDBError(
/*else*/ {
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3520, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_4);
+3521: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3521, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3521, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+3522: f'Bad column {df_col_name!r} at row {i}: expected '
__pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_df_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3522, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_14 = __Pyx_PyUnicode_From_size_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3522, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_14); /* … */ __pyx_t_15 = __Pyx_PyUnicode_Join(__pyx_t_17, 7, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 8 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_14) + 34 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3522, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_18 = 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_18 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_13, __pyx_t_15}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_18, (3-__pyx_t_18) | (__pyx_t_18*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3520, __pyx_L4_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(0, 3520, __pyx_L4_error) } __pyx_L15:; }
+3523: f'datetime.datetime, got {_fqn(type(<object>cell))}.')
__pyx_t_15 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_cell))))); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3523, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_16 = __Pyx_PyUnicode_Unicode(__pyx_t_15); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3523, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_17[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_17[1] = __pyx_t_5; __pyx_t_17[2] = __pyx_mstate_global->__pyx_kp_u_at_row; __pyx_t_17[3] = __pyx_t_14; __pyx_t_17[4] = __pyx_mstate_global->__pyx_kp_u_expected_datetime_datetime_got; __pyx_t_17[5] = __pyx_t_16; __pyx_t_17[6] = __pyx_mstate_global->__pyx_kp_u__2;
3524:
+3525: if not b.has_nulls and b.validity != NULL:
__pyx_t_19 = (!__pyx_v_b->has_nulls);
if (__pyx_t_19) {
} else {
__pyx_t_1 = __pyx_t_19;
goto __pyx_L19_bool_binop_done;
}
__pyx_t_19 = (__pyx_v_b->validity != NULL);
__pyx_t_1 = __pyx_t_19;
__pyx_L19_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+3526: free(b.validity)
free(__pyx_v_b->validity);
+3527: b.validity = NULL
__pyx_v_b->validity = NULL;
+3528: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._dataframe_columnar_build_datetime_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_15) < 0) __PYX_ERR(0, 3528, __pyx_L6_except_error)
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_15);
+3529: pyobj_built_free(b)
__pyx_f_7questdb_7_client_pyobj_built_free(__pyx_v_b);
+3530: raise
__Pyx_GIVEREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_4, __pyx_t_15); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_15 = 0; __PYX_ERR(0, 3530, __pyx_L6_except_error) }
3531:
+3532: return b
__pyx_r = __pyx_v_b; goto __pyx_L0;
3533:
3534:
+3535: cdef pyobj_built_t* _dataframe_columnar_build_bytes_pyobj(
static struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_f_7questdb_7_client__dataframe_columnar_build_bytes_pyobj(struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, size_t __pyx_v_row_count, PyObject *__pyx_v_df_col_name) {
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_v_b;
PyObject **__pyx_v_access;
PyObject *__pyx_v_cell;
Py_ssize_t __pyx_v_blob_len;
char const *__pyx_v_blob_buf;
size_t __pyx_v_validity_bytes;
size_t __pyx_v_bytes_cap;
uint8_t *__pyx_v_new_bytes;
size_t __pyx_v_bytes_used;
size_t __pyx_v_i;
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_build_bytes_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3536: col_t* col,
3537: size_t row_count,
3538: object df_col_name) except NULL:
+3539: cdef pyobj_built_t* b = <pyobj_built_t*>calloc(1, sizeof(pyobj_built_t))
__pyx_v_b = ((struct __pyx_t_7questdb_7_client_pyobj_built_t *)calloc(1, (sizeof(struct __pyx_t_7questdb_7_client_pyobj_built_t))));
+3540: if b == NULL:
__pyx_t_1 = (__pyx_v_b == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3541: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3541, __pyx_L1_error)
+3542: b.row_count = row_count
__pyx_v_b->row_count = __pyx_v_row_count;
3543:
+3544: cdef PyObject** access = <PyObject**>col.setup.chunks.chunks[0].buffers[1]
__pyx_v_access = ((PyObject **)((__pyx_v_col->setup->chunks.chunks[0]).buffers[1]));
3545: cdef PyObject* cell
3546: cdef Py_ssize_t blob_len
3547: cdef const char* blob_buf
+3548: cdef size_t validity_bytes = (row_count + 7) // 8
__pyx_v_validity_bytes = ((__pyx_v_row_count + 7) / 8);
+3549: cdef size_t bytes_cap = 16
__pyx_v_bytes_cap = 16;
3550: cdef uint8_t* new_bytes
+3551: cdef size_t bytes_used = 0
__pyx_v_bytes_used = 0;
3552: cdef size_t i
3553:
+3554: 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_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;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
__Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__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_L9_try_end:;
}
+3555: b.str_offsets = <int32_t*>calloc(row_count + 1, sizeof(int32_t))
__pyx_v_b->str_offsets = ((int32_t *)calloc((__pyx_v_row_count + 1), (sizeof(int32_t))));
+3556: if b.str_offsets == NULL:
__pyx_t_1 = (__pyx_v_b->str_offsets == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3557: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3557, __pyx_L4_error)
+3558: if validity_bytes > 0:
__pyx_t_1 = (__pyx_v_validity_bytes > 0);
if (__pyx_t_1) {
/* … */
}
+3559: b.validity = <uint8_t*>calloc(validity_bytes, sizeof(uint8_t))
__pyx_v_b->validity = ((uint8_t *)calloc(__pyx_v_validity_bytes, (sizeof(uint8_t))));
+3560: if b.validity == NULL:
__pyx_t_1 = (__pyx_v_b->validity == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3561: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3561, __pyx_L4_error)
+3562: b.str_bytes = <uint8_t*>malloc(bytes_cap)
__pyx_v_b->str_bytes = ((uint8_t *)malloc(__pyx_v_bytes_cap));
+3563: if b.str_bytes == NULL:
__pyx_t_1 = (__pyx_v_b->str_bytes == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3564: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3564, __pyx_L4_error)
3565:
+3566: for i in range(row_count):
__pyx_t_5 = __pyx_v_row_count;
__pyx_t_6 = __pyx_t_5;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_i = __pyx_t_7;
+3567: cell = access[i]
__pyx_v_cell = (__pyx_v_access[__pyx_v_i]);
+3568: if PyBytes_CheckExact(cell):
__pyx_t_1 = PyBytes_CheckExact(__pyx_v_cell);
if (__pyx_t_1) {
/* … */
goto __pyx_L16;
}
+3569: blob_len = PyBytes_GET_SIZE(<object>cell)
__pyx_v_blob_len = PyBytes_GET_SIZE(((PyObject *)__pyx_v_cell));
+3570: blob_buf = PyBytes_AsString(<object>cell)
__pyx_t_8 = PyBytes_AsString(((PyObject *)__pyx_v_cell)); if (unlikely(__pyx_t_8 == ((void *)NULL))) __PYX_ERR(0, 3570, __pyx_L4_error) __pyx_v_blob_buf = __pyx_t_8;
+3571: if bytes_used + <size_t>blob_len > <size_t>2_147_483_647:
__pyx_t_1 = ((__pyx_v_bytes_used + ((size_t)__pyx_v_blob_len)) > ((size_t)0x7FFFFFFF));
if (unlikely(__pyx_t_1)) {
/* … */
}
+3572: raise QuestDBError(
__pyx_t_10 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3572, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_11);
+3573: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3573, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3573, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+3574: f'Bad column {df_col_name!r}: column total bytes '
__pyx_t_12 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_df_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3574, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_14[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_14[1] = __pyx_t_12; __pyx_t_14[2] = __pyx_mstate_global->__pyx_kp_u_column_total_bytes_exceeds_the; __pyx_t_15 = __Pyx_PyUnicode_Join(__pyx_t_14, 3, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12) + 76, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3574, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_16 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11); assert(__pyx_t_10); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_11, __pyx__function); __pyx_t_16 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_10, __pyx_t_13, __pyx_t_15}; __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_16, (3-__pyx_t_16) | (__pyx_t_16*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3572, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); } __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(0, 3572, __pyx_L4_error)
3575: 'exceeds the QWP wire binary offset table '
3576: 'limit (2 GiB).')
+3577: while bytes_used + <size_t>blob_len > bytes_cap:
while (1) {
__pyx_t_1 = ((__pyx_v_bytes_used + ((size_t)__pyx_v_blob_len)) > __pyx_v_bytes_cap);
if (!__pyx_t_1) break;
+3578: bytes_cap *= 2
__pyx_v_bytes_cap = (__pyx_v_bytes_cap * 2);
+3579: new_bytes = <uint8_t*>realloc(b.str_bytes, bytes_cap)
__pyx_v_new_bytes = ((uint8_t *)realloc(__pyx_v_b->str_bytes, __pyx_v_bytes_cap));
+3580: if new_bytes == NULL:
__pyx_t_1 = (__pyx_v_new_bytes == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3581: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3581, __pyx_L4_error)
+3582: b.str_bytes = new_bytes
__pyx_v_b->str_bytes = __pyx_v_new_bytes;
}
+3583: if blob_len > 0:
__pyx_t_1 = (__pyx_v_blob_len > 0);
if (__pyx_t_1) {
/* … */
}
+3584: memcpy(b.str_bytes + bytes_used, blob_buf, <size_t>blob_len)
(void)(memcpy((__pyx_v_b->str_bytes + __pyx_v_bytes_used), __pyx_v_blob_buf, ((size_t)__pyx_v_blob_len)));
+3585: bytes_used += <size_t>blob_len
__pyx_v_bytes_used = (__pyx_v_bytes_used + ((size_t)__pyx_v_blob_len));
+3586: b.str_offsets[i + 1] = <int32_t>bytes_used
(__pyx_v_b->str_offsets[(__pyx_v_i + 1)]) = ((int32_t)__pyx_v_bytes_used);
+3587: if b.validity != NULL:
__pyx_t_1 = (__pyx_v_b->validity != NULL);
if (__pyx_t_1) {
/* … */
}
+3588: _pyobj_set_validity_bit(b.validity, i)
__pyx_f_7questdb_7_client__pyobj_set_validity_bit(__pyx_v_b->validity, __pyx_v_i);
+3589: elif _dataframe_is_null_pyobj(cell):
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_is_null_pyobj(__pyx_v_cell);
if (likely(__pyx_t_1)) {
/* … */
goto __pyx_L16;
}
+3590: b.str_offsets[i + 1] = <int32_t>bytes_used
(__pyx_v_b->str_offsets[(__pyx_v_i + 1)]) = ((int32_t)__pyx_v_bytes_used);
+3591: b.has_nulls = True
__pyx_v_b->has_nulls = 1;
3592: else:
+3593: raise QuestDBError(
/*else*/ {
__pyx_t_11 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3593, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_15);
+3594: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3594, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3594, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+3595: f'Bad column {df_col_name!r} at row {i}: expected bytes, '
__pyx_t_13 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_df_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3595, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyUnicode_From_size_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3595, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); /* … */ __pyx_t_17 = __Pyx_PyUnicode_Join(__pyx_t_19, 7, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13) + 8 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12) + 22 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_18) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_18)); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 3595, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_16 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_15))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_15); assert(__pyx_t_11); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_15, __pyx__function); __pyx_t_16 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_t_10, __pyx_t_17}; __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_16, (3-__pyx_t_16) | (__pyx_t_16*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3593, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); } __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(0, 3593, __pyx_L4_error) } __pyx_L16:; }
+3596: f'got {_fqn(type(<object>cell))}.')
__pyx_t_17 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_cell))))); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 3596, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_18 = __Pyx_PyUnicode_Unicode(__pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3596, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_19[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_19[1] = __pyx_t_13; __pyx_t_19[2] = __pyx_mstate_global->__pyx_kp_u_at_row; __pyx_t_19[3] = __pyx_t_12; __pyx_t_19[4] = __pyx_mstate_global->__pyx_kp_u_expected_bytes_got; __pyx_t_19[5] = __pyx_t_18; __pyx_t_19[6] = __pyx_mstate_global->__pyx_kp_u__2;
3597:
+3598: b.str_bytes_len = bytes_used
__pyx_v_b->str_bytes_len = __pyx_v_bytes_used;
+3599: if not b.has_nulls and b.validity != NULL:
__pyx_t_20 = (!__pyx_v_b->has_nulls);
if (__pyx_t_20) {
} else {
__pyx_t_1 = __pyx_t_20;
goto __pyx_L24_bool_binop_done;
}
__pyx_t_20 = (__pyx_v_b->validity != NULL);
__pyx_t_1 = __pyx_t_20;
__pyx_L24_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+3600: free(b.validity)
free(__pyx_v_b->validity);
+3601: b.validity = NULL
__pyx_v_b->validity = NULL;
+3602: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._dataframe_columnar_build_bytes_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_15, &__pyx_t_17) < 0) __PYX_ERR(0, 3602, __pyx_L6_except_error)
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_17);
+3603: pyobj_built_free(b)
__pyx_f_7questdb_7_client_pyobj_built_free(__pyx_v_b);
+3604: raise
__Pyx_GIVEREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ErrRestoreWithState(__pyx_t_9, __pyx_t_15, __pyx_t_17); __pyx_t_9 = 0; __pyx_t_15 = 0; __pyx_t_17 = 0; __PYX_ERR(0, 3604, __pyx_L6_except_error) }
3605:
+3606: return b
__pyx_r = __pyx_v_b; goto __pyx_L0;
3607:
3608:
+3609: cdef void_int _dataframe_columnar_prebuild_pyobj(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_columnar_prebuild_pyobj(PyObject *__pyx_v_df, struct __pyx_t_7questdb_7_client_dataframe_plan_t *__pyx_v_plan) {
size_t __pyx_v_i;
struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col;
int __pyx_v_any_pyobj;
PyObject *__pyx_v_col_name = NULL;
PyObject *__pyx_v_oe = NULL;
PyObject *__pyx_v_ue = NULL;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__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_17);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_XDECREF(__pyx_t_20);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_prebuild_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_col_name);
__Pyx_XDECREF(__pyx_v_oe);
__Pyx_XDECREF(__pyx_v_ue);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3610: object df,
3611: dataframe_plan_t* plan) except -1:
3612: """
3613: Walk every PyObject-sourced column once and stash typed buffers on
3614: `plan.pyobj_built`. Runs after `validate_plan` and before the chunk
3615: emission loop in `QuestDB.dataframe()`.
3616: """
3617: cdef size_t i
3618: cdef col_t* col
+3619: cdef bint any_pyobj = False
__pyx_v_any_pyobj = 0;
3620:
+3621: for i in range(plan.col_count):
__pyx_t_1 = __pyx_v_plan->col_count;
__pyx_t_2 = __pyx_t_1;
for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_i = __pyx_t_3;
+3622: col = &plan.cols.d[i]
__pyx_v_col = (&(__pyx_v_plan->cols.d[__pyx_v_i]));
+3623: if _is_pyobj_source(col.setup.source):
__pyx_t_4 = __pyx_f_7questdb_7_client__is_pyobj_source(__pyx_v_col->setup->source);
if (__pyx_t_4) {
/* … */
}
}
__pyx_L4_break:;
+3624: any_pyobj = True
__pyx_v_any_pyobj = 1;
+3625: break
goto __pyx_L4_break;
+3626: if not any_pyobj:
__pyx_t_4 = (!__pyx_v_any_pyobj);
if (__pyx_t_4) {
/* … */
}
+3627: return 0
__pyx_r = 0;
goto __pyx_L0;
3628:
+3629: plan.pyobj_built = <pyobj_built_t**>calloc(
__pyx_v_plan->pyobj_built = ((struct __pyx_t_7questdb_7_client_pyobj_built_t **)calloc(__pyx_v_plan->col_count, (sizeof(struct __pyx_t_7questdb_7_client_pyobj_built_t *))));
3630: plan.col_count, sizeof(pyobj_built_t*))
+3631: if plan.pyobj_built == NULL:
__pyx_t_4 = (__pyx_v_plan->pyobj_built == NULL);
if (unlikely(__pyx_t_4)) {
/* … */
}
+3632: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 3632, __pyx_L1_error)
3633:
+3634: for i in range(plan.col_count):
__pyx_t_1 = __pyx_v_plan->col_count;
__pyx_t_2 = __pyx_t_1;
for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_i = __pyx_t_3;
+3635: col = &plan.cols.d[i]
__pyx_v_col = (&(__pyx_v_plan->cols.d[__pyx_v_i]));
+3636: if not _is_pyobj_source(col.setup.source):
__pyx_t_4 = (!__pyx_f_7questdb_7_client__is_pyobj_source(__pyx_v_col->setup->source));
if (__pyx_t_4) {
/* … */
}
+3637: continue
goto __pyx_L8_continue;
+3638: col_name = df.columns[col.setup.orig_index]
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_columns); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, __pyx_v_col->setup->orig_index, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_col_name, __pyx_t_6); __pyx_t_6 = 0;
+3639: try:
{
/*try:*/ {
/* … */
}
__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;
goto __pyx_L18_try_end;
__pyx_L11_error:;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
__pyx_L13_except_error:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L1_error;
__pyx_L18_try_end:;
}
__pyx_L8_continue:;
}
+3640: if col.setup.source == col_source_t.col_source_str_pyobj:
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_str_pyobj:
/* … */
break;
case __pyx_e_7questdb_7_client_col_source_int_pyobj:
+3641: plan.pyobj_built[i] = _dataframe_columnar_build_str_pyobj(
__pyx_t_10 = __pyx_f_7questdb_7_client__dataframe_columnar_build_str_pyobj(__pyx_v_col, __pyx_v_plan->row_count, __pyx_v_col_name); if (unlikely(__pyx_t_10 == ((void *)NULL))) __PYX_ERR(0, 3641, __pyx_L11_error)
(__pyx_v_plan->pyobj_built[__pyx_v_i]) = __pyx_t_10;
3642: col, plan.row_count, col_name)
+3643: elif col.setup.source == col_source_t.col_source_int_pyobj:
break;
case __pyx_e_7questdb_7_client_col_source_float_pyobj:
+3644: plan.pyobj_built[i] = _dataframe_columnar_build_int_pyobj(
__pyx_t_10 = __pyx_f_7questdb_7_client__dataframe_columnar_build_int_pyobj(__pyx_v_col, __pyx_v_plan->row_count, __pyx_v_col_name); if (unlikely(__pyx_t_10 == ((void *)NULL))) __PYX_ERR(0, 3644, __pyx_L11_error)
(__pyx_v_plan->pyobj_built[__pyx_v_i]) = __pyx_t_10;
3645: col, plan.row_count, col_name)
+3646: elif col.setup.source == col_source_t.col_source_float_pyobj:
break;
case __pyx_e_7questdb_7_client_col_source_bool_pyobj:
+3647: plan.pyobj_built[i] = _dataframe_columnar_build_float_pyobj(
__pyx_t_10 = __pyx_f_7questdb_7_client__dataframe_columnar_build_float_pyobj(__pyx_v_col, __pyx_v_plan->row_count, __pyx_v_col_name); if (unlikely(__pyx_t_10 == ((void *)NULL))) __PYX_ERR(0, 3647, __pyx_L11_error)
(__pyx_v_plan->pyobj_built[__pyx_v_i]) = __pyx_t_10;
3648: col, plan.row_count, col_name)
+3649: elif col.setup.source == col_source_t.col_source_bool_pyobj:
break;
case __pyx_e_7questdb_7_client_col_source_uuid_pyobj:
+3650: plan.pyobj_built[i] = _dataframe_columnar_build_bool_pyobj(
__pyx_t_10 = __pyx_f_7questdb_7_client__dataframe_columnar_build_bool_pyobj(__pyx_v_col, __pyx_v_plan->row_count, __pyx_v_col_name); if (unlikely(__pyx_t_10 == ((void *)NULL))) __PYX_ERR(0, 3650, __pyx_L11_error)
(__pyx_v_plan->pyobj_built[__pyx_v_i]) = __pyx_t_10;
3651: col, plan.row_count, col_name)
+3652: elif col.setup.source == col_source_t.col_source_uuid_pyobj:
break;
case __pyx_e_7questdb_7_client_col_source_ipv4_pyobj:
+3653: plan.pyobj_built[i] = _dataframe_columnar_build_uuid_pyobj(
__pyx_t_10 = __pyx_f_7questdb_7_client__dataframe_columnar_build_uuid_pyobj(__pyx_v_col, __pyx_v_plan->row_count, __pyx_v_col_name); if (unlikely(__pyx_t_10 == ((void *)NULL))) __PYX_ERR(0, 3653, __pyx_L11_error)
(__pyx_v_plan->pyobj_built[__pyx_v_i]) = __pyx_t_10;
3654: col, plan.row_count, col_name)
+3655: elif col.setup.source == col_source_t.col_source_ipv4_pyobj:
break;
case __pyx_e_7questdb_7_client_col_source_datetime_pyobj:
+3656: plan.pyobj_built[i] = _dataframe_columnar_build_ipv4_pyobj(
__pyx_t_10 = __pyx_f_7questdb_7_client__dataframe_columnar_build_ipv4_pyobj(__pyx_v_col, __pyx_v_plan->row_count, __pyx_v_col_name); if (unlikely(__pyx_t_10 == ((void *)NULL))) __PYX_ERR(0, 3656, __pyx_L11_error)
(__pyx_v_plan->pyobj_built[__pyx_v_i]) = __pyx_t_10;
3657: col, plan.row_count, col_name)
+3658: elif col.setup.source == col_source_t.col_source_datetime_pyobj:
break;
case __pyx_e_7questdb_7_client_col_source_bytes_pyobj:
+3659: plan.pyobj_built[i] = _dataframe_columnar_build_datetime_pyobj(
__pyx_t_10 = __pyx_f_7questdb_7_client__dataframe_columnar_build_datetime_pyobj(__pyx_v_col, __pyx_v_plan->row_count, __pyx_v_col_name); if (unlikely(__pyx_t_10 == ((void *)NULL))) __PYX_ERR(0, 3659, __pyx_L11_error)
(__pyx_v_plan->pyobj_built[__pyx_v_i]) = __pyx_t_10;
3660: col, plan.row_count, col_name)
+3661: elif col.setup.source == col_source_t.col_source_bytes_pyobj:
break;
default: break;
}
+3662: plan.pyobj_built[i] = _dataframe_columnar_build_bytes_pyobj(
__pyx_t_10 = __pyx_f_7questdb_7_client__dataframe_columnar_build_bytes_pyobj(__pyx_v_col, __pyx_v_plan->row_count, __pyx_v_col_name); if (unlikely(__pyx_t_10 == ((void *)NULL))) __PYX_ERR(0, 3662, __pyx_L11_error)
(__pyx_v_plan->pyobj_built[__pyx_v_i]) = __pyx_t_10;
3663: col, plan.row_count, col_name)
+3664: except OverflowError as oe:
__pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_OverflowError)))); if (__pyx_t_11) { __Pyx_AddTraceback("questdb._client._dataframe_columnar_prebuild_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_12) < 0) __PYX_ERR(0, 3664, __pyx_L13_except_error) __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_5); __pyx_v_oe = __pyx_t_5; /*try:*/ { /* … */ /*finally:*/ { __pyx_L24_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __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_16); __pyx_t_16 = 0; __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_ExceptionSwap(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29); if ( unlikely(__Pyx_GetException(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26) < 0)) __Pyx_ErrFetch(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26); __Pyx_XGOTREF(__pyx_t_24); __Pyx_XGOTREF(__pyx_t_25); __Pyx_XGOTREF(__pyx_t_26); __Pyx_XGOTREF(__pyx_t_27); __Pyx_XGOTREF(__pyx_t_28); __Pyx_XGOTREF(__pyx_t_29); __pyx_t_11 = __pyx_lineno; __pyx_t_22 = __pyx_clineno; __pyx_t_23 = __pyx_filename; { __Pyx_DECREF(__pyx_v_oe); __pyx_v_oe = 0; } __Pyx_XGIVEREF(__pyx_t_27); __Pyx_XGIVEREF(__pyx_t_28); __Pyx_XGIVEREF(__pyx_t_29); __Pyx_ExceptionReset(__pyx_t_27, __pyx_t_28, __pyx_t_29); __Pyx_XGIVEREF(__pyx_t_24); __Pyx_XGIVEREF(__pyx_t_25); __Pyx_XGIVEREF(__pyx_t_26); __Pyx_ErrRestore(__pyx_t_24, __pyx_t_25, __pyx_t_26); __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0; __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_22; __pyx_filename = __pyx_t_23; goto __pyx_L13_except_error; } } }
+3665: raise QuestDBError(
__pyx_t_14 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3665, __pyx_L24_error)
__Pyx_GOTREF(__pyx_t_15);
+3666: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3666, __pyx_L24_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 3666, __pyx_L24_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+3667: f'Bad column {col_name!r}: {oe}') from oe
__pyx_t_16 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3667, __pyx_L24_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_18 = __Pyx_PyObject_FormatSimple(__pyx_v_oe, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3667, __pyx_L24_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_19[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_19[1] = __pyx_t_16; __pyx_t_19[2] = __pyx_mstate_global->__pyx_kp_u_; __pyx_t_19[3] = __pyx_t_18; __pyx_t_20 = __Pyx_PyUnicode_Join(__pyx_t_19, 4, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_16) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_18), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_16) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_18)); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 3667, __pyx_L24_error) __Pyx_GOTREF(__pyx_t_20); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_21 = 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_21 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_14, __pyx_t_17, __pyx_t_20}; __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_21, (3-__pyx_t_21) | (__pyx_t_21*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3665, __pyx_L24_error) __Pyx_GOTREF(__pyx_t_13); } __Pyx_Raise(__pyx_t_13, 0, 0, __pyx_v_oe); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __PYX_ERR(0, 3665, __pyx_L24_error) }
+3668: except UnicodeEncodeError as ue:
__pyx_t_22 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_UnicodeEncodeError)))); if (__pyx_t_22) { __Pyx_AddTraceback("questdb._client._dataframe_columnar_prebuild_pyobj", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(0, 3668, __pyx_L13_except_error) __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_v_ue = __pyx_t_5; /*try:*/ { /* … */ /*finally:*/ { __pyx_L35_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __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_16); __pyx_t_16 = 0; __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_25, &__pyx_t_24); if ( unlikely(__Pyx_GetException(&__pyx_t_29, &__pyx_t_28, &__pyx_t_27) < 0)) __Pyx_ErrFetch(&__pyx_t_29, &__pyx_t_28, &__pyx_t_27); __Pyx_XGOTREF(__pyx_t_29); __Pyx_XGOTREF(__pyx_t_28); __Pyx_XGOTREF(__pyx_t_27); __Pyx_XGOTREF(__pyx_t_26); __Pyx_XGOTREF(__pyx_t_25); __Pyx_XGOTREF(__pyx_t_24); __pyx_t_22 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_30 = __pyx_filename; { __Pyx_DECREF(__pyx_v_ue); __pyx_v_ue = 0; } __Pyx_XGIVEREF(__pyx_t_26); __Pyx_XGIVEREF(__pyx_t_25); __Pyx_XGIVEREF(__pyx_t_24); __Pyx_ExceptionReset(__pyx_t_26, __pyx_t_25, __pyx_t_24); __Pyx_XGIVEREF(__pyx_t_29); __Pyx_XGIVEREF(__pyx_t_28); __Pyx_XGIVEREF(__pyx_t_27); __Pyx_ErrRestore(__pyx_t_29, __pyx_t_28, __pyx_t_27); __pyx_t_29 = 0; __pyx_t_28 = 0; __pyx_t_27 = 0; __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_24 = 0; __pyx_lineno = __pyx_t_22; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_30; goto __pyx_L13_except_error; } } } goto __pyx_L13_except_error;
+3669: raise QuestDBError(
__pyx_t_15 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 3669, __pyx_L35_error)
__Pyx_GOTREF(__pyx_t_20);
+3670: QuestDBErrorCode.InvalidUtf8,
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 3670, __pyx_L35_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_InvalidUtf8); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3670, __pyx_L35_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+3671: f'Bad column {col_name!r}: {ue}') from ue
__pyx_t_17 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 3671, __pyx_L35_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_18 = __Pyx_PyObject_FormatSimple(__pyx_v_ue, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3671, __pyx_L35_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_19[0] = __pyx_mstate_global->__pyx_kp_u_Bad_column; __pyx_t_19[1] = __pyx_t_17; __pyx_t_19[2] = __pyx_mstate_global->__pyx_kp_u_; __pyx_t_19[3] = __pyx_t_18; __pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_19, 4, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_18), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_17) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_18)); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3671, __pyx_L35_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_21 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_20))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_20); assert(__pyx_t_15); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_20); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_20, __pyx__function); __pyx_t_21 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_15, __pyx_t_14, __pyx_t_16}; __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_20, __pyx_callargs+__pyx_t_21, (3-__pyx_t_21) | (__pyx_t_21*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3669, __pyx_L35_error) __Pyx_GOTREF(__pyx_t_13); } __Pyx_Raise(__pyx_t_13, 0, 0, __pyx_v_ue); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __PYX_ERR(0, 3669, __pyx_L35_error) }
3672:
3673:
+3674: cdef void_int _dataframe_columnar_append_pyobj_str(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_columnar_append_pyobj_str(struct qwp_chunk *__pyx_v_chunk, struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_v_prebuilt, size_t __pyx_v_row_offset, size_t __pyx_v_row_count) {
struct line_sender_error *__pyx_v_err;
struct qwp_validity __pyx_v_validity;
struct qwp_validity const *__pyx_v_validity_ptr;
int __pyx_v_ok;
int32_t *__pyx_v_offsets;
size_t __pyx_v_bytes_len;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_append_pyobj_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3675: qwp_chunk* chunk,
3676: col_t* col,
3677: pyobj_built_t* prebuilt,
3678: size_t row_offset,
3679: size_t row_count) except -1:
+3680: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
3681: cdef qwp_validity validity
+3682: cdef const qwp_validity* validity_ptr = NULL
__pyx_v_validity_ptr = NULL;
+3683: cdef bint ok = False
__pyx_v_ok = 0;
3684: cdef int32_t* offsets
3685: cdef size_t bytes_len
3686:
+3687: if prebuilt == NULL:
__pyx_t_1 = (__pyx_v_prebuilt == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3688: raise RuntimeError(
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_PyObject_str_column_missing_pre};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __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_2)) __PYX_ERR(0, 3688, __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(0, 3688, __pyx_L1_error)
3689: 'PyObject str column missing pre-built buffer; '
3690: 'prebuild phase did not run.')
+3691: if prebuilt.has_nulls:
if (__pyx_v_prebuilt->has_nulls) {
/* … */
}
+3692: if row_offset % 8 != 0:
__pyx_t_1 = ((__pyx_v_row_offset % 8) != 0);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3693: raise RuntimeError(
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_PyObject_str_column_with_nulls_r};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __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_2)) __PYX_ERR(0, 3693, __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(0, 3693, __pyx_L1_error)
3694: 'PyObject str column with nulls requires byte-aligned '
3695: 'chunk boundaries.')
+3696: validity.bits = prebuilt.validity + (row_offset // 8)
__pyx_v_validity.bits = (__pyx_v_prebuilt->validity + (__pyx_v_row_offset / 8));
+3697: validity.bit_len = row_count
__pyx_v_validity.bit_len = __pyx_v_row_count;
+3698: validity_ptr = &validity
__pyx_v_validity_ptr = (&__pyx_v_validity);
+3699: offsets = prebuilt.str_offsets + row_offset
__pyx_v_offsets = (__pyx_v_prebuilt->str_offsets + __pyx_v_row_offset);
+3700: bytes_len = prebuilt.str_bytes_len
__pyx_t_4 = __pyx_v_prebuilt->str_bytes_len; __pyx_v_bytes_len = __pyx_t_4;
+3701: 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:;
}
}
+3702: ok = qwp_chunk_column_str(
__pyx_v_ok = qwp_chunk_column_str(__pyx_v_chunk, __pyx_v_col->name.buf, __pyx_v_col->name.len, __pyx_v_offsets, __pyx_v_prebuilt->str_bytes, __pyx_v_bytes_len, __pyx_v_row_count, __pyx_v_validity_ptr, (&__pyx_v_err));
}
3703: chunk,
3704: col.name.buf,
3705: col.name.len,
3706: offsets,
3707: prebuilt.str_bytes,
3708: bytes_len,
3709: row_count,
3710: validity_ptr,
3711: &err)
+3712: if not ok:
__pyx_t_1 = (!__pyx_v_ok);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3713: raise 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(0, 3713, __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(0, 3713, __pyx_L1_error)
3714:
3715:
+3716: cdef void_int _dataframe_columnar_append_pyobj_simple(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_columnar_append_pyobj_simple(struct qwp_chunk *__pyx_v_chunk, struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_v_prebuilt, size_t __pyx_v_row_offset, size_t __pyx_v_row_count, size_t __pyx_v_elem_size, enum qwp_numpy_dtype __pyx_v_dtype) {
struct line_sender_error *__pyx_v_err;
struct qwp_validity __pyx_v_validity;
struct qwp_validity const *__pyx_v_validity_ptr;
int __pyx_v_ok;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_append_pyobj_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3717: qwp_chunk* chunk,
3718: col_t* col,
3719: pyobj_built_t* prebuilt,
3720: size_t row_offset,
3721: size_t row_count,
3722: size_t elem_size,
3723: qwp_numpy_dtype dtype) except -1:
+3724: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
3725: cdef qwp_validity validity
+3726: cdef const qwp_validity* validity_ptr = NULL
__pyx_v_validity_ptr = NULL;
+3727: cdef bint ok = False
__pyx_v_ok = 0;
3728:
+3729: if prebuilt == NULL:
__pyx_t_1 = (__pyx_v_prebuilt == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3730: raise RuntimeError('PyObject column missing pre-built buffer.')
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_PyObject_column_missing_pre_buil};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __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_2)) __PYX_ERR(0, 3730, __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(0, 3730, __pyx_L1_error)
+3731: if prebuilt.has_nulls:
if (__pyx_v_prebuilt->has_nulls) {
/* … */
}
+3732: if row_offset % 8 != 0:
__pyx_t_1 = ((__pyx_v_row_offset % 8) != 0);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3733: raise RuntimeError(
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_PyObject_column_with_nulls_requi};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __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_2)) __PYX_ERR(0, 3733, __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(0, 3733, __pyx_L1_error)
3734: 'PyObject column with nulls requires byte-aligned '
3735: 'chunk boundaries.')
+3736: validity.bits = prebuilt.validity + (row_offset // 8)
__pyx_v_validity.bits = (__pyx_v_prebuilt->validity + (__pyx_v_row_offset / 8));
+3737: validity.bit_len = row_count
__pyx_v_validity.bit_len = __pyx_v_row_count;
+3738: validity_ptr = &validity
__pyx_v_validity_ptr = (&__pyx_v_validity);
+3739: 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:;
}
}
+3740: ok = qwp_chunk_append_numpy_column(
__pyx_v_ok = qwp_chunk_append_numpy_column(__pyx_v_chunk, __pyx_v_col->name.buf, __pyx_v_col->name.len, __pyx_v_dtype, (((uint8_t const *)__pyx_v_prebuilt->data) + (__pyx_v_row_offset * __pyx_v_elem_size)), (__pyx_v_row_count * __pyx_v_elem_size), __pyx_v_row_count, __pyx_v_validity_ptr, NULL, (&__pyx_v_err));
}
3741: chunk,
3742: col.name.buf,
3743: col.name.len,
3744: dtype,
3745: (<const uint8_t*>prebuilt.data) + row_offset * elem_size,
3746: row_count * elem_size,
3747: row_count,
3748: validity_ptr,
3749: NULL,
3750: &err)
+3751: if not ok:
__pyx_t_1 = (!__pyx_v_ok);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3752: raise 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(0, 3752, __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(0, 3752, __pyx_L1_error)
3753:
3754:
+3755: cdef void_int _dataframe_columnar_append_pyobj_bytes(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_columnar_append_pyobj_bytes(struct qwp_chunk *__pyx_v_chunk, struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_v_prebuilt, size_t __pyx_v_row_offset, size_t __pyx_v_row_count) {
struct line_sender_error *__pyx_v_err;
struct qwp_validity __pyx_v_validity;
struct qwp_validity const *__pyx_v_validity_ptr;
int __pyx_v_ok;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_append_pyobj_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3756: qwp_chunk* chunk,
3757: col_t* col,
3758: pyobj_built_t* prebuilt,
3759: size_t row_offset,
3760: size_t row_count) except -1:
+3761: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
3762: cdef qwp_validity validity
+3763: cdef const qwp_validity* validity_ptr = NULL
__pyx_v_validity_ptr = NULL;
+3764: cdef bint ok = False
__pyx_v_ok = 0;
3765:
+3766: if prebuilt == NULL:
__pyx_t_1 = (__pyx_v_prebuilt == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3767: raise RuntimeError('PyObject bytes column missing pre-built buffer.')
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_PyObject_bytes_column_missing_pr};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __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_2)) __PYX_ERR(0, 3767, __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(0, 3767, __pyx_L1_error)
+3768: if prebuilt.has_nulls:
if (__pyx_v_prebuilt->has_nulls) {
/* … */
}
+3769: if row_offset % 8 != 0:
__pyx_t_1 = ((__pyx_v_row_offset % 8) != 0);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3770: raise RuntimeError(
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_PyObject_bytes_column_with_nulls};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __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_2)) __PYX_ERR(0, 3770, __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(0, 3770, __pyx_L1_error)
3771: 'PyObject bytes column with nulls requires byte-aligned '
3772: 'chunk boundaries.')
+3773: validity.bits = prebuilt.validity + (row_offset // 8)
__pyx_v_validity.bits = (__pyx_v_prebuilt->validity + (__pyx_v_row_offset / 8));
+3774: validity.bit_len = row_count
__pyx_v_validity.bit_len = __pyx_v_row_count;
+3775: validity_ptr = &validity
__pyx_v_validity_ptr = (&__pyx_v_validity);
+3776: 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:;
}
}
+3777: ok = qwp_chunk_column_binary(
__pyx_v_ok = qwp_chunk_column_binary(__pyx_v_chunk, __pyx_v_col->name.buf, __pyx_v_col->name.len, (__pyx_v_prebuilt->str_offsets + __pyx_v_row_offset), __pyx_v_prebuilt->str_bytes, __pyx_v_prebuilt->str_bytes_len, __pyx_v_row_count, __pyx_v_validity_ptr, (&__pyx_v_err));
}
3778: chunk,
3779: col.name.buf,
3780: col.name.len,
3781: prebuilt.str_offsets + row_offset,
3782: prebuilt.str_bytes,
3783: prebuilt.str_bytes_len,
3784: row_count,
3785: validity_ptr,
3786: &err)
+3787: if not ok:
__pyx_t_1 = (!__pyx_v_ok);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3788: raise 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(0, 3788, __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(0, 3788, __pyx_L1_error)
3789:
3790:
+3791: cdef void_int _dataframe_columnar_call_arrow_append(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_columnar_call_arrow_append(struct qwp_chunk *__pyx_v_chunk, struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, size_t __pyx_v_row_offset, size_t __pyx_v_row_count, struct __pyx_opt_args_7questdb_7_client__dataframe_columnar_call_arrow_append *__pyx_optional_args) {
enum qwp_symbol_mode __pyx_v_symbol_mode = __pyx_mstate_global->__pyx_k__25;
struct line_sender_error *__pyx_v_err;
int __pyx_v_ok;
struct qwp_arrow_import *__pyx_v_imported;
__pyx_t_7questdb_7_client_void_int __pyx_r;
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_symbol_mode = __pyx_optional_args->symbol_mode;
}
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_call_arrow_append", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_7questdb_7_client__dataframe_columnar_call_arrow_append {
int __pyx_n;
enum qwp_symbol_mode symbol_mode;
};
3792: qwp_chunk* chunk,
3793: col_t* col,
3794: size_t row_offset,
3795: size_t row_count,
3796: qwp_symbol_mode symbol_mode
+3797: =qwp_symbol_mode_auto) except -1:
__pyx_mstate_global->__pyx_k__25 = qwp_symbol_mode_auto;
+3798: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+3799: cdef bint ok = False
__pyx_v_ok = 0;
+3800: cdef qwp_arrow_import* imported = col.setup.arrow_import
__pyx_t_1 = __pyx_v_col->setup->arrow_import; __pyx_v_imported = __pyx_t_1;
+3801: 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:;
}
}
+3802: if imported == NULL:
__pyx_t_2 = (__pyx_v_imported == NULL);
if (__pyx_t_2) {
/* … */
}
+3803: imported = qwp_arrow_import_new(
__pyx_v_imported = qwp_arrow_import_new((&(__pyx_v_col->setup->chunks.chunks[0])), (&__pyx_v_col->setup->arrow_schema), __pyx_v_symbol_mode, (&__pyx_v_err));
3804: &col.setup.chunks.chunks[0],
3805: &col.setup.arrow_schema,
3806: symbol_mode,
3807: &err)
+3808: if imported != NULL:
__pyx_t_2 = (__pyx_v_imported != NULL);
if (__pyx_t_2) {
/* … */
}
}
+3809: ok = qwp_chunk_append_arrow_import(
__pyx_v_ok = qwp_chunk_append_arrow_import(__pyx_v_chunk, __pyx_v_col->name.buf, __pyx_v_col->name.len, __pyx_v_imported, __pyx_v_row_offset, __pyx_v_row_count, (&__pyx_v_err));
3810: chunk,
3811: col.name.buf,
3812: col.name.len,
3813: imported,
3814: row_offset,
3815: row_count,
3816: &err)
+3817: col.setup.arrow_import = imported
__pyx_v_col->setup->arrow_import = __pyx_v_imported;
+3818: if not ok:
__pyx_t_2 = (!__pyx_v_ok);
if (unlikely(__pyx_t_2)) {
/* … */
}
+3819: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3819, __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(0, 3819, __pyx_L1_error)
+3820: return 0
__pyx_r = 0; goto __pyx_L0;
3821:
3822:
+3823: cdef void_int _dataframe_columnar_append_field(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_columnar_append_field(struct qwp_chunk *__pyx_v_chunk, struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_v_prebuilt, size_t __pyx_v_row_offset, size_t __pyx_v_row_count) {
struct line_sender_error *__pyx_v_err;
struct ArrowArray *__pyx_v_arr;
void const *__pyx_v_data;
struct qwp_validity __pyx_v_validity;
struct qwp_validity const *__pyx_v_validity_ptr;
int __pyx_v_ok;
enum qwp_numpy_dtype __pyx_v_numpy_dtype;
size_t __pyx_v_element_size;
struct qwp_numpy_extras __pyx_v_extras;
struct qwp_numpy_extras const *__pyx_v_extras_ptr;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_append_field", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3824: qwp_chunk* chunk,
3825: col_t* col,
3826: pyobj_built_t* prebuilt,
3827: size_t row_offset,
3828: size_t row_count) except -1:
+3829: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+3830: cdef ArrowArray* arr = &col.setup.chunks.chunks[0]
__pyx_v_arr = (&(__pyx_v_col->setup->chunks.chunks[0]));
3831: cdef ArrowArray* dictionary
+3832: cdef const void* data = arr.buffers[1]
__pyx_v_data = (__pyx_v_arr->buffers[1]);
3833: cdef int32_t* offsets
3834: cdef int32_t* dict_offsets
3835: cdef size_t bytes_len
3836: cdef size_t dict_offsets_len
3837: cdef size_t dict_bytes_len
3838: cdef qwp_validity validity
3839: cdef const qwp_validity* validity_ptr = (
+3840: _dataframe_columnar_validity(arr, row_offset, row_count, &validity))
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_validity(__pyx_v_arr, __pyx_v_row_offset, __pyx_v_row_count, (&__pyx_v_validity)); if (unlikely(__pyx_t_1 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3840, __pyx_L1_error) __pyx_v_validity_ptr = __pyx_t_1;
+3841: cdef bint ok = False
__pyx_v_ok = 0;
3842:
3843: cdef qwp_numpy_dtype numpy_dtype
3844: cdef size_t element_size
3845: cdef qwp_numpy_extras extras
3846: cdef const qwp_numpy_extras* extras_ptr
3847:
+3848: if col.setup.target == col_target_t.col_target_column_bool:
switch (__pyx_v_col->setup->target) {
case __pyx_e_7questdb_7_client_col_target_column_bool:
/* … */
break;
case __pyx_e_7questdb_7_client_col_target_column_i64:
+3849: if col.setup.source == col_source_t.col_source_bool_pyobj:
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_bool_pyobj:
/* … */
break;
case __pyx_e_7questdb_7_client_col_source_bool_numpy:
+3850: if prebuilt == NULL:
__pyx_t_2 = (__pyx_v_prebuilt == NULL);
if (unlikely(__pyx_t_2)) {
/* … */
}
+3851: raise RuntimeError(
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_PyObject_bool_column_missing_pre};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3851, __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(0, 3851, __pyx_L1_error)
3852: 'PyObject bool column missing pre-built bitmap.')
+3853: if row_offset % 8 != 0:
__pyx_t_2 = ((__pyx_v_row_offset % 8) != 0);
if (unlikely(__pyx_t_2)) {
/* … */
}
+3854: raise RuntimeError(
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_PyObject_bool_column_requires_by};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3854, __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(0, 3854, __pyx_L1_error)
3855: 'PyObject bool column requires byte-aligned chunk boundaries.')
+3856: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L7;
}
__pyx_L7:;
}
}
+3857: ok = qwp_chunk_column_bool(
__pyx_v_ok = qwp_chunk_column_bool(__pyx_v_chunk, __pyx_v_col->name.buf, __pyx_v_col->name.len, (((uint8_t const *)__pyx_v_prebuilt->data) + (__pyx_v_row_offset / 8)), __pyx_v_row_count, NULL, (&__pyx_v_err));
}
3858: chunk,
3859: col.name.buf,
3860: col.name.len,
3861: (<const uint8_t*>prebuilt.data) + (row_offset // 8),
3862: row_count,
3863: NULL,
3864: &err)
+3865: elif col.setup.source == col_source_t.col_source_bool_numpy:
break;
default:
3866: # NumPy bool is byte-per-row; Rust packs to LSB-bitmap
3867: # inside qwp_chunk_append_numpy_column.
+3868: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L10;
}
__pyx_L10:;
}
}
+3869: ok = qwp_chunk_append_numpy_column(
__pyx_v_ok = qwp_chunk_append_numpy_column(__pyx_v_chunk, __pyx_v_col->name.buf, __pyx_v_col->name.len, qwp_numpy_bool, (((uint8_t const *)__pyx_v_data) + __pyx_v_row_offset), __pyx_v_row_count, __pyx_v_row_count, __pyx_v_validity_ptr, NULL, (&__pyx_v_err));
}
3870: chunk,
3871: col.name.buf,
3872: col.name.len,
3873: qwp_numpy_dtype.qwp_numpy_bool,
3874: (<const uint8_t*>data) + row_offset,
3875: row_count,
3876: row_count,
3877: validity_ptr,
3878: NULL,
3879: &err)
3880: else:
+3881: raise RuntimeError('Unsupported columnar bool source.')
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Unsupported_columnar_bool_source};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3881, __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(0, 3881, __pyx_L1_error)
break;
}
+3882: elif col.setup.target == col_target_t.col_target_column_i64:
break;
case __pyx_e_7questdb_7_client_col_target_column_f64:
+3883: if col.setup.source == col_source_t.col_source_int_pyobj:
__pyx_t_2 = (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_int_pyobj);
if (__pyx_t_2) {
/* … */
goto __pyx_L11;
}
+3884: if prebuilt == NULL:
__pyx_t_2 = (__pyx_v_prebuilt == NULL);
if (unlikely(__pyx_t_2)) {
/* … */
}
+3885: raise RuntimeError(
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_PyObject_int_column_missing_pre};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3885, __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(0, 3885, __pyx_L1_error)
3886: 'PyObject int column missing pre-built buffer.')
+3887: if prebuilt.has_nulls and row_offset % 8 != 0:
if (__pyx_v_prebuilt->has_nulls) {
} else {
__pyx_t_2 = __pyx_v_prebuilt->has_nulls;
goto __pyx_L14_bool_binop_done;
}
__pyx_t_6 = ((__pyx_v_row_offset % 8) != 0);
__pyx_t_2 = __pyx_t_6;
__pyx_L14_bool_binop_done:;
if (unlikely(__pyx_t_2)) {
/* … */
}
+3888: raise RuntimeError(
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_PyObject_int_column_with_nulls_r};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3888, __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(0, 3888, __pyx_L1_error)
3889: 'PyObject int column with nulls requires byte-aligned '
3890: 'chunk boundaries.')
+3891: if prebuilt.has_nulls:
if (__pyx_v_prebuilt->has_nulls) {
/* … */
goto __pyx_L16;
}
+3892: validity.bits = prebuilt.validity + (row_offset // 8)
__pyx_v_validity.bits = (__pyx_v_prebuilt->validity + (__pyx_v_row_offset / 8));
+3893: validity.bit_len = row_count
__pyx_v_validity.bit_len = __pyx_v_row_count;
+3894: validity_ptr = &validity
__pyx_v_validity_ptr = (&__pyx_v_validity);
3895: else:
+3896: validity_ptr = NULL
/*else*/ {
__pyx_v_validity_ptr = NULL;
}
__pyx_L16:;
+3897: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L19;
}
__pyx_L19:;
}
}
+3898: ok = qwp_chunk_append_numpy_column(
__pyx_v_ok = qwp_chunk_append_numpy_column(__pyx_v_chunk, __pyx_v_col->name.buf, __pyx_v_col->name.len, qwp_numpy_i64, (((uint8_t const *)__pyx_v_prebuilt->data) + (__pyx_v_row_offset * 8)), (__pyx_v_row_count * 8), __pyx_v_row_count, __pyx_v_validity_ptr, NULL, (&__pyx_v_err));
}
3899: chunk,
3900: col.name.buf,
3901: col.name.len,
3902: qwp_numpy_dtype.qwp_numpy_i64,
3903: (<const uint8_t*>prebuilt.data) + row_offset * 8,
3904: row_count * 8,
3905: row_count,
3906: validity_ptr,
3907: NULL,
3908: &err)
3909: else:
3910: # Rust widens narrow ints to a sentinel-safe wire (i8/i16 → INT,
3911: # i32/u32/u64 → LONG); see questdb-rs NumpyDtype::*WidenTo*.
+3912: if col.setup.source in (
/*else*/ {
/* … */
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_i64_numpy:
/* … */
break;
case __pyx_e_7questdb_7_client_col_source_i8_numpy:
+3913: col_source_t.col_source_i64_numpy,
case __pyx_e_7questdb_7_client_col_source_i64_arrow:
3914: col_source_t.col_source_i64_arrow):
+3915: numpy_dtype = qwp_numpy_dtype.qwp_numpy_i64
__pyx_v_numpy_dtype = qwp_numpy_i64;
+3916: element_size = 8
__pyx_v_element_size = 8;
+3917: elif col.setup.source == col_source_t.col_source_i8_numpy:
break;
case __pyx_e_7questdb_7_client_col_source_i16_numpy:
+3918: numpy_dtype = qwp_numpy_dtype.qwp_numpy_i8
__pyx_v_numpy_dtype = qwp_numpy_i8;
+3919: element_size = 1
__pyx_v_element_size = 1;
+3920: elif col.setup.source == col_source_t.col_source_i16_numpy:
break;
case __pyx_e_7questdb_7_client_col_source_i32_numpy:
+3921: numpy_dtype = qwp_numpy_dtype.qwp_numpy_i16
__pyx_v_numpy_dtype = qwp_numpy_i16;
+3922: element_size = 2
__pyx_v_element_size = 2;
+3923: elif col.setup.source == col_source_t.col_source_i32_numpy:
break;
case __pyx_e_7questdb_7_client_col_source_u8_numpy:
+3924: numpy_dtype = qwp_numpy_dtype.qwp_numpy_i32
__pyx_v_numpy_dtype = qwp_numpy_i32;
+3925: element_size = 4
__pyx_v_element_size = 4;
+3926: elif col.setup.source == col_source_t.col_source_u8_numpy:
break;
case __pyx_e_7questdb_7_client_col_source_u16_numpy:
+3927: numpy_dtype = qwp_numpy_dtype.qwp_numpy_u8
__pyx_v_numpy_dtype = qwp_numpy_u8;
+3928: element_size = 1
__pyx_v_element_size = 1;
+3929: elif col.setup.source == col_source_t.col_source_u16_numpy:
break;
case __pyx_e_7questdb_7_client_col_source_u32_numpy:
+3930: numpy_dtype = qwp_numpy_dtype.qwp_numpy_u16
__pyx_v_numpy_dtype = qwp_numpy_u16;
+3931: element_size = 2
__pyx_v_element_size = 2;
+3932: elif col.setup.source in (
break;
case __pyx_e_7questdb_7_client_col_source_u64_numpy:
+3933: col_source_t.col_source_u32_numpy,
case __pyx_e_7questdb_7_client_col_source_u32_arrow:
3934: col_source_t.col_source_u32_arrow):
+3935: numpy_dtype = qwp_numpy_dtype.qwp_numpy_u32
__pyx_v_numpy_dtype = qwp_numpy_u32;
+3936: element_size = 4
__pyx_v_element_size = 4;
+3937: elif col.setup.source == col_source_t.col_source_u64_numpy:
break;
default:
+3938: numpy_dtype = qwp_numpy_dtype.qwp_numpy_u64
__pyx_v_numpy_dtype = qwp_numpy_u64;
+3939: element_size = 8
__pyx_v_element_size = 8;
3940: else:
+3941: raise RuntimeError('Unsupported columnar int source.')
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Unsupported_columnar_int_source};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3941, __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(0, 3941, __pyx_L1_error)
break;
}
+3942: extras_ptr = NULL
__pyx_v_extras_ptr = NULL;
+3943: if col.setup.has_override:
if (__pyx_v_col->setup->has_override) {
/* … */
}
+3944: numpy_dtype = col.setup.override_dtype
__pyx_t_7 = __pyx_v_col->setup->override_dtype;
__pyx_v_numpy_dtype = __pyx_t_7;
+3945: if (numpy_dtype
switch (__pyx_v_numpy_dtype) {
case qwp_numpy_geohash_i8:
/* … */
break;
default: break;
}
+3946: == qwp_numpy_dtype.qwp_numpy_geohash_i8
case qwp_numpy_geohash_i16:
3947: or numpy_dtype
+3948: == qwp_numpy_dtype.qwp_numpy_geohash_i16
case qwp_numpy_geohash_i32:
3949: or numpy_dtype
+3950: == qwp_numpy_dtype.qwp_numpy_geohash_i32
case qwp_numpy_geohash_i64:
3951: or numpy_dtype
3952: == qwp_numpy_dtype.qwp_numpy_geohash_i64):
+3953: memset(&extras, 0, sizeof(qwp_numpy_extras))
(void)(memset((&__pyx_v_extras), 0, (sizeof(struct qwp_numpy_extras))));
+3954: extras.geohash_bits = col.setup.override_geohash_bits
__pyx_t_8 = __pyx_v_col->setup->override_geohash_bits;
__pyx_v_extras.geohash_bits = __pyx_t_8;
+3955: extras_ptr = &extras
__pyx_v_extras_ptr = (&__pyx_v_extras);
+3956: 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:;
}
}
}
__pyx_L11:;
+3957: ok = qwp_chunk_append_numpy_column(
__pyx_v_ok = qwp_chunk_append_numpy_column(__pyx_v_chunk, __pyx_v_col->name.buf, __pyx_v_col->name.len, __pyx_v_numpy_dtype, (((uint8_t const *)__pyx_v_data) + (__pyx_v_row_offset * __pyx_v_element_size)), (__pyx_v_row_count * __pyx_v_element_size), __pyx_v_row_count, __pyx_v_validity_ptr, __pyx_v_extras_ptr, (&__pyx_v_err));
}
3958: chunk,
3959: col.name.buf,
3960: col.name.len,
3961: numpy_dtype,
3962: (<const uint8_t*>data) + row_offset * element_size,
3963: row_count * element_size,
3964: row_count,
3965: validity_ptr,
3966: extras_ptr,
3967: &err)
+3968: elif col.setup.target == col_target_t.col_target_column_f64:
break;
case __pyx_e_7questdb_7_client_col_target_column_ts:
+3969: if col.setup.source in (
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_f64_numpy:
/* … */
break;
case __pyx_e_7questdb_7_client_col_source_f32_numpy:
+3970: col_source_t.col_source_f64_numpy,
case __pyx_e_7questdb_7_client_col_source_f64_arrow:
3971: col_source_t.col_source_f64_arrow):
+3972: numpy_dtype = qwp_numpy_dtype.qwp_numpy_f64
__pyx_v_numpy_dtype = qwp_numpy_f64;
+3973: element_size = 8
__pyx_v_element_size = 8;
+3974: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L26;
}
__pyx_L26:;
}
}
+3975: ok = qwp_chunk_append_numpy_column(
__pyx_v_ok = qwp_chunk_append_numpy_column(__pyx_v_chunk, __pyx_v_col->name.buf, __pyx_v_col->name.len, __pyx_v_numpy_dtype, (((uint8_t const *)__pyx_v_data) + (__pyx_v_row_offset * __pyx_v_element_size)), (__pyx_v_row_count * __pyx_v_element_size), __pyx_v_row_count, __pyx_v_validity_ptr, NULL, (&__pyx_v_err));
}
3976: chunk,
3977: col.name.buf,
3978: col.name.len,
3979: numpy_dtype,
3980: (<const uint8_t*>data) + row_offset * element_size,
3981: row_count * element_size,
3982: row_count,
3983: validity_ptr,
3984: NULL,
3985: &err)
+3986: elif col.setup.source == col_source_t.col_source_f32_numpy:
break;
case __pyx_e_7questdb_7_client_col_source_float_pyobj:
3987: # numpy f32 maps directly to a FLOAT column on the wire; the
3988: # source stride is 4 bytes per row.
+3989: numpy_dtype = qwp_numpy_dtype.qwp_numpy_f32
__pyx_v_numpy_dtype = qwp_numpy_f32;
+3990: element_size = 4
__pyx_v_element_size = 4;
+3991: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L29;
}
__pyx_L29:;
}
}
+3992: ok = qwp_chunk_append_numpy_column(
__pyx_v_ok = qwp_chunk_append_numpy_column(__pyx_v_chunk, __pyx_v_col->name.buf, __pyx_v_col->name.len, __pyx_v_numpy_dtype, (((uint8_t const *)__pyx_v_data) + (__pyx_v_row_offset * __pyx_v_element_size)), (__pyx_v_row_count * __pyx_v_element_size), __pyx_v_row_count, __pyx_v_validity_ptr, NULL, (&__pyx_v_err));
}
3993: chunk,
3994: col.name.buf,
3995: col.name.len,
3996: numpy_dtype,
3997: (<const uint8_t*>data) + row_offset * element_size,
3998: row_count * element_size,
3999: row_count,
4000: validity_ptr,
4001: NULL,
4002: &err)
+4003: elif col.setup.source == col_source_t.col_source_float_pyobj:
break;
default:
+4004: if prebuilt == NULL:
__pyx_t_2 = (__pyx_v_prebuilt == NULL);
if (unlikely(__pyx_t_2)) {
/* … */
}
+4005: raise RuntimeError(
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_PyObject_float_column_missing_pr};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4005, __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(0, 4005, __pyx_L1_error)
4006: 'PyObject float column missing pre-built buffer.')
+4007: if prebuilt.has_nulls and row_offset % 8 != 0:
if (__pyx_v_prebuilt->has_nulls) {
} else {
__pyx_t_2 = __pyx_v_prebuilt->has_nulls;
goto __pyx_L32_bool_binop_done;
}
__pyx_t_6 = ((__pyx_v_row_offset % 8) != 0);
__pyx_t_2 = __pyx_t_6;
__pyx_L32_bool_binop_done:;
if (unlikely(__pyx_t_2)) {
/* … */
}
+4008: raise RuntimeError(
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_PyObject_float_column_with_nulls};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4008, __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(0, 4008, __pyx_L1_error)
4009: 'PyObject float column with nulls requires byte-aligned '
4010: 'chunk boundaries.')
+4011: if prebuilt.has_nulls:
if (__pyx_v_prebuilt->has_nulls) {
/* … */
goto __pyx_L34;
}
+4012: validity.bits = prebuilt.validity + (row_offset // 8)
__pyx_v_validity.bits = (__pyx_v_prebuilt->validity + (__pyx_v_row_offset / 8));
+4013: validity.bit_len = row_count
__pyx_v_validity.bit_len = __pyx_v_row_count;
+4014: validity_ptr = &validity
__pyx_v_validity_ptr = (&__pyx_v_validity);
4015: else:
+4016: validity_ptr = NULL
/*else*/ {
__pyx_v_validity_ptr = NULL;
}
__pyx_L34:;
+4017: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L37;
}
__pyx_L37:;
}
}
+4018: ok = qwp_chunk_append_numpy_column(
__pyx_v_ok = qwp_chunk_append_numpy_column(__pyx_v_chunk, __pyx_v_col->name.buf, __pyx_v_col->name.len, qwp_numpy_f64, (((uint8_t const *)__pyx_v_prebuilt->data) + (__pyx_v_row_offset * 8)), (__pyx_v_row_count * 8), __pyx_v_row_count, __pyx_v_validity_ptr, NULL, (&__pyx_v_err));
}
4019: chunk,
4020: col.name.buf,
4021: col.name.len,
4022: qwp_numpy_dtype.qwp_numpy_f64,
4023: (<const uint8_t*>prebuilt.data) + row_offset * 8,
4024: row_count * 8,
4025: row_count,
4026: validity_ptr,
4027: NULL,
4028: &err)
4029: else:
+4030: raise RuntimeError('Unsupported columnar float source.')
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Unsupported_columnar_float_sourc};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4030, __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(0, 4030, __pyx_L1_error)
break;
}
+4031: elif col.setup.target == col_target_t.col_target_column_ts:
break;
case __pyx_e_7questdb_7_client_col_target_column_i8:
+4032: if col.setup.source == col_source_t.col_source_dt64ns_numpy:
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_dt64ns_numpy:
/* … */
break;
case __pyx_e_7questdb_7_client_col_source_dt64us_numpy:
+4033: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L40;
}
__pyx_L40:;
}
}
+4034: ok = qwp_chunk_append_numpy_column(
__pyx_v_ok = qwp_chunk_append_numpy_column(__pyx_v_chunk, __pyx_v_col->name.buf, __pyx_v_col->name.len, qwp_numpy_datetime64_ns, (((uint8_t const *)__pyx_v_data) + (__pyx_v_row_offset * 8)), (__pyx_v_row_count * 8), __pyx_v_row_count, __pyx_v_validity_ptr, NULL, (&__pyx_v_err));
}
4035: chunk,
4036: col.name.buf,
4037: col.name.len,
4038: qwp_numpy_dtype.qwp_numpy_datetime64_ns,
4039: (<const uint8_t*>data) + row_offset * 8,
4040: row_count * 8,
4041: row_count,
4042: validity_ptr,
4043: NULL,
4044: &err)
+4045: elif col.setup.source == col_source_t.col_source_dt64us_numpy:
break;
case __pyx_e_7questdb_7_client_col_source_dt64ns_tz_arrow:
+4046: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L43;
}
__pyx_L43:;
}
}
+4047: ok = qwp_chunk_append_numpy_column(
__pyx_v_ok = qwp_chunk_append_numpy_column(__pyx_v_chunk, __pyx_v_col->name.buf, __pyx_v_col->name.len, qwp_numpy_datetime64_us, (((uint8_t const *)__pyx_v_data) + (__pyx_v_row_offset * 8)), (__pyx_v_row_count * 8), __pyx_v_row_count, __pyx_v_validity_ptr, NULL, (&__pyx_v_err));
}
4048: chunk,
4049: col.name.buf,
4050: col.name.len,
4051: qwp_numpy_dtype.qwp_numpy_datetime64_us,
4052: (<const uint8_t*>data) + row_offset * 8,
4053: row_count * 8,
4054: row_count,
4055: validity_ptr,
4056: NULL,
4057: &err)
+4058: elif col.setup.source in (
break;
case __pyx_e_7questdb_7_client_col_source_datetime_pyobj:
+4059: col_source_t.col_source_dt64ns_tz_arrow,
case __pyx_e_7questdb_7_client_col_source_dt64us_tz_arrow:
4060: col_source_t.col_source_dt64us_tz_arrow):
+4061: _dataframe_columnar_call_arrow_append(
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe_columnar_call_arrow_append(__pyx_v_chunk, __pyx_v_col, __pyx_v_row_offset, __pyx_v_row_count, NULL); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4061, __pyx_L1_error)
4062: chunk, col, row_offset, row_count)
+4063: return 0
__pyx_r = 0;
goto __pyx_L0;
+4064: elif col.setup.source == col_source_t.col_source_datetime_pyobj:
break;
default:
+4065: _dataframe_columnar_append_pyobj_simple(
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe_columnar_append_pyobj_simple(__pyx_v_chunk, __pyx_v_col, __pyx_v_prebuilt, __pyx_v_row_offset, __pyx_v_row_count, 8, qwp_numpy_datetime64_us); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4065, __pyx_L1_error)
4066: chunk, col, prebuilt, row_offset, row_count, 8,
4067: qwp_numpy_dtype.qwp_numpy_datetime64_us)
+4068: return 0
__pyx_r = 0;
goto __pyx_L0;
4069: else:
+4070: raise RuntimeError('Unsupported columnar timestamp field source.')
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Unsupported_columnar_timestamp_f};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4070, __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(0, 4070, __pyx_L1_error)
break;
}
+4071: elif col.setup.target in (
break;
case __pyx_e_7questdb_7_client_col_target_column_uuid:
+4072: col_target_t.col_target_column_i8,
case __pyx_e_7questdb_7_client_col_target_column_i16:
+4073: col_target_t.col_target_column_i16,
case __pyx_e_7questdb_7_client_col_target_column_i32:
+4074: col_target_t.col_target_column_i32,
case __pyx_e_7questdb_7_client_col_target_column_f32:
+4075: col_target_t.col_target_column_f32,
case __pyx_e_7questdb_7_client_col_target_column_long256:
4076: col_target_t.col_target_column_long256):
+4077: _dataframe_columnar_call_arrow_append(
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe_columnar_call_arrow_append(__pyx_v_chunk, __pyx_v_col, __pyx_v_row_offset, __pyx_v_row_count, NULL); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4077, __pyx_L1_error)
4078: chunk, col, row_offset, row_count)
+4079: return 0
__pyx_r = 0;
goto __pyx_L0;
+4080: elif col.setup.target == col_target_t.col_target_column_uuid:
break;
case __pyx_e_7questdb_7_client_col_target_column_ipv4:
+4081: if col.setup.source == col_source_t.col_source_uuid_pyobj:
__pyx_t_2 = (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_uuid_pyobj);
if (__pyx_t_2) {
/* … */
}
+4082: _dataframe_columnar_append_pyobj_simple(
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe_columnar_append_pyobj_simple(__pyx_v_chunk, __pyx_v_col, __pyx_v_prebuilt, __pyx_v_row_offset, __pyx_v_row_count, 16, qwp_numpy_s16); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4082, __pyx_L1_error)
4083: chunk, col, prebuilt, row_offset, row_count, 16,
4084: qwp_numpy_dtype.qwp_numpy_s16)
+4085: return 0
__pyx_r = 0;
goto __pyx_L0;
+4086: _dataframe_columnar_call_arrow_append(
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe_columnar_call_arrow_append(__pyx_v_chunk, __pyx_v_col, __pyx_v_row_offset, __pyx_v_row_count, NULL); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4086, __pyx_L1_error)
4087: chunk, col, row_offset, row_count)
+4088: return 0
__pyx_r = 0;
goto __pyx_L0;
+4089: elif col.setup.target == col_target_t.col_target_column_ipv4:
break;
case __pyx_e_7questdb_7_client_col_target_column_binary:
+4090: if col.setup.source == col_source_t.col_source_ipv4_pyobj:
__pyx_t_2 = (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_ipv4_pyobj);
if (__pyx_t_2) {
/* … */
}
+4091: _dataframe_columnar_append_pyobj_simple(
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe_columnar_append_pyobj_simple(__pyx_v_chunk, __pyx_v_col, __pyx_v_prebuilt, __pyx_v_row_offset, __pyx_v_row_count, 4, qwp_numpy_u32_ipv4); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4091, __pyx_L1_error)
4092: chunk, col, prebuilt, row_offset, row_count, 4,
4093: qwp_numpy_dtype.qwp_numpy_u32_ipv4)
+4094: return 0
__pyx_r = 0;
goto __pyx_L0;
+4095: _dataframe_columnar_call_arrow_append(
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe_columnar_call_arrow_append(__pyx_v_chunk, __pyx_v_col, __pyx_v_row_offset, __pyx_v_row_count, NULL); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4095, __pyx_L1_error)
4096: chunk, col, row_offset, row_count)
+4097: return 0
__pyx_r = 0;
goto __pyx_L0;
+4098: elif col.setup.target == col_target_t.col_target_column_binary:
break;
case __pyx_e_7questdb_7_client_col_target_column_str:
+4099: if col.setup.source == col_source_t.col_source_bytes_pyobj:
__pyx_t_2 = (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_bytes_pyobj);
if (__pyx_t_2) {
/* … */
}
+4100: _dataframe_columnar_append_pyobj_bytes(
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe_columnar_append_pyobj_bytes(__pyx_v_chunk, __pyx_v_col, __pyx_v_prebuilt, __pyx_v_row_offset, __pyx_v_row_count); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4100, __pyx_L1_error)
4101: chunk, col, prebuilt, row_offset, row_count)
+4102: return 0
__pyx_r = 0;
goto __pyx_L0;
+4103: raise RuntimeError('Unsupported columnar binary field source.')
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Unsupported_columnar_binary_fiel};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4103, __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(0, 4103, __pyx_L1_error)
+4104: elif col.setup.target == col_target_t.col_target_column_str:
break;
case __pyx_e_7questdb_7_client_col_target_symbol:
+4105: if col.setup.source == col_source_t.col_source_str_pyobj:
__pyx_t_2 = (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_str_pyobj);
if (__pyx_t_2) {
/* … */
}
+4106: _dataframe_columnar_append_pyobj_str(
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe_columnar_append_pyobj_str(__pyx_v_chunk, __pyx_v_col, __pyx_v_prebuilt, __pyx_v_row_offset, __pyx_v_row_count); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4106, __pyx_L1_error)
4107: chunk, col, prebuilt, row_offset, row_count)
+4108: return 0 # err already raised inside on failure
__pyx_r = 0;
goto __pyx_L0;
+4109: if col.setup.source in (
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_str_i8_cat:
/* … */
break;
default: break;
}
+4110: col_source_t.col_source_str_i8_cat,
case __pyx_e_7questdb_7_client_col_source_str_i16_cat:
+4111: col_source_t.col_source_str_i16_cat,
case __pyx_e_7questdb_7_client_col_source_str_i32_cat:
4112: col_source_t.col_source_str_i32_cat):
+4113: _dataframe_columnar_call_arrow_append(
__pyx_t_10.__pyx_n = 1;
__pyx_t_10.symbol_mode = qwp_symbol_mode_not_symbol;
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe_columnar_call_arrow_append(__pyx_v_chunk, __pyx_v_col, __pyx_v_row_offset, __pyx_v_row_count, &__pyx_t_10); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4113, __pyx_L1_error)
4114: chunk, col, row_offset, row_count,
4115: qwp_symbol_mode_not_symbol)
+4116: return 0
__pyx_r = 0;
goto __pyx_L0;
+4117: _dataframe_columnar_call_arrow_append(
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe_columnar_call_arrow_append(__pyx_v_chunk, __pyx_v_col, __pyx_v_row_offset, __pyx_v_row_count, NULL); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4117, __pyx_L1_error)
4118: chunk, col, row_offset, row_count)
+4119: return 0
__pyx_r = 0;
goto __pyx_L0;
+4120: elif col.setup.target == col_target_t.col_target_symbol:
break;
case __pyx_e_7questdb_7_client_col_target_column_arrow:
+4121: _dataframe_columnar_call_arrow_append(
__pyx_t_10.__pyx_n = 1;
__pyx_t_10.symbol_mode = qwp_symbol_mode_symbol;
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe_columnar_call_arrow_append(__pyx_v_chunk, __pyx_v_col, __pyx_v_row_offset, __pyx_v_row_count, &__pyx_t_10); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4121, __pyx_L1_error)
4122: chunk, col, row_offset, row_count,
4123: qwp_symbol_mode_symbol)
+4124: return 0
__pyx_r = 0;
goto __pyx_L0;
+4125: elif col.setup.target == col_target_t.col_target_column_arrow:
break;
case __pyx_e_7questdb_7_client_col_target_column_decimal:
+4126: _dataframe_columnar_call_arrow_append(
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe_columnar_call_arrow_append(__pyx_v_chunk, __pyx_v_col, __pyx_v_row_offset, __pyx_v_row_count, NULL); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4126, __pyx_L1_error)
4127: chunk, col, row_offset, row_count)
+4128: return 0
__pyx_r = 0;
goto __pyx_L0;
+4129: elif col.setup.target == col_target_t.col_target_column_decimal:
break;
default:
+4130: _dataframe_columnar_call_arrow_append(
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe_columnar_call_arrow_append(__pyx_v_chunk, __pyx_v_col, __pyx_v_row_offset, __pyx_v_row_count, NULL); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4130, __pyx_L1_error)
4131: chunk, col, row_offset, row_count)
+4132: return 0
__pyx_r = 0;
goto __pyx_L0;
4133: else:
+4134: raise RuntimeError('Unsupported columnar field target.')
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Unsupported_columnar_field_targe};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4134, __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(0, 4134, __pyx_L1_error)
break;
}
4135:
+4136: if not ok:
__pyx_t_2 = (!__pyx_v_ok);
if (unlikely(__pyx_t_2)) {
/* … */
}
+4137: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4137, __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(0, 4137, __pyx_L1_error)
4138:
4139:
+4140: cdef void_int _dataframe_columnar_append_at(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_columnar_append_at(struct qwp_chunk *__pyx_v_chunk, struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col, struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_v_prebuilt, size_t __pyx_v_row_offset, size_t __pyx_v_row_count) {
struct line_sender_error *__pyx_v_err;
int64_t const *__pyx_v_data;
int __pyx_v_ok;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_append_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4141: qwp_chunk* chunk,
4142: col_t* col,
4143: pyobj_built_t* prebuilt,
4144: size_t row_offset,
4145: size_t row_count) except -1:
+4146: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
4147: cdef const int64_t* data
+4148: cdef bint ok = False
__pyx_v_ok = 0;
4149:
+4150: if col.setup.source == col_source_t.col_source_datetime_pyobj:
__pyx_t_1 = (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_datetime_pyobj);
if (__pyx_t_1) {
/* … */
}
+4151: if prebuilt == NULL:
__pyx_t_1 = (__pyx_v_prebuilt == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+4152: raise RuntimeError(
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_PyObject_datetime_designated_TS};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __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_2)) __PYX_ERR(0, 4152, __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(0, 4152, __pyx_L1_error)
4153: 'PyObject datetime designated TS missing pre-built buffer.')
+4154: if prebuilt.has_nulls:
if (unlikely(__pyx_v_prebuilt->has_nulls)) {
/* … */
}
+4155: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4155, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+4156: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_4 = 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_4 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Designated_timestamp_column_cann}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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(0, 4155, __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(0, 4155, __pyx_L1_error)
4157: 'Designated timestamp column cannot contain nulls.')
+4158: data = <const int64_t*>prebuilt.data
__pyx_v_data = ((int64_t const *)__pyx_v_prebuilt->data);
+4159: 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:;
}
}
+4160: ok = qwp_chunk_at_micros(
__pyx_v_ok = qwp_chunk_at_micros(__pyx_v_chunk, (__pyx_v_data + __pyx_v_row_offset), __pyx_v_row_count, (&__pyx_v_err));
}
4161: chunk,
4162: data + row_offset,
4163: row_count,
4164: &err)
+4165: if not ok:
__pyx_t_1 = (!__pyx_v_ok);
if (unlikely(__pyx_t_1)) {
/* … */
}
+4166: raise 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(0, 4166, __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(0, 4166, __pyx_L1_error)
+4167: return 0
__pyx_r = 0;
goto __pyx_L0;
4168:
+4169: data = <const int64_t*>(col.setup.chunks.chunks[0].buffers[1])
__pyx_v_data = ((int64_t const *)((__pyx_v_col->setup->chunks.chunks[0]).buffers[1]));
4170:
+4171: if col.setup.source in (
switch (__pyx_v_col->setup->source) {
case __pyx_e_7questdb_7_client_col_source_dt64ns_numpy:
/* … */
break;
case __pyx_e_7questdb_7_client_col_source_dt64us_numpy:
+4172: col_source_t.col_source_dt64ns_numpy,
case __pyx_e_7questdb_7_client_col_source_dt64ns_tz_arrow:
4173: col_source_t.col_source_dt64ns_tz_arrow):
+4174: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L12;
}
__pyx_L12:;
}
}
+4175: ok = qwp_chunk_at_nanos(
__pyx_v_ok = qwp_chunk_at_nanos(__pyx_v_chunk, (__pyx_v_data + __pyx_v_row_offset), __pyx_v_row_count, (&__pyx_v_err));
}
4176: chunk,
4177: data + row_offset,
4178: row_count,
4179: &err)
+4180: elif col.setup.source in (
break;
case __pyx_e_7questdb_7_client_col_source_dt64ms_tz_arrow:
+4181: col_source_t.col_source_dt64us_numpy,
case __pyx_e_7questdb_7_client_col_source_dt64us_tz_arrow:
4182: col_source_t.col_source_dt64us_tz_arrow):
+4183: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L15;
}
__pyx_L15:;
}
}
+4184: ok = qwp_chunk_at_micros(
__pyx_v_ok = qwp_chunk_at_micros(__pyx_v_chunk, (__pyx_v_data + __pyx_v_row_offset), __pyx_v_row_count, (&__pyx_v_err));
}
4185: chunk,
4186: data + row_offset,
4187: row_count,
4188: &err)
+4189: elif col.setup.source == col_source_t.col_source_dt64ms_tz_arrow:
break;
case __pyx_e_7questdb_7_client_col_source_dt64s_tz_arrow:
+4190: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L18;
}
__pyx_L18:;
}
}
+4191: ok = qwp_chunk_at_millis(
__pyx_v_ok = qwp_chunk_at_millis(__pyx_v_chunk, (__pyx_v_data + __pyx_v_row_offset), __pyx_v_row_count, (&__pyx_v_err));
}
4192: chunk,
4193: data + row_offset,
4194: row_count,
4195: &err)
+4196: elif col.setup.source == col_source_t.col_source_dt64s_tz_arrow:
break;
default:
+4197: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L21;
}
__pyx_L21:;
}
}
+4198: ok = qwp_chunk_at_seconds(
__pyx_v_ok = qwp_chunk_at_seconds(__pyx_v_chunk, (__pyx_v_data + __pyx_v_row_offset), __pyx_v_row_count, (&__pyx_v_err));
}
4199: chunk,
4200: data + row_offset,
4201: row_count,
4202: &err)
4203: else:
+4204: raise RuntimeError('Unsupported columnar designated timestamp source.')
__pyx_t_5 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Unsupported_columnar_designated};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4204, __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(0, 4204, __pyx_L1_error)
break;
}
4205:
+4206: if not ok:
__pyx_t_1 = (!__pyx_v_ok);
if (unlikely(__pyx_t_1)) {
/* … */
}
+4207: raise 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(0, 4207, __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(0, 4207, __pyx_L1_error)
4208:
4209:
+4210: cdef int _geohash_override_dtype(col_source_t source) noexcept:
static int __pyx_f_7questdb_7_client__geohash_override_dtype(enum __pyx_t_7questdb_7_client_col_source_t __pyx_v_source) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
+4211: if (source == col_source_t.col_source_u8_numpy
switch (__pyx_v_source) {
case __pyx_e_7questdb_7_client_col_source_u8_numpy:
case __pyx_e_7questdb_7_client_col_source_i8_numpy:
/* … */
break;
default: break;
}
4212: or source == col_source_t.col_source_i8_numpy):
+4213: return <int>qwp_numpy_dtype.qwp_numpy_geohash_i8
__pyx_r = ((int)qwp_numpy_geohash_i8);
goto __pyx_L0;
+4214: if (source == col_source_t.col_source_u16_numpy
switch (__pyx_v_source) {
case __pyx_e_7questdb_7_client_col_source_u16_numpy:
case __pyx_e_7questdb_7_client_col_source_i16_numpy:
/* … */
break;
default: break;
}
4215: or source == col_source_t.col_source_i16_numpy):
+4216: return <int>qwp_numpy_dtype.qwp_numpy_geohash_i16
__pyx_r = ((int)qwp_numpy_geohash_i16);
goto __pyx_L0;
+4217: if (source == col_source_t.col_source_u32_numpy
switch (__pyx_v_source) {
case __pyx_e_7questdb_7_client_col_source_u32_numpy:
case __pyx_e_7questdb_7_client_col_source_i32_numpy:
/* … */
break;
default: break;
}
4218: or source == col_source_t.col_source_i32_numpy):
+4219: return <int>qwp_numpy_dtype.qwp_numpy_geohash_i32
__pyx_r = ((int)qwp_numpy_geohash_i32);
goto __pyx_L0;
+4220: if (source == col_source_t.col_source_u64_numpy
switch (__pyx_v_source) {
case __pyx_e_7questdb_7_client_col_source_u64_numpy:
case __pyx_e_7questdb_7_client_col_source_i64_numpy:
/* … */
break;
default: break;
}
4221: or source == col_source_t.col_source_i64_numpy):
+4222: return <int>qwp_numpy_dtype.qwp_numpy_geohash_i64
__pyx_r = ((int)qwp_numpy_geohash_i64);
goto __pyx_L0;
+4223: return -1
__pyx_r = -1; goto __pyx_L0;
4224:
4225:
+4226: cdef object _dataframe_normalize_nullable(object df):
static PyObject *__pyx_f_7questdb_7_client__dataframe_normalize_nullable(PyObject *__pyx_v_df) {
PyObject *__pyx_v_masked_base = 0;
PyObject *__pyx_v_convert = NULL;
PyObject *__pyx_v_pos = NULL;
PyObject *__pyx_v_dtype = NULL;
PyObject *__pyx_v_out = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* 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_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("questdb._client._dataframe_normalize_nullable", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_masked_base);
__Pyx_XDECREF(__pyx_v_convert);
__Pyx_XDECREF(__pyx_v_pos);
__Pyx_XDECREF(__pyx_v_dtype);
__Pyx_XDECREF(__pyx_v_out);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4227: if not _is_pandas_dataframe_object(df):
__pyx_t_1 = __pyx_f_7questdb_7_client__is_pandas_dataframe_object(__pyx_v_df); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4227, __pyx_L1_error) __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { /* … */ }
+4228: return df
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_df); __pyx_r = __pyx_v_df; goto __pyx_L0;
+4229: _dataframe_may_import_deps()
__pyx_t_3 = __pyx_f_7questdb_7_client__dataframe_may_import_deps(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4230: cdef object masked_base = _pandas_masked_dtype()
__pyx_t_3 = __pyx_f_7questdb_7_client__pandas_masked_dtype(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_masked_base = __pyx_t_3; __pyx_t_3 = 0;
+4231: convert = []
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_convert = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+4232: for pos, dtype in enumerate(df.dtypes):
__Pyx_INCREF(__pyx_mstate_global->__pyx_int_0); __pyx_t_3 = __pyx_mstate_global->__pyx_int_0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_dtypes); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) { __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4232, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; for (;;) { if (likely(!__pyx_t_7)) { if (likely(PyList_CheckExact(__pyx_t_5))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 4232, __pyx_L1_error) #endif if (__pyx_t_6 >= __pyx_temp) break; } __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_5, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_6; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 4232, __pyx_L1_error) #endif if (__pyx_t_6 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6)); #else __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6); #endif ++__pyx_t_6; } if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4232, __pyx_L1_error) } else { __pyx_t_4 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 4232, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_dtype, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_pos, __pyx_t_3); __pyx_t_4 = __Pyx_PyLong_AddObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; /* … */ } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4233: # pyarrow-backed strings keep their Arrow buffers (resolved as
4234: # str_utf8_arrow), so an all-null column survives as a null VARCHAR
4235: # instead of collapsing to a skipped all-null object column.
+4236: if isinstance(dtype, masked_base):
__pyx_t_2 = PyObject_IsInstance(__pyx_v_dtype, __pyx_v_masked_base); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 4236, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L6; }
+4237: convert.append(pos)
__pyx_t_8 = __Pyx_PyList_Append(__pyx_v_convert, __pyx_v_pos); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 4237, __pyx_L1_error)
+4238: elif (isinstance(dtype, _PANDAS.StringDtype)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PANDAS, __pyx_mstate_global->__pyx_n_u_StringDtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = PyObject_IsInstance(__pyx_v_dtype, __pyx_t_4); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 4238, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L7_bool_binop_done; } /* … */ if (__pyx_t_2) { /* … */ } __pyx_L6:;
+4239: and getattr(dtype, 'storage', None) != 'pyarrow'):
__pyx_t_4 = __Pyx_GetAttr3(__pyx_v_dtype, __pyx_mstate_global->__pyx_n_u_storage, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_pyarrow, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4239, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __pyx_t_1; __pyx_L7_bool_binop_done:;
+4240: convert.append(pos)
__pyx_t_8 = __Pyx_PyList_Append(__pyx_v_convert, __pyx_v_pos); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 4240, __pyx_L1_error)
+4241: if not convert:
{
Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_v_convert);
if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 4241, __pyx_L1_error)
__pyx_t_2 = (__pyx_temp != 0);
}
__pyx_t_1 = (!__pyx_t_2);
if (__pyx_t_1) {
/* … */
}
+4242: return df
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_df); __pyx_r = __pyx_v_df; goto __pyx_L0;
+4243: out = df.copy(deep=False)
__pyx_t_5 = __pyx_v_df; __Pyx_INCREF(__pyx_t_5); __pyx_t_9 = 0; { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, NULL}; __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_deep, Py_False, __pyx_t_4, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 4243, __pyx_L1_error) __pyx_t_3 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_copy, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4); __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(0, 4243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_v_out = __pyx_t_3; __pyx_t_3 = 0;
+4244: for pos in convert:
__pyx_t_3 = __pyx_v_convert; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0; for (;;) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 4244, __pyx_L1_error) #endif if (__pyx_t_6 >= __pyx_temp) break; } __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_6; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4244, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_pos, __pyx_t_4); __pyx_t_4 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4245: _dataframe_set_column(out, df, pos, df.iloc[:, pos].astype(object))
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_iloc); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_mstate_global->__pyx_slice[0]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[0]); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_mstate_global->__pyx_slice[0]) != (0)) __PYX_ERR(0, 4245, __pyx_L1_error); __Pyx_INCREF(__pyx_v_pos); __Pyx_GIVEREF(__pyx_v_pos); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_pos) != (0)) __PYX_ERR(0, 4245, __pyx_L1_error); __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_5 = __pyx_t_12; __Pyx_INCREF(__pyx_t_5); __pyx_t_9 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_builtin_object}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astype, __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_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_13 = __pyx_f_7questdb_7_client__dataframe_set_column(__pyx_v_out, __pyx_v_df, __pyx_v_pos, __pyx_t_4); if (unlikely(__pyx_t_13 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4245, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+4246: out.attrs = dict(df.attrs)
__pyx_t_4 = NULL; __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_attrs); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_9 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_12}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(&PyDict_Type), __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_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } if (__Pyx_PyObject_SetAttrStr(__pyx_v_out, __pyx_mstate_global->__pyx_n_u_attrs, __pyx_t_3) < (0)) __PYX_ERR(0, 4246, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4247: return out
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_out); __pyx_r = __pyx_v_out; goto __pyx_L0;
4248:
4249:
+4250: cdef void_int _dataframe_set_column(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_set_column(PyObject *__pyx_v_out, PyObject *__pyx_v_df, PyObject *__pyx_v_pos, PyObject *__pyx_v_value) {
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client._dataframe_set_column", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4251: object out, object df, object pos, object value) except -1:
4252: # `out[name] = value` trips pandas' chained-assignment refcount
4253: # heuristic when called from Cython (the shallow copy looks like a
4254: # temporary), spamming FutureWarnings under pandas >= 2.2 warn-CoW
4255: # and erroring under `-W error`. Positional `isetitem` performs the
4256: # same block replacement without the heuristic; pandas < 1.5 lacks
4257: # it but also lacks the warning, so plain setitem stays correct.
+4258: if hasattr(out, 'isetitem'):
__pyx_t_1 = __Pyx_HasAttr(__pyx_v_out, __pyx_mstate_global->__pyx_n_u_isetitem); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 4258, __pyx_L1_error) if (__pyx_t_1) { /* … */ goto __pyx_L3; }
+4259: out.isetitem(pos, value)
__pyx_t_3 = __pyx_v_out;
__Pyx_INCREF(__pyx_t_3);
__pyx_t_4 = 0;
{
PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_pos, __pyx_v_value};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_isetitem, __pyx_callargs+__pyx_t_4, (3-__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(0, 4259, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4260: else:
+4261: out[df.columns[pos]] = value
/*else*/ {
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_columns); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_v_pos); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4261, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely((PyObject_SetItem(__pyx_v_out, __pyx_t_3, __pyx_v_value) < 0))) __PYX_ERR(0, 4261, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
__pyx_L3:;
4262:
4263:
+4264: cdef object _dataframe_normalize_at_timestamp(object df, object at):
static PyObject *__pyx_f_7questdb_7_client__dataframe_normalize_at_timestamp(PyObject *__pyx_v_df, PyObject *__pyx_v_at) {
PyObject *__pyx_v_dtype = 0;
PyObject *__pyx_v_new_dtype = 0;
PyObject *__pyx_v_out = 0;
PyObject *__pyx_v_at_name = 0;
PyObject *__pyx_v_pos = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("questdb._client._dataframe_normalize_at_timestamp", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_dtype);
__Pyx_XDECREF(__pyx_v_new_dtype);
__Pyx_XDECREF(__pyx_v_out);
__Pyx_XDECREF(__pyx_v_at_name);
__Pyx_XDECREF(__pyx_v_pos);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4265: # tz-aware (DatetimeTZ) ms/s designated-`at` columns can't reach the
4266: # columnar resolver's source override (the shared classifier rejects
4267: # non-ns/us tz units first), so widen them to us here. ArrowDtype ms/s
4268: # is widened to micros in Rust by the millis/seconds designated-ts FFI.
4269: cdef object dtype, new_dtype, out, at_name
+4270: if not _is_pandas_dataframe_object(df):
__pyx_t_1 = __pyx_f_7questdb_7_client__is_pandas_dataframe_object(__pyx_v_df); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4270, __pyx_L1_error) __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { /* … */ }
+4271: return df
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_df); __pyx_r = __pyx_v_df; goto __pyx_L0;
+4272: if isinstance(at, str):
__pyx_t_2 = PyUnicode_Check(__pyx_v_at);
if (__pyx_t_2) {
/* … */
goto __pyx_L4;
}
+4273: at_name = at
__Pyx_INCREF(__pyx_v_at);
__pyx_v_at_name = __pyx_v_at;
+4274: elif isinstance(at, int) and not isinstance(at, bool):
__pyx_t_1 = PyLong_Check(__pyx_v_at); if (__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L5_bool_binop_done; } __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_at, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool); __pyx_t_3 = (!__pyx_t_1); __pyx_t_2 = __pyx_t_3; __pyx_L5_bool_binop_done:; if (__pyx_t_2) { /* … */ goto __pyx_L4; }
+4275: try:
{
/*try:*/ {
/* … */
}
__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;
goto __pyx_L12_try_end;
__pyx_L7_error:;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
__pyx_L9_except_error:;
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L1_error;
__pyx_L10_except_return:;
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L0;
__pyx_L12_try_end:;
}
+4276: at_name = df.columns[at]
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_columns); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4276, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_7, __pyx_v_at); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4276, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_at_name = __pyx_t_8; __pyx_t_8 = 0;
+4277: except Exception:
__pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_9) { __Pyx_ErrRestore(0,0,0);
+4278: return df
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_df); __pyx_r = __pyx_v_df; goto __pyx_L10_except_return; } goto __pyx_L9_except_error;
+4279: if not isinstance(at_name, str):
__pyx_t_2 = PyUnicode_Check(__pyx_v_at_name);
__pyx_t_3 = (!__pyx_t_2);
if (__pyx_t_3) {
/* … */
}
+4280: return df
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_df); __pyx_r = __pyx_v_df; goto __pyx_L0;
4281: else:
+4282: return df
/*else*/ {
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_df);
__pyx_r = __pyx_v_df;
goto __pyx_L0;
}
__pyx_L4:;
+4283: _dataframe_may_import_deps()
__pyx_t_8 = __pyx_f_7questdb_7_client__dataframe_may_import_deps(); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+4284: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L21_try_end;
__pyx_L16_error:;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
__pyx_L18_except_error:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4);
goto __pyx_L1_error;
__pyx_L20_try_return:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4);
goto __pyx_L0;
__pyx_L19_except_return:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4);
goto __pyx_L0;
__pyx_L21_try_end:;
}
+4285: if at_name not in df.columns:
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_columns); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4285, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_v_at_name, __pyx_t_8, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 4285, __pyx_L16_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (__pyx_t_3) { /* … */ }
+4286: return df
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_df); __pyx_r = __pyx_v_df; goto __pyx_L20_try_return;
+4287: dtype = df[at_name].dtype
__pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_df, __pyx_v_at_name); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4287, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4287, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_dtype = __pyx_t_7; __pyx_t_7 = 0;
+4288: except Exception:
__pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_9) { __Pyx_ErrRestore(0,0,0);
+4289: return df
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_df); __pyx_r = __pyx_v_df; goto __pyx_L19_except_return; } goto __pyx_L18_except_error;
+4290: if not isinstance(dtype, _PANDAS.DatetimeTZDtype) or dtype.unit not in ('s', 'ms'):
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PANDAS, __pyx_mstate_global->__pyx_n_u_DatetimeTZDtype); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = PyObject_IsInstance(__pyx_v_dtype, __pyx_t_7); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 4290, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_1 = (!__pyx_t_2); if (!__pyx_t_1) { } else { __pyx_t_3 = __pyx_t_1; goto __pyx_L26_bool_binop_done; } __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_mstate_global->__pyx_n_u_unit); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_s, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 4290, __pyx_L1_error) if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L28_bool_binop_done; } __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ms, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 4290, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __pyx_L28_bool_binop_done:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_2 = __pyx_t_1; __pyx_t_3 = __pyx_t_2; __pyx_L26_bool_binop_done:; if (__pyx_t_3) { /* … */ }
+4291: return df
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_df); __pyx_r = __pyx_v_df; goto __pyx_L0;
+4292: new_dtype = _PANDAS.DatetimeTZDtype('us', dtype.tz)
__pyx_t_8 = __pyx_v_7questdb_7_client__PANDAS; __Pyx_INCREF(__pyx_t_8); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_mstate_global->__pyx_n_u_tz); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_mstate_global->__pyx_n_u_us, __pyx_t_10}; __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_DatetimeTZDtype, __pyx_callargs+__pyx_t_11, (3-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __pyx_v_new_dtype = __pyx_t_7; __pyx_t_7 = 0;
+4293: pos = df.columns.get_loc(at_name)
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_columns); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = __pyx_t_8; __Pyx_INCREF(__pyx_t_10); __pyx_t_11 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_at_name}; __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_loc, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __pyx_v_pos = __pyx_t_7; __pyx_t_7 = 0;
+4294: if getattr(pos, '__index__', None) is None:
__pyx_t_7 = __Pyx_GetAttr3(__pyx_v_pos, __pyx_mstate_global->__pyx_n_u_index_2, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = (__pyx_t_7 == Py_None); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_3) { /* … */ }
4295: # Duplicate at-column names: leave the frame for the planner
4296: # to reject.
+4297: return df
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_df); __pyx_r = __pyx_v_df; goto __pyx_L0;
+4298: out = df.copy(deep=False)
__pyx_t_8 = __pyx_v_df; __Pyx_INCREF(__pyx_t_8); __pyx_t_11 = 0; { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_8, NULL}; __pyx_t_10 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_deep, Py_False, __pyx_t_10, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 4298, __pyx_L1_error) __pyx_t_7 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_copy, __pyx_callargs+__pyx_t_11, (1-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_10); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __pyx_v_out = __pyx_t_7; __pyx_t_7 = 0;
+4299: _dataframe_set_column(out, df, pos, df.iloc[:, pos].astype(new_dtype))
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_iloc); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_INCREF(__pyx_mstate_global->__pyx_slice[0]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[0]); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_mstate_global->__pyx_slice[0]) != (0)) __PYX_ERR(0, 4299, __pyx_L1_error); __Pyx_INCREF(__pyx_v_pos); __Pyx_GIVEREF(__pyx_v_pos); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_pos) != (0)) __PYX_ERR(0, 4299, __pyx_L1_error); __pyx_t_13 = __Pyx_PyObject_GetItem(__pyx_t_8, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 4299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_10 = __pyx_t_13; __Pyx_INCREF(__pyx_t_10); __pyx_t_11 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_new_dtype}; __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __pyx_t_14 = __pyx_f_7questdb_7_client__dataframe_set_column(__pyx_v_out, __pyx_v_df, __pyx_v_pos, __pyx_t_7); if (unlikely(__pyx_t_14 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4299, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+4300: out.attrs = dict(df.attrs)
__pyx_t_13 = NULL; __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_attrs); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4300, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_10}; __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(&PyDict_Type), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4300, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } if (__Pyx_PyObject_SetAttrStr(__pyx_v_out, __pyx_mstate_global->__pyx_n_u_attrs, __pyx_t_7) < (0)) __PYX_ERR(0, 4300, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+4301: return out
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_out); __pyx_r = __pyx_v_out; goto __pyx_L0;
4302:
4303:
+4304: cdef void_int _dataframe_apply_roundtrip_overrides(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_apply_roundtrip_overrides(PyObject *__pyx_v_df, struct __pyx_t_7questdb_7_client_dataframe_plan_t *__pyx_v_plan) {
size_t __pyx_v_col_index;
struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col;
int __pyx_v_gh;
PyObject *__pyx_v_attrs = NULL;
PyObject *__pyx_v_qmeta = NULL;
PyObject *__pyx_v_cols_meta = NULL;
PyObject *__pyx_v_df_cols = NULL;
PyObject *__pyx_v_meta = NULL;
PyObject *__pyx_v_kind = NULL;
PyObject *__pyx_v_bits = NULL;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._dataframe_apply_roundtrip_overrides", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_attrs);
__Pyx_XDECREF(__pyx_v_qmeta);
__Pyx_XDECREF(__pyx_v_cols_meta);
__Pyx_XDECREF(__pyx_v_df_cols);
__Pyx_XDECREF(__pyx_v_meta);
__Pyx_XDECREF(__pyx_v_kind);
__Pyx_XDECREF(__pyx_v_bits);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4305: object df, dataframe_plan_t* plan) except -1:
4306: cdef size_t col_index
4307: cdef col_t* col
4308: cdef int gh
+4309: for col_index in range(plan.col_count):
__pyx_t_1 = __pyx_v_plan->col_count;
__pyx_t_2 = __pyx_t_1;
for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_col_index = __pyx_t_3;
+4310: plan.cols.d[col_index].setup.has_override = False
(__pyx_v_plan->cols.d[__pyx_v_col_index]).setup->has_override = 0; }
+4311: attrs = getattr(df, 'attrs', None)
__pyx_t_4 = __Pyx_GetAttr3(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_attrs, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_attrs = __pyx_t_4; __pyx_t_4 = 0;
+4312: if not attrs:
__pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_attrs); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4312, __pyx_L1_error) __pyx_t_6 = (!__pyx_t_5); if (__pyx_t_6) { /* … */ }
+4313: return 0
__pyx_r = 0;
goto __pyx_L0;
+4314: qmeta = attrs.get('questdb')
__pyx_t_7 = __pyx_v_attrs; __Pyx_INCREF(__pyx_t_7); __pyx_t_1 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_n_u_questdb}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_1, (2-__pyx_t_1) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_v_qmeta = __pyx_t_4; __pyx_t_4 = 0;
+4315: if not qmeta:
__pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_qmeta); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4315, __pyx_L1_error) __pyx_t_5 = (!__pyx_t_6); if (__pyx_t_5) { /* … */ }
+4316: return 0
__pyx_r = 0;
goto __pyx_L0;
+4317: cols_meta = qmeta.get('columns')
__pyx_t_7 = __pyx_v_qmeta; __Pyx_INCREF(__pyx_t_7); __pyx_t_1 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_n_u_columns}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_1, (2-__pyx_t_1) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_v_cols_meta = __pyx_t_4; __pyx_t_4 = 0;
+4318: if not cols_meta:
__pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_cols_meta); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4318, __pyx_L1_error) __pyx_t_6 = (!__pyx_t_5); if (__pyx_t_6) { /* … */ }
+4319: return 0
__pyx_r = 0;
goto __pyx_L0;
+4320: df_cols = list(df.columns)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_columns); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PySequence_ListKeepNew(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_df_cols = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0;
+4321: for col_index in range(plan.col_count):
__pyx_t_1 = __pyx_v_plan->col_count;
__pyx_t_2 = __pyx_t_1;
for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_col_index = __pyx_t_3;
+4322: col = &plan.cols.d[col_index]
__pyx_v_col = (&(__pyx_v_plan->cols.d[__pyx_v_col_index]));
+4323: if col.setup.orig_index >= <size_t>len(df_cols):
__pyx_t_8 = __Pyx_PyList_GET_SIZE(__pyx_v_df_cols); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4323, __pyx_L1_error) __pyx_t_6 = (__pyx_v_col->setup->orig_index >= ((size_t)__pyx_t_8)); if (__pyx_t_6) { /* … */ }
+4324: continue
goto __pyx_L8_continue;
+4325: meta = cols_meta.get(df_cols[col.setup.orig_index])
__pyx_t_4 = __pyx_v_cols_meta;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_9 = __Pyx_GetItemInt_List(__pyx_v_df_cols, __pyx_v_col->setup->orig_index, size_t, 0, __Pyx_PyLong_FromSize_t, 1, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_10 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_9};
__pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (1*__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_7)) __PYX_ERR(0, 4325, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
__Pyx_XDECREF_SET(__pyx_v_meta, __pyx_t_7);
__pyx_t_7 = 0;
+4326: if not meta:
__pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_meta); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4326, __pyx_L1_error) __pyx_t_5 = (!__pyx_t_6); if (__pyx_t_5) { /* … */ }
+4327: continue
goto __pyx_L8_continue;
+4328: kind = meta.get('kind')
__pyx_t_9 = __pyx_v_meta;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_10 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_n_u_kind};
__pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4328, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
__Pyx_XDECREF_SET(__pyx_v_kind, __pyx_t_7);
__pyx_t_7 = 0;
+4329: if (kind == 'ipv4'
__pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_kind, __pyx_mstate_global->__pyx_n_u_ipv4, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4329, __pyx_L1_error) if (__pyx_t_6) { } else { __pyx_t_5 = __pyx_t_6; goto __pyx_L13_bool_binop_done; } /* … */ if (__pyx_t_5) { /* … */ goto __pyx_L12; }
+4330: and col.setup.source == col_source_t.col_source_u32_numpy):
__pyx_t_6 = (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_u32_numpy);
__pyx_t_5 = __pyx_t_6;
__pyx_L13_bool_binop_done:;
+4331: col.setup.has_override = True
__pyx_v_col->setup->has_override = 1;
+4332: col.setup.override_dtype = \
__pyx_v_col->setup->override_dtype = qwp_numpy_u32_ipv4;
4333: qwp_numpy_dtype.qwp_numpy_u32_ipv4
+4334: elif (kind == 'char'
__pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_kind, __pyx_mstate_global->__pyx_n_u_char, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4334, __pyx_L1_error) if (__pyx_t_6) { } else { __pyx_t_5 = __pyx_t_6; goto __pyx_L15_bool_binop_done; } /* … */ if (__pyx_t_5) { /* … */ goto __pyx_L12; }
+4335: and col.setup.source == col_source_t.col_source_u16_numpy):
__pyx_t_6 = (__pyx_v_col->setup->source == __pyx_e_7questdb_7_client_col_source_u16_numpy);
__pyx_t_5 = __pyx_t_6;
__pyx_L15_bool_binop_done:;
+4336: col.setup.has_override = True
__pyx_v_col->setup->has_override = 1;
+4337: col.setup.override_dtype = \
__pyx_v_col->setup->override_dtype = qwp_numpy_u16_char;
4338: qwp_numpy_dtype.qwp_numpy_u16_char
+4339: elif kind == 'geohash':
__pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_kind, __pyx_mstate_global->__pyx_n_u_geohash, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4339, __pyx_L1_error) if (__pyx_t_5) { /* … */ } __pyx_L12:; __pyx_L8_continue:; }
+4340: gh = _geohash_override_dtype(col.setup.source)
__pyx_v_gh = __pyx_f_7questdb_7_client__geohash_override_dtype(__pyx_v_col->setup->source);
+4341: bits = meta.get('precision_bits') or 0
__pyx_t_4 = __pyx_v_meta;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_10 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_n_u_precision_bits};
__pyx_t_9 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4341, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
}
__pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 4341, __pyx_L1_error)
if (!__pyx_t_5) {
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
} else {
__Pyx_INCREF(__pyx_t_9);
__pyx_t_7 = __pyx_t_9;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L17_bool_binop_done;
}
__pyx_t_9 = __Pyx_PyLong_From_long(0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4341, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_7 = __pyx_t_9;
__pyx_t_9 = 0;
__pyx_L17_bool_binop_done:;
__Pyx_XDECREF_SET(__pyx_v_bits, __pyx_t_7);
__pyx_t_7 = 0;
+4342: if gh != -1 and _is_int_not_bool(bits) and 1 <= bits <= 60:
__pyx_t_6 = (__pyx_v_gh != -1L);
if (__pyx_t_6) {
} else {
__pyx_t_5 = __pyx_t_6;
goto __pyx_L20_bool_binop_done;
}
__pyx_t_6 = __pyx_f_7questdb_7_client__is_int_not_bool(__pyx_v_bits); if (unlikely(__pyx_t_6 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4342, __pyx_L1_error)
if (__pyx_t_6) {
} else {
__pyx_t_5 = __pyx_t_6;
goto __pyx_L20_bool_binop_done;
}
__pyx_t_7 = PyObject_RichCompare(__pyx_mstate_global->__pyx_int_1, __pyx_v_bits, Py_LE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4342, __pyx_L1_error)
if (__Pyx_PyObject_IsTrue(__pyx_t_7)) {
__Pyx_DECREF(__pyx_t_7);
__pyx_t_7 = PyObject_RichCompare(__pyx_v_bits, __pyx_mstate_global->__pyx_int_60, Py_LE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4342, __pyx_L1_error)
}
__pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4342, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_5 = __pyx_t_6;
__pyx_L20_bool_binop_done:;
if (__pyx_t_5) {
/* … */
}
+4343: col.setup.has_override = True
__pyx_v_col->setup->has_override = 1;
+4344: col.setup.override_dtype = <qwp_numpy_dtype>gh
__pyx_v_col->setup->override_dtype = ((enum qwp_numpy_dtype)__pyx_v_gh);
+4345: col.setup.override_geohash_bits = <uint8_t>bits
__pyx_t_11 = __Pyx_PyLong_As_uint8_t(__pyx_v_bits); if (unlikely((__pyx_t_11 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4345, __pyx_L1_error) __pyx_v_col->setup->override_geohash_bits = ((uint8_t)__pyx_t_11);
+4346: return 0
__pyx_r = 0; goto __pyx_L0;
4347:
4348:
+4349: cdef void_int _dataframe_columnar_populate_chunk(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_columnar_populate_chunk(struct __pyx_t_7questdb_7_client_dataframe_plan_t *__pyx_v_plan, struct qwp_chunk *__pyx_v_chunk, size_t __pyx_v_row_offset, size_t __pyx_v_row_count) {
size_t __pyx_v_col_index;
struct __pyx_t_7questdb_7_client_col_t *__pyx_v_col;
struct __pyx_t_7questdb_7_client_col_t *__pyx_v_at_col;
size_t __pyx_v_at_col_index;
size_t __pyx_v_field_count;
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_v_prebuilt;
struct __pyx_t_7questdb_7_client_pyobj_built_t *__pyx_v_at_prebuilt;
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_populate_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4350: dataframe_plan_t* plan,
4351: qwp_chunk* chunk,
4352: size_t row_offset,
4353: size_t row_count) except -1:
4354: cdef size_t col_index
4355: cdef col_t* col
+4356: cdef col_t* at_col = NULL
__pyx_v_at_col = NULL;
+4357: cdef size_t at_col_index = 0
__pyx_v_at_col_index = 0;
+4358: cdef size_t field_count = 0
__pyx_v_field_count = 0;
+4359: cdef pyobj_built_t* prebuilt = NULL
__pyx_v_prebuilt = NULL;
+4360: cdef pyobj_built_t* at_prebuilt = NULL
__pyx_v_at_prebuilt = NULL;
+4361: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
4362:
+4363: for col_index in range(plan.col_count):
__pyx_t_1 = __pyx_v_plan->col_count;
__pyx_t_2 = __pyx_t_1;
for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_col_index = __pyx_t_3;
+4364: col = &plan.cols.d[col_index]
__pyx_v_col = (&(__pyx_v_plan->cols.d[__pyx_v_col_index]));
+4365: if col.setup.target == col_target_t.col_target_at:
__pyx_t_4 = (__pyx_v_col->setup->target == __pyx_e_7questdb_7_client_col_target_at);
if (__pyx_t_4) {
/* … */
goto __pyx_L5;
}
+4366: at_col = col
__pyx_v_at_col = __pyx_v_col;
+4367: at_col_index = col_index
__pyx_v_at_col_index = __pyx_v_col_index;
+4368: elif col.setup.target in (
switch (__pyx_v_col->setup->target) {
case __pyx_e_7questdb_7_client_col_target_column_bool:
/* … */
__pyx_t_4 = 1;
break;
default:
__pyx_t_4 = 0;
break;
}
__pyx_t_5 = __pyx_t_4;
if (__pyx_t_5) {
/* … */
goto __pyx_L5;
}
+4369: col_target_t.col_target_column_bool,
case __pyx_e_7questdb_7_client_col_target_column_i64:
+4370: col_target_t.col_target_column_i64,
case __pyx_e_7questdb_7_client_col_target_column_f64:
+4371: col_target_t.col_target_column_f64,
case __pyx_e_7questdb_7_client_col_target_column_ts:
+4372: col_target_t.col_target_column_ts,
case __pyx_e_7questdb_7_client_col_target_column_str:
+4373: col_target_t.col_target_column_str,
case __pyx_e_7questdb_7_client_col_target_symbol:
+4374: col_target_t.col_target_symbol,
case __pyx_e_7questdb_7_client_col_target_column_i8:
+4375: col_target_t.col_target_column_i8,
case __pyx_e_7questdb_7_client_col_target_column_i16:
+4376: col_target_t.col_target_column_i16,
case __pyx_e_7questdb_7_client_col_target_column_i32:
+4377: col_target_t.col_target_column_i32,
case __pyx_e_7questdb_7_client_col_target_column_f32:
+4378: col_target_t.col_target_column_f32,
case __pyx_e_7questdb_7_client_col_target_column_uuid:
+4379: col_target_t.col_target_column_uuid,
case __pyx_e_7questdb_7_client_col_target_column_long256:
+4380: col_target_t.col_target_column_long256,
case __pyx_e_7questdb_7_client_col_target_column_ipv4:
+4381: col_target_t.col_target_column_ipv4,
case __pyx_e_7questdb_7_client_col_target_column_binary:
+4382: col_target_t.col_target_column_binary,
case __pyx_e_7questdb_7_client_col_target_column_arrow:
+4383: col_target_t.col_target_column_arrow,
case __pyx_e_7questdb_7_client_col_target_column_decimal:
4384: col_target_t.col_target_column_decimal):
+4385: if plan.pyobj_built != NULL:
__pyx_t_5 = (__pyx_v_plan->pyobj_built != NULL);
if (__pyx_t_5) {
/* … */
goto __pyx_L6;
}
+4386: prebuilt = plan.pyobj_built[col_index]
__pyx_v_prebuilt = (__pyx_v_plan->pyobj_built[__pyx_v_col_index]);
4387: else:
+4388: prebuilt = NULL
/*else*/ {
__pyx_v_prebuilt = NULL;
}
__pyx_L6:;
+4389: _dataframe_columnar_append_field(
__pyx_t_6 = __pyx_f_7questdb_7_client__dataframe_columnar_append_field(__pyx_v_chunk, __pyx_v_col, __pyx_v_prebuilt, __pyx_v_row_offset, __pyx_v_row_count); if (unlikely(__pyx_t_6 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4389, __pyx_L1_error)
4390: chunk, col, prebuilt, row_offset, row_count)
+4391: field_count += 1
__pyx_v_field_count = (__pyx_v_field_count + 1);
+4392: elif col.setup.target != col_target_t.col_target_skip:
__pyx_t_5 = (__pyx_v_col->setup->target != __pyx_e_7questdb_7_client_col_target_skip);
if (unlikely(__pyx_t_5)) {
/* … */
}
__pyx_L5:;
}
+4393: raise RuntimeError(
__pyx_t_8 = NULL;
4394: 'Unsupported columnar field target: %d.'
+4395: % <int>col.setup.target)
__pyx_t_9 = __Pyx_PyLong_From_int(((int)__pyx_v_col->setup->target)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4395, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_Unsupported_columnar_field_targe_2, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4395, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_11 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_10}; __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_ERR(0, 4393, __pyx_L1_error)
4396:
+4397: if field_count == 0:
__pyx_t_5 = (__pyx_v_field_count == 0);
if (unlikely(__pyx_t_5)) {
/* … */
}
+4398: raise RuntimeError(
__pyx_t_10 = NULL;
__pyx_t_1 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_mstate_global->__pyx_kp_u_Validated_columnar_plan_has_no_n};
__pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_1, (2-__pyx_t_1) | (__pyx_t_1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4398, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
__Pyx_Raise(__pyx_t_7, 0, 0, 0);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__PYX_ERR(0, 4398, __pyx_L1_error)
4399: 'Validated columnar plan has no non-timestamp data columns.')
+4400: if plan.at_value == _AT_IS_SERVER_NOW:
__pyx_t_5 = (__pyx_v_plan->at_value == __pyx_v_7questdb_7_client__AT_IS_SERVER_NOW);
if (__pyx_t_5) {
/* … */
}
4401: # Explicit `at=ServerTimestamp` opt-in: the frame carries no
4402: # designated timestamp column; the server stamps rows on arrival.
+4403: if not qwp_chunk_at_now(chunk, &err):
__pyx_t_5 = (!qwp_chunk_at_now(__pyx_v_chunk, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
+4404: raise c_err_to_py(err)
__pyx_t_7 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4404, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_ERR(0, 4404, __pyx_L1_error)
+4405: return 0
__pyx_r = 0;
goto __pyx_L0;
+4406: if plan.at_value >= 0:
__pyx_t_5 = (__pyx_v_plan->at_value >= 0);
if (__pyx_t_5) {
/* … */
}
4407: # Fixed scalar designated timestamp shared by every row.
+4408: if not qwp_chunk_at_scalar_nanos(
__pyx_t_5 = (!qwp_chunk_at_scalar_nanos(__pyx_v_chunk, __pyx_v_plan->at_value, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
4409: chunk, plan.at_value, &err):
+4410: raise c_err_to_py(err)
__pyx_t_7 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_ERR(0, 4410, __pyx_L1_error)
+4411: return 0
__pyx_r = 0;
goto __pyx_L0;
+4412: if at_col == NULL:
__pyx_t_5 = (__pyx_v_at_col == NULL);
if (unlikely(__pyx_t_5)) {
/* … */
}
+4413: raise RuntimeError('Validated columnar plan has no timestamp column.')
__pyx_t_10 = NULL;
__pyx_t_1 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_mstate_global->__pyx_kp_u_Validated_columnar_plan_has_no_t};
__pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __pyx_callargs+__pyx_t_1, (2-__pyx_t_1) | (__pyx_t_1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4413, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
__Pyx_Raise(__pyx_t_7, 0, 0, 0);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__PYX_ERR(0, 4413, __pyx_L1_error)
+4414: if plan.pyobj_built != NULL:
__pyx_t_5 = (__pyx_v_plan->pyobj_built != NULL);
if (__pyx_t_5) {
/* … */
}
+4415: at_prebuilt = plan.pyobj_built[at_col_index]
__pyx_v_at_prebuilt = (__pyx_v_plan->pyobj_built[__pyx_v_at_col_index]);
+4416: _dataframe_columnar_append_at(
__pyx_t_6 = __pyx_f_7questdb_7_client__dataframe_columnar_append_at(__pyx_v_chunk, __pyx_v_at_col, __pyx_v_at_prebuilt, __pyx_v_row_offset, __pyx_v_row_count); if (unlikely(__pyx_t_6 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4416, __pyx_L1_error)
4417: chunk, at_col, at_prebuilt, row_offset, row_count)
4418:
4419:
+4420: cdef void_int _dataframe_columnar_sync(qwp_direct_sender* conn) except -1:
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_columnar_sync(struct qwp_direct_sender *__pyx_v_conn) {
struct line_sender_error *__pyx_v_err;
int __pyx_v_ok;
PyThreadState *__pyx_v_gs;
uint64_t __pyx_v_start_ns;
__pyx_t_7questdb_7_client_void_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_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_sync", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4421: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+4422: cdef bint ok = False
__pyx_v_ok = 0;
+4423: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+4424: cdef uint64_t start_ns = 0
__pyx_v_start_ns = 0;
4425: global _dataframe_columnar_sync_calls
4426: global _dataframe_columnar_sync_ns
+4427: if _dataframe_columnar_count_io_stats:
if (__pyx_v_7questdb_7_client__dataframe_columnar_count_io_stats) {
/* … */
}
+4428: start_ns = time.perf_counter_ns()
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4428, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_perf_counter_ns); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4428, __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(0, 4428, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_6 = __Pyx_PyLong_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_6 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4428, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_start_ns = __pyx_t_6;
+4429: _ensure_doesnt_have_gil(&gs)
__pyx_t_7 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_7 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4429, __pyx_L1_error)
+4430: ok = qwp_direct_sender_commit(
__pyx_v_ok = qwp_direct_sender_commit(__pyx_v_conn, qwpws_ack_level_ok, (&__pyx_v_err));
4431: conn,
4432: qwpws_ack_level.qwpws_ack_level_ok,
4433: &err)
+4434: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 4434, __pyx_L1_error)
+4435: if _dataframe_columnar_count_io_stats:
if (__pyx_v_7questdb_7_client__dataframe_columnar_count_io_stats) {
/* … */
}
+4436: _dataframe_columnar_sync_calls += 1
__pyx_v_7questdb_7_client__dataframe_columnar_sync_calls = (__pyx_v_7questdb_7_client__dataframe_columnar_sync_calls + 1);
+4437: _dataframe_columnar_sync_ns += time.perf_counter_ns() - start_ns
__pyx_t_1 = __Pyx_PyLong_From_uint64_t(__pyx_v_7questdb_7_client__dataframe_columnar_sync_ns); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_perf_counter_ns); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = 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_5 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, 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_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_8 = __Pyx_PyLong_From_uint64_t(__pyx_v_start_ns); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = PyNumber_Subtract(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = __Pyx_PyLong_As_uint64_t(__pyx_t_8); if (unlikely((__pyx_t_6 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4437, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_7questdb_7_client__dataframe_columnar_sync_ns = __pyx_t_6;
+4438: if not ok:
__pyx_t_7 = (!__pyx_v_ok);
if (unlikely(__pyx_t_7)) {
/* … */
}
+4439: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4439, __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(0, 4439, __pyx_L1_error)
4440:
4441:
+4442: cdef bint _dataframe_columnar_force_drop_after_error(
static int __pyx_f_7questdb_7_client__dataframe_columnar_force_drop_after_error(struct qwp_direct_sender *__pyx_v_conn, int __pyx_v_flushed) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
4443: qwp_direct_sender* conn,
4444: bint flushed) noexcept:
4445: # A failed call must not let its data reach the table. The direct pool's
4446: # return path best-effort-commits pipelined frames, so a connection that
4447: # saw any flush is dropped (discarding the uncommitted frames) instead of
4448: # returned. When no flush succeeded there is nothing pipelined and the
4449: # connection can be returned normally: the FFI return path itself closes
4450: # (rather than recycles) a conn that latched a terminal transport or
4451: # protocol error.
+4452: if conn == NULL:
__pyx_t_1 = (__pyx_v_conn == NULL);
if (__pyx_t_1) {
/* … */
}
+4453: return False
__pyx_r = 0;
goto __pyx_L0;
+4454: return flushed
__pyx_r = __pyx_v_flushed; goto __pyx_L0;
4455:
4456:
+4457: cdef bint _dataframe_columnar_is_deferred_capacity_error(
static int __pyx_f_7questdb_7_client__dataframe_columnar_is_deferred_capacity_error(struct line_sender_error *__pyx_v_err) {
size_t __pyx_v_msg_len;
char const *__pyx_v_msg;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
4458: line_sender_error* err) noexcept:
+4459: cdef size_t msg_len = 0
__pyx_v_msg_len = 0;
+4460: cdef const char* msg = line_sender_error_msg(err, &msg_len)
__pyx_v_msg = line_sender_error_msg(__pyx_v_err, (&__pyx_v_msg_len));
+4461: if msg_len < 47:
__pyx_t_1 = (__pyx_v_msg_len < 47);
if (__pyx_t_1) {
/* … */
}
+4462: return False
__pyx_r = 0;
goto __pyx_L0;
+4463: return strncmp(
__pyx_r = (strncmp(__pyx_v_msg, __pyx_k_column_sender_deferred_flush_cap, 47) == 0); goto __pyx_L0;
4464: msg,
4465: "column sender deferred flush capacity exhausted",
4466: 47) == 0
4467:
4468:
+4469: cdef void_int _dataframe_columnar_flush(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_columnar_flush(struct qwp_direct_sender *__pyx_v_conn, struct qwp_chunk *__pyx_v_chunk, int __pyx_v_retry_after_sync, int *__pyx_v_committed_prefix) {
struct line_sender_error *__pyx_v_err;
enum line_sender_error_code __pyx_v_err_code;
int __pyx_v_ok;
PyThreadState *__pyx_v_gs;
uint64_t __pyx_v_start_ns;
__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_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("questdb._client._dataframe_columnar_flush", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4470: qwp_direct_sender* conn,
4471: qwp_chunk* chunk,
4472: bint retry_after_sync,
4473: bint* committed_prefix) except -1:
+4474: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
4475: cdef line_sender_error_code err_code
+4476: cdef bint ok = False
__pyx_v_ok = 0;
+4477: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+4478: cdef uint64_t start_ns = 0
__pyx_v_start_ns = 0;
4479: global _dataframe_columnar_flush_calls
4480: global _dataframe_columnar_flush_ns
4481: global _dataframe_columnar_flush_retry_syncs
4482:
+4483: if _dataframe_columnar_count_io_stats:
if (__pyx_v_7questdb_7_client__dataframe_columnar_count_io_stats) {
/* … */
}
+4484: start_ns = time.perf_counter_ns()
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4484, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_perf_counter_ns); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4484, __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(0, 4484, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_6 = __Pyx_PyLong_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_6 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4484, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_start_ns = __pyx_t_6;
+4485: _ensure_doesnt_have_gil(&gs)
__pyx_t_7 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_7 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4485, __pyx_L1_error)
+4486: ok = qwp_direct_sender_flush(conn, chunk, &err)
__pyx_v_ok = qwp_direct_sender_flush(__pyx_v_conn, __pyx_v_chunk, (&__pyx_v_err));
+4487: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 4487, __pyx_L1_error)
+4488: if _dataframe_columnar_count_io_stats:
if (__pyx_v_7questdb_7_client__dataframe_columnar_count_io_stats) {
/* … */
}
+4489: _dataframe_columnar_flush_calls += 1
__pyx_v_7questdb_7_client__dataframe_columnar_flush_calls = (__pyx_v_7questdb_7_client__dataframe_columnar_flush_calls + 1);
+4490: _dataframe_columnar_flush_ns += time.perf_counter_ns() - start_ns
__pyx_t_1 = __Pyx_PyLong_From_uint64_t(__pyx_v_7questdb_7_client__dataframe_columnar_flush_ns); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_perf_counter_ns); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = 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_5 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, 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_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_8 = __Pyx_PyLong_From_uint64_t(__pyx_v_start_ns); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = PyNumber_Subtract(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = __Pyx_PyLong_As_uint64_t(__pyx_t_8); if (unlikely((__pyx_t_6 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4490, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_7questdb_7_client__dataframe_columnar_flush_ns = __pyx_t_6;
+4491: if ok:
if (__pyx_v_ok) {
/* … */
}
+4492: return 0
__pyx_r = 0;
goto __pyx_L0;
4493:
+4494: err_code = line_sender_error_get_code(err)
__pyx_v_err_code = line_sender_error_get_code(__pyx_v_err);
+4495: if (retry_after_sync and err_code == line_sender_error_invalid_api_call and
if (__pyx_v_retry_after_sync) {
} else {
__pyx_t_7 = __pyx_v_retry_after_sync;
goto __pyx_L7_bool_binop_done;
}
__pyx_t_9 = (__pyx_v_err_code == line_sender_error_invalid_api_call);
if (__pyx_t_9) {
} else {
__pyx_t_7 = __pyx_t_9;
goto __pyx_L7_bool_binop_done;
}
/* … */
if (__pyx_t_7) {
/* … */
}
+4496: _dataframe_columnar_is_deferred_capacity_error(err)):
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe_columnar_is_deferred_capacity_error(__pyx_v_err); __pyx_t_7 = __pyx_t_9; __pyx_L7_bool_binop_done:;
+4497: if _dataframe_columnar_count_io_stats:
if (__pyx_v_7questdb_7_client__dataframe_columnar_count_io_stats) {
/* … */
}
+4498: _dataframe_columnar_flush_retry_syncs += 1
__pyx_v_7questdb_7_client__dataframe_columnar_flush_retry_syncs = (__pyx_v_7questdb_7_client__dataframe_columnar_flush_retry_syncs + 1);
+4499: line_sender_error_free(err)
line_sender_error_free(__pyx_v_err);
+4500: err = NULL
__pyx_v_err = NULL;
+4501: _dataframe_columnar_sync(conn)
__pyx_t_10 = __pyx_f_7questdb_7_client__dataframe_columnar_sync(__pyx_v_conn); if (unlikely(__pyx_t_10 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4501, __pyx_L1_error)
+4502: committed_prefix[0] = True
(__pyx_v_committed_prefix[0]) = 1;
+4503: if _dataframe_columnar_count_io_stats:
if (__pyx_v_7questdb_7_client__dataframe_columnar_count_io_stats) {
/* … */
}
+4504: start_ns = time.perf_counter_ns()
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4504, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_perf_counter_ns); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4504, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 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_8 = __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_8)) __PYX_ERR(0, 4504, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
}
__pyx_t_6 = __Pyx_PyLong_As_uint64_t(__pyx_t_8); if (unlikely((__pyx_t_6 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4504, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_v_start_ns = __pyx_t_6;
+4505: _ensure_doesnt_have_gil(&gs)
__pyx_t_7 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_7 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4505, __pyx_L1_error)
+4506: ok = qwp_direct_sender_flush(conn, chunk, &err)
__pyx_v_ok = qwp_direct_sender_flush(__pyx_v_conn, __pyx_v_chunk, (&__pyx_v_err));
+4507: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 4507, __pyx_L1_error)
+4508: if _dataframe_columnar_count_io_stats:
if (__pyx_v_7questdb_7_client__dataframe_columnar_count_io_stats) {
/* … */
}
+4509: _dataframe_columnar_flush_calls += 1
__pyx_v_7questdb_7_client__dataframe_columnar_flush_calls = (__pyx_v_7questdb_7_client__dataframe_columnar_flush_calls + 1);
+4510: _dataframe_columnar_flush_ns += time.perf_counter_ns() - start_ns
__pyx_t_8 = __Pyx_PyLong_From_uint64_t(__pyx_v_7questdb_7_client__dataframe_columnar_flush_ns); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_perf_counter_ns); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __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, NULL}; __pyx_t_4 = __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_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_3 = __Pyx_PyLong_From_uint64_t(__pyx_v_start_ns); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyNumber_Subtract(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = __Pyx_PyLong_As_uint64_t(__pyx_t_3); if (unlikely((__pyx_t_6 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4510, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_7questdb_7_client__dataframe_columnar_flush_ns = __pyx_t_6;
+4511: if ok:
if (__pyx_v_ok) {
/* … */
}
+4512: return 0
__pyx_r = 0;
goto __pyx_L0;
4513:
+4514: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4514, __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(0, 4514, __pyx_L1_error)
4515:
4516:
+4517: cdef int _arrow_flush_once(
static int __pyx_f_7questdb_7_client__arrow_flush_once(struct qwp_direct_sender *__pyx_v_conn, struct line_sender_table_name __pyx_v_table, struct ArrowArray *__pyx_v_array, struct ArrowSchema *__pyx_v_schema, struct line_sender_column_name *__pyx_v_ts_column, int __pyx_v_at_scalar_set, int64_t __pyx_v_at_scalar_nanos, struct qwp_arrow_override const *__pyx_v_overrides, size_t __pyx_v_overrides_len, struct line_sender_error **__pyx_v_err) {
int __pyx_v_ok;
PyThreadState *__pyx_v_gs;
uint64_t __pyx_v_start_ns;
int __pyx_r;
/* … */
/* 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_8);
__Pyx_AddTraceback("questdb._client._arrow_flush_once", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4518: qwp_direct_sender* conn,
4519: line_sender_table_name table,
4520: ArrowArray* array,
4521: ArrowSchema* schema,
4522: line_sender_column_name* ts_column,
4523: bint at_scalar_set,
4524: int64_t at_scalar_nanos,
4525: const qwp_arrow_override* overrides,
4526: size_t overrides_len,
4527: line_sender_error** err) except -1:
+4528: cdef bint ok = False
__pyx_v_ok = 0;
+4529: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+4530: cdef uint64_t start_ns = 0
__pyx_v_start_ns = 0;
4531: global _dataframe_columnar_flush_calls
4532: global _dataframe_columnar_flush_ns
4533:
+4534: if _dataframe_columnar_count_io_stats:
if (__pyx_v_7questdb_7_client__dataframe_columnar_count_io_stats) {
/* … */
}
+4535: start_ns = time.perf_counter_ns()
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4535, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_perf_counter_ns); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4535, __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(0, 4535, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_6 = __Pyx_PyLong_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_6 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4535, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_start_ns = __pyx_t_6;
+4536: _ensure_doesnt_have_gil(&gs)
__pyx_t_7 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_7 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4536, __pyx_L1_error)
+4537: if ts_column != NULL:
__pyx_t_7 = (__pyx_v_ts_column != NULL);
if (__pyx_t_7) {
/* … */
goto __pyx_L4;
}
+4538: ok = qwp_direct_sender_flush_arrow_batch_at_column(
__pyx_v_ok = qwp_direct_sender_flush_arrow_batch_at_column(__pyx_v_conn, __pyx_v_table, __pyx_v_array, __pyx_v_schema, (__pyx_v_ts_column[0]), __pyx_v_overrides, __pyx_v_overrides_len, __pyx_v_err);
4539: conn, table, array, schema, ts_column[0],
4540: overrides, overrides_len, err)
+4541: elif at_scalar_set:
if (__pyx_v_at_scalar_set) {
/* … */
goto __pyx_L4;
}
+4542: ok = qwp_direct_sender_flush_arrow_batch_at_scalar_nanos(
__pyx_v_ok = qwp_direct_sender_flush_arrow_batch_at_scalar_nanos(__pyx_v_conn, __pyx_v_table, __pyx_v_array, __pyx_v_schema, __pyx_v_at_scalar_nanos, __pyx_v_overrides, __pyx_v_overrides_len, __pyx_v_err);
4543: conn, table, array, schema, at_scalar_nanos,
4544: overrides, overrides_len, err)
4545: else:
+4546: ok = qwp_direct_sender_flush_arrow_batch_at_now(
/*else*/ {
/* … */
__pyx_v_ok = qwp_direct_sender_flush_arrow_batch_at_now(__pyx_v_conn, __pyx_v_table, __pyx_v_array, __pyx_v_schema, __pyx_v_overrides, __pyx_v_overrides_len, __pyx_v_err);
}
__pyx_L4:;
4547: conn, table, array, schema,
4548: overrides, overrides_len, err)
+4549: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 4549, __pyx_L1_error)
+4550: if _dataframe_columnar_count_io_stats:
if (__pyx_v_7questdb_7_client__dataframe_columnar_count_io_stats) {
/* … */
}
+4551: _dataframe_columnar_flush_calls += 1
__pyx_v_7questdb_7_client__dataframe_columnar_flush_calls = (__pyx_v_7questdb_7_client__dataframe_columnar_flush_calls + 1);
+4552: _dataframe_columnar_flush_ns += time.perf_counter_ns() - start_ns
__pyx_t_1 = __Pyx_PyLong_From_uint64_t(__pyx_v_7questdb_7_client__dataframe_columnar_flush_ns); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_perf_counter_ns); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = 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_5 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, 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_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_8 = __Pyx_PyLong_From_uint64_t(__pyx_v_start_ns); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = PyNumber_Subtract(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = __Pyx_PyLong_As_uint64_t(__pyx_t_8); if (unlikely((__pyx_t_6 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4552, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_7questdb_7_client__dataframe_columnar_flush_ns = __pyx_t_6;
+4553: return 1 if ok else 0
if (__pyx_v_ok) {
__pyx_t_9 = 1;
} else {
__pyx_t_9 = 0;
}
__pyx_r = __pyx_t_9;
goto __pyx_L0;
4554:
4555:
+4556: cdef void_int _dataframe_arrow_flush_batch(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_arrow_flush_batch(struct qwp_direct_sender *__pyx_v_conn, struct line_sender_table_name __pyx_v_table, struct ArrowArray *__pyx_v_array, struct ArrowSchema *__pyx_v_schema, struct line_sender_column_name *__pyx_v_ts_column, int __pyx_v_at_scalar_set, int64_t __pyx_v_at_scalar_nanos, struct qwp_arrow_override const *__pyx_v_overrides, size_t __pyx_v_overrides_len, int __pyx_v_retry_after_sync, int *__pyx_v_committed_prefix, size_t *__pyx_v_deferred_since_sync) {
struct line_sender_error *__pyx_v_err;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("questdb._client._dataframe_arrow_flush_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4557: qwp_direct_sender* conn,
4558: line_sender_table_name table,
4559: ArrowArray* array,
4560: ArrowSchema* schema,
4561: line_sender_column_name* ts_column,
4562: bint at_scalar_set,
4563: int64_t at_scalar_nanos,
4564: const qwp_arrow_override* overrides,
4565: size_t overrides_len,
4566: bint retry_after_sync,
4567: bint* committed_prefix,
4568: size_t* deferred_since_sync) except -1:
+4569: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
4570: global _dataframe_columnar_flush_retry_syncs
4571:
+4572: if _arrow_flush_once(
__pyx_t_1 = __pyx_f_7questdb_7_client__arrow_flush_once(__pyx_v_conn, __pyx_v_table, __pyx_v_array, __pyx_v_schema, __pyx_v_ts_column, __pyx_v_at_scalar_set, __pyx_v_at_scalar_nanos, __pyx_v_overrides, __pyx_v_overrides_len, (&__pyx_v_err)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 4572, __pyx_L1_error)
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
}
4573: conn, table, array, schema, ts_column,
4574: at_scalar_set, at_scalar_nanos,
4575: overrides, overrides_len, &err):
+4576: return 0
__pyx_r = 0;
goto __pyx_L0;
4577:
4578: # A batch larger than the server per-batch cap is split into several
4579: # deferred frames, so the caller's batch counter can undercount the
4580: # 127-slot in-flight window; commit to drain it and retry once. The
4581: # failed frame itself never hit the wire (`array` was re-exported;
4582: # `release` must still be set for the retry to be safe), but earlier
4583: # frames of a split batch may have: the commit lands them and the
4584: # retry re-sends them — at-least-once, like any failover replay.
+4585: if (retry_after_sync
if (__pyx_v_retry_after_sync) {
} else {
__pyx_t_2 = __pyx_v_retry_after_sync;
goto __pyx_L5_bool_binop_done;
}
/* … */
if (__pyx_t_2) {
/* … */
}
+4586: and line_sender_error_get_code(err) ==
__pyx_t_3 = (line_sender_error_get_code(__pyx_v_err) == line_sender_error_invalid_api_call);
if (__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L5_bool_binop_done;
}
4587: line_sender_error_invalid_api_call
+4588: and _dataframe_columnar_is_deferred_capacity_error(err)
__pyx_t_3 = __pyx_f_7questdb_7_client__dataframe_columnar_is_deferred_capacity_error(__pyx_v_err);
if (__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L5_bool_binop_done;
}
+4589: and array.release != NULL):
__pyx_t_3 = (__pyx_v_array->release != NULL); __pyx_t_2 = __pyx_t_3; __pyx_L5_bool_binop_done:;
+4590: if _dataframe_columnar_count_io_stats:
if (__pyx_v_7questdb_7_client__dataframe_columnar_count_io_stats) {
/* … */
}
+4591: _dataframe_columnar_flush_retry_syncs += 1
__pyx_v_7questdb_7_client__dataframe_columnar_flush_retry_syncs = (__pyx_v_7questdb_7_client__dataframe_columnar_flush_retry_syncs + 1);
+4592: line_sender_error_free(err)
line_sender_error_free(__pyx_v_err);
+4593: err = NULL
__pyx_v_err = NULL;
+4594: _dataframe_columnar_sync(conn)
__pyx_t_4 = __pyx_f_7questdb_7_client__dataframe_columnar_sync(__pyx_v_conn); if (unlikely(__pyx_t_4 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4594, __pyx_L1_error)
+4595: committed_prefix[0] = True
(__pyx_v_committed_prefix[0]) = 1;
+4596: deferred_since_sync[0] = 0
(__pyx_v_deferred_since_sync[0]) = 0;
+4597: if _arrow_flush_once(
__pyx_t_1 = __pyx_f_7questdb_7_client__arrow_flush_once(__pyx_v_conn, __pyx_v_table, __pyx_v_array, __pyx_v_schema, __pyx_v_ts_column, __pyx_v_at_scalar_set, __pyx_v_at_scalar_nanos, __pyx_v_overrides, __pyx_v_overrides_len, (&__pyx_v_err)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 4597, __pyx_L1_error)
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
}
4598: conn, table, array, schema, ts_column,
4599: at_scalar_set, at_scalar_nanos,
4600: overrides, overrides_len, &err):
+4601: return 0
__pyx_r = 0;
goto __pyx_L0;
4602:
+4603: raise c_err_to_py(err)
__pyx_t_5 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4603, __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(0, 4603, __pyx_L1_error)
4604:
4605:
+4606: def _debug_dataframe_columnar_io_stats(
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11_debug_dataframe_columnar_io_stats(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_10_debug_dataframe_columnar_io_stats, "\n Internal benchmark hook for columnar flush/sync timing.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_11_debug_dataframe_columnar_io_stats = {"_debug_dataframe_columnar_io_stats", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11_debug_dataframe_columnar_io_stats, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_10_debug_dataframe_columnar_io_stats}; static PyObject *__pyx_pw_7questdb_7_client_11_debug_dataframe_columnar_io_stats(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_enabled = 0; int __pyx_v_reset; #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("_debug_dataframe_columnar_io_stats (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_enabled,&__pyx_mstate_global->__pyx_n_u_reset,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(0, 4606, __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(0, 4606, __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(0, 4606, __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, "_debug_dataframe_columnar_io_stats", 0) < (0)) __PYX_ERR(0, 4606, __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_10_debug_dataframe_columnar_io_stats(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_enabled, int __pyx_v_reset) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("questdb._client._debug_dataframe_columnar_io_stats", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = PyTuple_Pack(2, Py_None, __pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11_debug_dataframe_columnar_io_stats, 0, __pyx_mstate_global->__pyx_n_u_debug_dataframe_columnar_io_sta, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[78])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 4606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_17, __pyx_t_18); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_debug_dataframe_columnar_io_sta, __pyx_t_17) < (0)) __PYX_ERR(0, 4606, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+4607: object enabled=None,
if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None)); } else { switch (__pyx_nargs) { case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 4606, __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(0, 4606, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_enabled = values[0]; if (values[1]) { __pyx_v_reset = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_reset == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4608, __pyx_L3_error) } else {
+4608: bint reset=False):
__pyx_v_reset = ((int)((int)0));
}
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_debug_dataframe_columnar_io_stats", 0, 0, 2, __pyx_nargs); __PYX_ERR(0, 4606, __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._debug_dataframe_columnar_io_stats", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_10_debug_dataframe_columnar_io_stats(__pyx_self, __pyx_v_enabled, __pyx_v_reset);
/* … */
__pyx_t_17 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 4608, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
4609: """
4610: Internal benchmark hook for columnar flush/sync timing.
4611: """
4612: global _dataframe_columnar_count_io_stats
4613: global _dataframe_columnar_flush_calls
4614: global _dataframe_columnar_flush_ns
4615: global _dataframe_columnar_sync_calls
4616: global _dataframe_columnar_sync_ns
4617: global _dataframe_columnar_flush_retry_syncs
4618:
+4619: if reset:
if (__pyx_v_reset) {
/* … */
}
+4620: _dataframe_columnar_flush_calls = 0
__pyx_v_7questdb_7_client__dataframe_columnar_flush_calls = 0;
+4621: _dataframe_columnar_flush_ns = 0
__pyx_v_7questdb_7_client__dataframe_columnar_flush_ns = 0;
+4622: _dataframe_columnar_sync_calls = 0
__pyx_v_7questdb_7_client__dataframe_columnar_sync_calls = 0;
+4623: _dataframe_columnar_sync_ns = 0
__pyx_v_7questdb_7_client__dataframe_columnar_sync_ns = 0;
+4624: _dataframe_columnar_flush_retry_syncs = 0
__pyx_v_7questdb_7_client__dataframe_columnar_flush_retry_syncs = 0;
+4625: if enabled is not None:
__pyx_t_1 = (__pyx_v_enabled != Py_None);
if (__pyx_t_1) {
/* … */
}
+4626: _dataframe_columnar_count_io_stats = bool(enabled)
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_enabled};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, __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_2)) __PYX_ERR(0, 4626, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_2);
}
__pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_t_2)); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4626, __pyx_L1_error)
__Pyx_DECREF((PyObject *)__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_7questdb_7_client__dataframe_columnar_count_io_stats = __pyx_t_1;
+4627: return {
__Pyx_XDECREF(__pyx_r);
+4628: 'enabled': _dataframe_columnar_count_io_stats,
__pyx_t_2 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_7questdb_7_client__dataframe_columnar_count_io_stats); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_enabled, __pyx_t_3) < (0)) __PYX_ERR(0, 4628, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4629: 'flush_calls': _dataframe_columnar_flush_calls,
__pyx_t_3 = __Pyx_PyLong_From_uint64_t(__pyx_v_7questdb_7_client__dataframe_columnar_flush_calls); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_flush_calls, __pyx_t_3) < (0)) __PYX_ERR(0, 4628, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4630: 'flush_s': _dataframe_columnar_flush_ns / 1_000_000_000.0,
__pyx_t_3 = PyFloat_FromDouble((((double)__pyx_v_7questdb_7_client__dataframe_columnar_flush_ns) / 1000000000.0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_flush_s, __pyx_t_3) < (0)) __PYX_ERR(0, 4628, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4631: 'sync_calls': _dataframe_columnar_sync_calls,
__pyx_t_3 = __Pyx_PyLong_From_uint64_t(__pyx_v_7questdb_7_client__dataframe_columnar_sync_calls); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_sync_calls, __pyx_t_3) < (0)) __PYX_ERR(0, 4628, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4632: 'sync_s': _dataframe_columnar_sync_ns / 1_000_000_000.0,
__pyx_t_3 = PyFloat_FromDouble((((double)__pyx_v_7questdb_7_client__dataframe_columnar_sync_ns) / 1000000000.0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_sync_s, __pyx_t_3) < (0)) __PYX_ERR(0, 4628, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4633: 'flush_retry_syncs': _dataframe_columnar_flush_retry_syncs,
__pyx_t_3 = __Pyx_PyLong_From_uint64_t(__pyx_v_7questdb_7_client__dataframe_columnar_flush_retry_syncs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_flush_retry_syncs, __pyx_t_3) < (0)) __PYX_ERR(0, 4628, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
4634: }
4635:
4636:
+4637: def _debug_dataframe_columnar_plan(
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_13_debug_dataframe_columnar_plan(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_13_debug_dataframe_columnar_plan = {"_debug_dataframe_columnar_plan", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_13_debug_dataframe_columnar_plan, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_13_debug_dataframe_columnar_plan(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_df = 0;
PyObject *__pyx_v_table_name = 0;
PyObject *__pyx_v_table_name_col = 0;
PyObject *__pyx_v_symbols = 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("_debug_dataframe_columnar_plan (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_df,&__pyx_mstate_global->__pyx_n_u_table_name,&__pyx_mstate_global->__pyx_n_u_table_name_col,&__pyx_mstate_global->__pyx_n_u_symbols,&__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(0, 4637, __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(0, 4637, __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, "_debug_dataframe_columnar_plan", 0) < (0)) __PYX_ERR(0, 4637, __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_12_debug_dataframe_columnar_plan(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_df, PyObject *__pyx_v_table_name, PyObject *__pyx_v_table_name_col, PyObject *__pyx_v_symbols, PyObject *__pyx_v_at) {
struct qdb_pystr_buf *__pyx_v_b;
struct __pyx_t_7questdb_7_client_dataframe_plan_t __pyx_v_plan;
PyObject *__pyx_v_failures = 0;
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._debug_dataframe_columnar_plan", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_failures);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_17 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 4637, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
/* … */
__pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_13_debug_dataframe_columnar_plan, 0, __pyx_mstate_global->__pyx_n_u_debug_dataframe_columnar_plan, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[79])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4637, __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_17);
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_debug_dataframe_columnar_plan, __pyx_t_18) < (0)) __PYX_ERR(0, 4637, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
4638: object df,
4639: *,
+4640: object table_name=None,
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_table_name, Py_None) < (0)) __PYX_ERR(0, 4637, __pyx_L1_error)
+4641: object table_name_col=None,
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_auto))); /* … */ if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_auto))); /* … */ if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_table_name_col, Py_None) < (0)) __PYX_ERR(0, 4637, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_symbols, ((PyObject*)__pyx_mstate_global->__pyx_n_u_auto)) < (0)) __PYX_ERR(0, 4637, __pyx_L1_error)
4642: object symbols='auto',
+4643: object at=None):
if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_debug_dataframe_columnar_plan", 1, 1, 1, i); __PYX_ERR(0, 4637, __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(0, 4637, __pyx_L3_error) /* … */ if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_df = values[0]; __pyx_v_table_name = values[1]; __pyx_v_table_name_col = values[2]; __pyx_v_symbols = values[3]; __pyx_v_at = values[4]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_debug_dataframe_columnar_plan", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 4637, __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._debug_dataframe_columnar_plan", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_12_debug_dataframe_columnar_plan(__pyx_self, __pyx_v_df, __pyx_v_table_name, __pyx_v_table_name_col, __pyx_v_symbols, __pyx_v_at); /* … */ if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_at, Py_None) < (0)) __PYX_ERR(0, 4637, __pyx_L1_error)
+4644: cdef qdb_pystr_buf* b = qdb_pystr_buf_new()
__pyx_v_b = qdb_pystr_buf_new();
+4645: cdef dataframe_plan_t plan = dataframe_plan_blank()
__pyx_v_plan = __pyx_f_7questdb_7_client_dataframe_plan_blank();
4646: cdef object failures
+4647: try:
/*try:*/ {
+4648: _dataframe_plan_build(
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_plan_build(__pyx_v_b, __pyx_v_df, __pyx_v_table_name, __pyx_v_table_name_col, __pyx_v_symbols, __pyx_v_at, (&__pyx_v_plan), ((PyObject*)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4648, __pyx_L4_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4649: b,
4650: df,
4651: table_name,
4652: table_name_col,
4653: symbols,
4654: at,
4655: &plan,
+4656: _FIELD_TARGETS_QWP)
__pyx_t_1 = __pyx_v_7questdb_7_client__FIELD_TARGETS_QWP;
__Pyx_INCREF(__pyx_t_1);
+4657: _dataframe_columnar_promote_cols(df, &plan)
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_columnar_promote_cols(__pyx_v_df, (&__pyx_v_plan)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4657, __pyx_L4_error)
+4658: failures = _dataframe_columnar_plan_failures(df, &plan)
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_columnar_plan_failures(__pyx_v_df, (&__pyx_v_plan)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4658, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_failures = __pyx_t_1; __pyx_t_1 = 0;
+4659: return {
__Pyx_XDECREF(__pyx_r);
+4660: 'supported': not bool(failures),
__pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4660, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = NULL; __pyx_t_5 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_failures}; __pyx_t_3 = __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_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4660, __pyx_L4_error) __Pyx_GOTREF((PyObject *)__pyx_t_3); } __pyx_t_6 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_t_3)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 4660, __pyx_L4_error) __Pyx_DECREF((PyObject *)__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyBool_FromLong((!__pyx_t_6)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4660, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_supported, __pyx_t_3) < (0)) __PYX_ERR(0, 4660, __pyx_L4_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4661: 'failures': failures,
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_failures, __pyx_v_failures) < (0)) __PYX_ERR(0, 4660, __pyx_L4_error)
+4662: 'normalizations': _dataframe_columnar_plan_normalizations(
__pyx_t_3 = __pyx_f_7questdb_7_client__dataframe_columnar_plan_normalizations(__pyx_v_df, (&__pyx_v_plan)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4662, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_normalizations, __pyx_t_3) < (0)) __PYX_ERR(0, 4660, __pyx_L4_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L3_return; }
4663: df,
4664: &plan),
4665: }
4666: finally:
+4667: dataframe_plan_release(&plan)
/*finally:*/ {
__pyx_L4_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
__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_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
if ( unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_10);
__Pyx_XGOTREF(__pyx_t_11);
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_15);
__pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
{
__pyx_f_7questdb_7_client_dataframe_plan_release((&__pyx_v_plan));
/* … */
__pyx_f_7questdb_7_client_dataframe_plan_release((&__pyx_v_plan));
+4668: qdb_pystr_buf_free(b)
qdb_pystr_buf_free(__pyx_v_b);
}
__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);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
__pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
__pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
goto __pyx_L1_error;
}
__pyx_L3_return: {
__pyx_t_15 = __pyx_r;
__pyx_r = 0;
/* … */
qdb_pystr_buf_free(__pyx_v_b);
__pyx_r = __pyx_t_15;
__pyx_t_15 = 0;
goto __pyx_L0;
}
}
4669:
4670:
+4671: def _bench_dataframe_flush_arrow_batch(
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_15_bench_dataframe_flush_arrow_batch(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_14_bench_dataframe_flush_arrow_batch, "\n Internal benchmark hook for `qwp_direct_sender_flush_arrow_batch_at_now`\n FFI.\n\n `arrow_source` must expose the Arrow PyCapsule Interface\n (`__arrow_c_stream__`) \342\200\224 pa.RecordBatch, pa.Table, pa.RecordBatchReader,\n pl.DataFrame, or any other Arrow-native container. Pandas frames are\n not accepted here on purpose: this hook benches the Arrow FFI itself,\n not pandas\342\206\222Arrow conversion. Use `_bench_dataframe_plan_and_populate_\n column_chunks` for the pandas chunk-based path. Intentionally kept out\n of `__all__`.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_15_bench_dataframe_flush_arrow_batch = {"_bench_dataframe_flush_arrow_batch", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_15_bench_dataframe_flush_arrow_batch, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_14_bench_dataframe_flush_arrow_batch}; static PyObject *__pyx_pw_7questdb_7_client_15_bench_dataframe_flush_arrow_batch(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_arrow_source = 0; PyObject *__pyx_v_table_name = 0; PyObject *__pyx_v_at = 0; PyObject *__pyx_v_conf = 0; size_t __pyx_v_iterations; #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("_bench_dataframe_flush_arrow_batch (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_arrow_source,&__pyx_mstate_global->__pyx_n_u_table_name,&__pyx_mstate_global->__pyx_n_u_at,&__pyx_mstate_global->__pyx_n_u_conf,&__pyx_mstate_global->__pyx_n_u_iterations,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(0, 4671, __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(0, 4671, __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, "_bench_dataframe_flush_arrow_batch", 0) < (0)) __PYX_ERR(0, 4671, __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_14_bench_dataframe_flush_arrow_batch(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_arrow_source, PyObject *__pyx_v_table_name, PyObject *__pyx_v_at, PyObject *__pyx_v_conf, size_t __pyx_v_iterations) { CYTHON_UNUSED size_t __pyx_v_iteration; size_t __pyx_v_row_count; size_t __pyx_v_col_count; size_t __pyx_v_completed; struct questdb_db *__pyx_v_db; struct qwp_direct_sender *__pyx_v_conn; struct line_sender_error *__pyx_v_err; struct qdb_pystr_buf *__pyx_v_b; PyThreadState *__pyx_v_gs; PyObject *__pyx_v_conf_bytes = 0; int __pyx_v_any_flushed; int __pyx_v_committed_prefix; size_t __pyx_v_deferred_since_sync; struct line_sender_table_name __pyx_v_c_table_name; struct line_sender_column_name __pyx_v_c_ts_column; struct line_sender_column_name *__pyx_v_c_ts_column_ptr; struct ArrowSchema __pyx_v_c_schema; int __pyx_v_at_is_column; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("questdb._client._bench_dataframe_flush_arrow_batch", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_conf_bytes); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_15_bench_dataframe_flush_arrow_batch, 0, __pyx_mstate_global->__pyx_n_u_bench_dataframe_flush_arrow_bat_2, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[80])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 4671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_17, __pyx_t_18); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_bench_dataframe_flush_arrow_bat_2, __pyx_t_17) < (0)) __PYX_ERR(0, 4671, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
4672: object arrow_source,
4673: *,
+4674: object table_name=None,
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_table_name, Py_None) < (0)) __PYX_ERR(0, 4671, __pyx_L1_error)
+4675: object at=None,
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_at, Py_None) < (0)) __PYX_ERR(0, 4671, __pyx_L1_error)
+4676: object conf=None,
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_bench_dataframe_flush_arrow_batch", 1, 1, 1, i); __PYX_ERR(0, 4671, __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(0, 4671, __pyx_L3_error) /* … */ if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_arrow_source = values[0]; __pyx_v_table_name = values[1]; __pyx_v_at = values[2]; __pyx_v_conf = values[3]; if (values[4]) { __pyx_v_iterations = __Pyx_PyLong_As_size_t(values[4]); if (unlikely((__pyx_v_iterations == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 4677, __pyx_L3_error) } else { __pyx_v_iterations = ((size_t)((size_t)1)); } } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_bench_dataframe_flush_arrow_batch", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 4671, __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._bench_dataframe_flush_arrow_batch", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_14_bench_dataframe_flush_arrow_batch(__pyx_self, __pyx_v_arrow_source, __pyx_v_table_name, __pyx_v_at, __pyx_v_conf, __pyx_v_iterations); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_conf, Py_None) < (0)) __PYX_ERR(0, 4671, __pyx_L1_error)
+4677: size_t iterations=1):
__pyx_t_17 = __Pyx_PyLong_FromSize_t(((size_t)1)); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 4677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_iterations, __pyx_t_17) < (0)) __PYX_ERR(0, 4671, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
4678: """
4679: Internal benchmark hook for `qwp_direct_sender_flush_arrow_batch_at_now`
4680: FFI.
4681:
4682: `arrow_source` must expose the Arrow PyCapsule Interface
4683: (`__arrow_c_stream__`) — pa.RecordBatch, pa.Table, pa.RecordBatchReader,
4684: pl.DataFrame, or any other Arrow-native container. Pandas frames are
4685: not accepted here on purpose: this hook benches the Arrow FFI itself,
4686: not pandas→Arrow conversion. Use `_bench_dataframe_plan_and_populate_
4687: column_chunks` for the pandas chunk-based path. Intentionally kept out
4688: of `__all__`.
4689: """
4690: cdef size_t iteration
+4691: cdef size_t row_count = 0
__pyx_v_row_count = 0;
+4692: cdef size_t col_count = 0
__pyx_v_col_count = 0;
+4693: cdef size_t completed = 0
__pyx_v_completed = 0;
+4694: cdef questdb_db* db = NULL
__pyx_v_db = NULL;
+4695: cdef qwp_direct_sender* conn = NULL
__pyx_v_conn = NULL;
+4696: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+4697: cdef qdb_pystr_buf* b = NULL
__pyx_v_b = NULL;
+4698: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
4699: cdef bytes conf_bytes
+4700: cdef bint any_flushed = False
__pyx_v_any_flushed = 0;
+4701: cdef bint committed_prefix = False
__pyx_v_committed_prefix = 0;
+4702: cdef size_t deferred_since_sync = 0
__pyx_v_deferred_since_sync = 0;
4703: cdef line_sender_table_name c_table_name
4704: cdef line_sender_column_name c_ts_column
+4705: cdef line_sender_column_name* c_ts_column_ptr = NULL
__pyx_v_c_ts_column_ptr = NULL;
4706: cdef ArrowSchema c_schema
+4707: cdef bint at_is_column = False
__pyx_v_at_is_column = 0;
4708:
+4709: if iterations == 0:
__pyx_t_1 = (__pyx_v_iterations == 0);
if (unlikely(__pyx_t_1)) {
/* … */
}
+4710: raise ValueError('iterations must be greater than zero')
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_iterations_must_be_greater_than};
__pyx_t_2 = __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_2)) __PYX_ERR(0, 4710, __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(0, 4710, __pyx_L1_error)
+4711: if conf is None:
__pyx_t_1 = (__pyx_v_conf == Py_None);
if (unlikely(__pyx_t_1)) {
/* … */
}
+4712: raise ValueError('conf is required for flush_arrow_batch bench.')
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_conf_is_required_for_flush_arrow};
__pyx_t_2 = __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_2)) __PYX_ERR(0, 4712, __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(0, 4712, __pyx_L1_error)
+4713: if not hasattr(arrow_source, '__arrow_c_stream__'):
__pyx_t_1 = __Pyx_HasAttr(__pyx_v_arrow_source, __pyx_mstate_global->__pyx_n_u_arrow_c_stream); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 4713, __pyx_L1_error) __pyx_t_5 = (!__pyx_t_1); if (unlikely(__pyx_t_5)) { /* … */ }
+4714: raise TypeError(
__pyx_t_3 = NULL;
+4715: '_bench_dataframe_flush_arrow_batch requires an Arrow-native '
__pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, 163 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_4 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_6}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4714, __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(0, 4714, __pyx_L1_error)
4716: 'source exposing __arrow_c_stream__ '
4717: '(pa.RecordBatch / pa.Table / pl.DataFrame / RecordBatchReader). '
+4718: f'Got {type(arrow_source).__name__}.')
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_arrow_source)), __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_bench_dataframe_flush_arrow_bat; __pyx_t_8[1] = __pyx_t_7; __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u__2;
+4719: if not isinstance(table_name, str):
__pyx_t_5 = PyUnicode_Check(__pyx_v_table_name);
__pyx_t_1 = (!__pyx_t_5);
if (unlikely(__pyx_t_1)) {
/* … */
}
+4720: raise TypeError(
__pyx_t_6 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_table_name_must_be_str_for_Arrow};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4720, __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(0, 4720, __pyx_L1_error)
4721: 'table_name must be str for Arrow-native DataFrame input.')
+4722: if at is None or isinstance(at, ServerTimestampType):
__pyx_t_5 = (__pyx_v_at == Py_None);
if (!__pyx_t_5) {
} else {
__pyx_t_1 = __pyx_t_5;
goto __pyx_L8_bool_binop_done;
}
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ServerTimestampType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4722, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_5 = PyObject_IsInstance(__pyx_v_at, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4722, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_1 = __pyx_t_5;
__pyx_L8_bool_binop_done:;
if (__pyx_t_1) {
/* … */
goto __pyx_L7;
}
+4723: at_is_column = False
__pyx_v_at_is_column = 0;
+4724: elif isinstance(at, str):
__pyx_t_1 = PyUnicode_Check(__pyx_v_at);
if (likely(__pyx_t_1)) {
/* … */
goto __pyx_L7;
}
+4725: at_is_column = True
__pyx_v_at_is_column = 1;
4726: else:
+4727: raise TypeError(
/*else*/ {
__pyx_t_6 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_at_must_be_a_column_name_str_Ser};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4727, __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(0, 4727, __pyx_L1_error)
}
__pyx_L7:;
4728: 'at must be a column name str, ServerTimestamp, or None '
4729: 'for Arrow-native DataFrame input.')
4730:
+4731: row_count = int(
__pyx_t_6 = __Pyx_PyNumber_Int(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyLong_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 4731, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_row_count = __pyx_t_4;
+4732: getattr(arrow_source, 'num_rows', None)
__pyx_t_6 = __Pyx_GetAttr3(__pyx_v_arrow_source, __pyx_mstate_global->__pyx_n_u_num_rows, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4732, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { __Pyx_INCREF(__pyx_t_6); __pyx_t_2 = __pyx_t_6; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L10_bool_binop_done; }
+4733: or getattr(arrow_source, 'height', None)
__pyx_t_6 = __Pyx_GetAttr3(__pyx_v_arrow_source, __pyx_mstate_global->__pyx_n_u_height, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4733, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4733, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { __Pyx_INCREF(__pyx_t_6); __pyx_t_2 = __pyx_t_6; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L10_bool_binop_done; }
+4734: or 0)
__pyx_t_6 = __Pyx_PyLong_From_long(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4734, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __pyx_t_6; __pyx_t_6 = 0; __pyx_L10_bool_binop_done:;
+4735: col_count = int(
__pyx_t_2 = __Pyx_PyNumber_Int(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4735, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_4 = __Pyx_PyLong_As_size_t(__pyx_t_2); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 4735, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_col_count = __pyx_t_4;
+4736: getattr(arrow_source, 'num_columns', None)
__pyx_t_2 = __Pyx_GetAttr3(__pyx_v_arrow_source, __pyx_mstate_global->__pyx_n_u_num_columns, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4736, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L13_bool_binop_done; }
+4737: or getattr(arrow_source, 'width', None)
__pyx_t_2 = __Pyx_GetAttr3(__pyx_v_arrow_source, __pyx_mstate_global->__pyx_n_u_width, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4737, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = __pyx_t_2; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L13_bool_binop_done; }
+4738: or 0)
__pyx_t_2 = __Pyx_PyLong_From_long(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4738, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __pyx_t_2; __pyx_t_2 = 0; __pyx_L13_bool_binop_done:;
4739:
+4740: conf_bytes = conf.encode('utf-8') if isinstance(conf, str) else conf
__pyx_t_1 = PyUnicode_Check(__pyx_v_conf); if (__pyx_t_1) { __pyx_t_3 = __pyx_v_conf; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_utf_8}; __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4740, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } if (!(likely(PyBytes_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_6))) __PYX_ERR(0, 4740, __pyx_L1_error) __pyx_t_2 = __pyx_t_6; __pyx_t_6 = 0; } else { __pyx_t_6 = __pyx_v_conf; __Pyx_INCREF(__pyx_t_6); if (!(likely(PyBytes_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_6))) __PYX_ERR(0, 4740, __pyx_L1_error) __pyx_t_2 = __pyx_t_6; __pyx_t_6 = 0; } __pyx_v_conf_bytes = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+4741: _ensure_doesnt_have_gil(&gs)
__pyx_t_1 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4741, __pyx_L1_error)
+4742: db = questdb_db_connect(conf_bytes, len(conf_bytes), &err)
if (unlikely(__pyx_v_conf_bytes == Py_None)) {
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(0, 4742, __pyx_L1_error)
}
__pyx_t_9 = __Pyx_PyBytes_AsString(__pyx_v_conf_bytes); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 4742, __pyx_L1_error)
if (unlikely(__pyx_v_conf_bytes == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
__PYX_ERR(0, 4742, __pyx_L1_error)
}
__pyx_t_10 = __Pyx_PyBytes_GET_SIZE(__pyx_v_conf_bytes); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4742, __pyx_L1_error)
__pyx_v_db = questdb_db_connect(__pyx_t_9, __pyx_t_10, (&__pyx_v_err));
+4743: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 4743, __pyx_L1_error)
+4744: if db == NULL:
__pyx_t_1 = (__pyx_v_db == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+4745: raise 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(0, 4745, __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(0, 4745, __pyx_L1_error)
+4746: b = qdb_pystr_buf_new()
__pyx_v_b = qdb_pystr_buf_new();
+4747: memset(&c_schema, 0, sizeof(ArrowSchema))
(void)(memset((&__pyx_v_c_schema), 0, (sizeof(struct ArrowSchema))));
+4748: try:
/*try:*/ {
+4749: str_to_table_name(b, <PyObject*>table_name, &c_table_name)
__pyx_t_11 = __pyx_f_7questdb_7_client_str_to_table_name(__pyx_v_b, ((PyObject *)__pyx_v_table_name), (&__pyx_v_c_table_name)); if (unlikely(__pyx_t_11 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4749, __pyx_L18_error)
+4750: if at_is_column:
if (__pyx_v_at_is_column) {
/* … */
}
+4751: str_to_column_name(b, at, &c_ts_column)
__pyx_t_2 = __pyx_v_at;
__Pyx_INCREF(__pyx_t_2);
if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(0, 4751, __pyx_L18_error)
__pyx_t_11 = __pyx_f_7questdb_7_client_str_to_column_name(__pyx_v_b, ((PyObject*)__pyx_t_2), (&__pyx_v_c_ts_column)); if (unlikely(__pyx_t_11 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4751, __pyx_L18_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4752: c_ts_column_ptr = &c_ts_column
__pyx_v_c_ts_column_ptr = (&__pyx_v_c_ts_column);
4753:
+4754: _ensure_doesnt_have_gil(&gs)
__pyx_t_1 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4754, __pyx_L18_error)
+4755: conn = questdb_db_borrow_direct_sender(db, &err)
__pyx_v_conn = questdb_db_borrow_direct_sender(__pyx_v_db, (&__pyx_v_err));
+4756: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 4756, __pyx_L18_error)
+4757: if conn == NULL:
__pyx_t_1 = (__pyx_v_conn == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+4758: raise 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(0, 4758, __pyx_L18_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(0, 4758, __pyx_L18_error)
+4759: try:
/*try:*/ {
{
/*try:*/ {
/* … */
}
__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;
goto __pyx_L30_try_end;
__pyx_L25_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__pyx_L27_except_error:;
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
goto __pyx_L23_error;
__pyx_L30_try_end:;
}
}
+4760: for iteration in range(iterations):
__pyx_t_4 = __pyx_v_iterations;
__pyx_t_15 = __pyx_t_4;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_v_iteration = __pyx_t_16;
+4761: _capsule_consume_stream(
__pyx_t_11 = __pyx_f_7questdb_7_client__capsule_consume_stream(__pyx_v_conn, __pyx_v_arrow_source, __pyx_v_c_table_name, __pyx_v_c_ts_column_ptr, 0, 0, (&__pyx_v_c_schema), NULL, 0, (&__pyx_v_any_flushed), (&__pyx_v_deferred_since_sync), (&__pyx_v_committed_prefix)); if (unlikely(__pyx_t_11 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4761, __pyx_L25_error)
}
4762: conn, arrow_source, c_table_name, c_ts_column_ptr,
4763: False, 0, &c_schema, NULL, 0, &any_flushed,
4764: &deferred_since_sync, &committed_prefix)
+4765: if any_flushed:
if (__pyx_v_any_flushed) {
/* … */
}
+4766: _dataframe_columnar_sync(conn)
__pyx_t_11 = __pyx_f_7questdb_7_client__dataframe_columnar_sync(__pyx_v_conn); if (unlikely(__pyx_t_11 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4766, __pyx_L25_error)
+4767: completed = iterations
__pyx_v_completed = __pyx_v_iterations;
+4768: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._bench_dataframe_flush_arrow_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_6, &__pyx_t_3) < 0) __PYX_ERR(0, 4768, __pyx_L27_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_3);
+4769: questdb_db_drop_direct_sender(db, conn)
questdb_db_drop_direct_sender(__pyx_v_db, __pyx_v_conn);
+4770: conn = NULL
__pyx_v_conn = NULL;
+4771: raise
__Pyx_GIVEREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_6, __pyx_t_3); __pyx_t_2 = 0; __pyx_t_6 = 0; __pyx_t_3 = 0; __PYX_ERR(0, 4771, __pyx_L27_except_error) }
4772: finally:
+4773: if conn != NULL:
/*finally:*/ {
/*normal exit:*/{
__pyx_t_1 = (__pyx_v_conn != NULL);
if (__pyx_t_1) {
/* … */
}
goto __pyx_L24;
}
__pyx_L23_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
if ( unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_13, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_13, &__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_20);
__Pyx_XGOTREF(__pyx_t_21);
__Pyx_XGOTREF(__pyx_t_22);
__pyx_t_17 = __pyx_lineno; __pyx_t_18 = __pyx_clineno; __pyx_t_19 = __pyx_filename;
{
__pyx_t_1 = (__pyx_v_conn != NULL);
if (__pyx_t_1) {
/* … */
}
}
__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_14);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_ErrRestore(__pyx_t_14, __pyx_t_13, __pyx_t_12);
__pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
__pyx_lineno = __pyx_t_17; __pyx_clineno = __pyx_t_18; __pyx_filename = __pyx_t_19;
goto __pyx_L18_error;
}
__pyx_L24:;
}
}
+4774: questdb_db_return_direct_sender(db, conn)
questdb_db_return_direct_sender(__pyx_v_db, __pyx_v_conn);
/* … */
questdb_db_return_direct_sender(__pyx_v_db, __pyx_v_conn);
4775: finally:
+4776: if c_schema.release != NULL:
/*finally:*/ {
/*normal exit:*/{
__pyx_t_1 = (__pyx_v_c_schema.release != NULL);
if (__pyx_t_1) {
/* … */
}
/* … */
__pyx_t_1 = (__pyx_v_c_schema.release != NULL);
if (__pyx_t_1) {
/* … */
}
+4777: c_schema.release(&c_schema)
__pyx_v_c_schema.release((&__pyx_v_c_schema));
/* … */
__pyx_v_c_schema.release((&__pyx_v_c_schema));
+4778: if b != NULL:
__pyx_t_1 = (__pyx_v_b != NULL);
if (__pyx_t_1) {
/* … */
}
/* … */
__pyx_t_1 = (__pyx_v_b != NULL);
if (__pyx_t_1) {
/* … */
}
+4779: qdb_pystr_buf_free(b)
qdb_pystr_buf_free(__pyx_v_b);
/* … */
qdb_pystr_buf_free(__pyx_v_b);
+4780: if db != NULL:
__pyx_t_1 = (__pyx_v_db != NULL);
if (__pyx_t_1) {
/* … */
}
goto __pyx_L19;
}
__pyx_L18_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
if ( unlikely(__Pyx_GetException(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
__Pyx_XGOTREF(__pyx_t_22);
__Pyx_XGOTREF(__pyx_t_21);
__Pyx_XGOTREF(__pyx_t_20);
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_14);
__pyx_t_18 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_23 = __pyx_filename;
{
/* … */
__pyx_t_1 = (__pyx_v_db != NULL);
if (__pyx_t_1) {
/* … */
}
}
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_22);
__Pyx_XGIVEREF(__pyx_t_21);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_ErrRestore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
__pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
__pyx_lineno = __pyx_t_18; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_23;
goto __pyx_L1_error;
}
__pyx_L19:;
}
+4781: questdb_db_close(db)
questdb_db_close(__pyx_v_db);
/* … */
questdb_db_close(__pyx_v_db);
4782:
+4783: return {
__Pyx_XDECREF(__pyx_r);
+4784: 'iterations': iterations,
__pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4784, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyLong_FromSize_t(__pyx_v_iterations); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4784, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_iterations, __pyx_t_6) < (0)) __PYX_ERR(0, 4784, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+4785: 'row_count': row_count,
__pyx_t_6 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4785, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_row_count, __pyx_t_6) < (0)) __PYX_ERR(0, 4784, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+4786: 'col_count': col_count,
__pyx_t_6 = __Pyx_PyLong_FromSize_t(__pyx_v_col_count); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4786, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_col_count, __pyx_t_6) < (0)) __PYX_ERR(0, 4784, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+4787: 'logical_cells': row_count * col_count,
__pyx_t_6 = __Pyx_PyLong_FromSize_t((__pyx_v_row_count * __pyx_v_col_count)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4787, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_logical_cells, __pyx_t_6) < (0)) __PYX_ERR(0, 4784, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+4788: 'completed': completed,
__pyx_t_6 = __Pyx_PyLong_FromSize_t(__pyx_v_completed); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4788, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_completed, __pyx_t_6) < (0)) __PYX_ERR(0, 4784, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
4789: }
4790:
4791:
+4792: def _bench_dataframe_plan_and_populate_column_chunks(
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_17_bench_dataframe_plan_and_populate_column_chunks(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_16_bench_dataframe_plan_and_populate_column_chunks, "\n Internal benchmark hook for Layer 1 pandas columnar work.\n\n This builds the shared dataframe plan and populates #148 chunks, but it\n never flushes to a sender. It is intentionally kept out of ``__all__``.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_17_bench_dataframe_plan_and_populate_column_chunks = {"_bench_dataframe_plan_and_populate_column_chunks", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_17_bench_dataframe_plan_and_populate_column_chunks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_16_bench_dataframe_plan_and_populate_column_chunks}; static PyObject *__pyx_pw_7questdb_7_client_17_bench_dataframe_plan_and_populate_column_chunks(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_df = 0; PyObject *__pyx_v_table_name = 0; PyObject *__pyx_v_table_name_col = 0; PyObject *__pyx_v_symbols = 0; PyObject *__pyx_v_at = 0; size_t __pyx_v_iterations; size_t __pyx_v_max_rows_per_chunk; #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("_bench_dataframe_plan_and_populate_column_chunks (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_df,&__pyx_mstate_global->__pyx_n_u_table_name,&__pyx_mstate_global->__pyx_n_u_table_name_col,&__pyx_mstate_global->__pyx_n_u_symbols,&__pyx_mstate_global->__pyx_n_u_at,&__pyx_mstate_global->__pyx_n_u_iterations,&__pyx_mstate_global->__pyx_n_u_max_rows_per_chunk,0}; PyObject* values[7] = {0,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(0, 4792, __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(0, 4792, __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, "_bench_dataframe_plan_and_populate_column_chunks", 0) < (0)) __PYX_ERR(0, 4792, __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_16_bench_dataframe_plan_and_populate_column_chunks(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_df, PyObject *__pyx_v_table_name, PyObject *__pyx_v_table_name_col, PyObject *__pyx_v_symbols, PyObject *__pyx_v_at, size_t __pyx_v_iterations, size_t __pyx_v_max_rows_per_chunk) { CYTHON_UNUSED size_t __pyx_v_iteration; struct qdb_pystr_buf *__pyx_v_b; struct __pyx_t_7questdb_7_client_dataframe_plan_t __pyx_v_plan; struct qwp_chunk *__pyx_v_chunk; struct line_sender_error *__pyx_v_err; uint64_t __pyx_v_start_row_path_emissions; uint64_t __pyx_v_end_row_path_emissions; size_t __pyx_v_row_count; size_t __pyx_v_col_count; size_t __pyx_v_populated_rows; size_t __pyx_v_populated_rows_total; size_t __pyx_v_populated_chunks; size_t __pyx_v_rows_per_chunk; size_t __pyx_v_row_offset; size_t __pyx_v_chunk_rows; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("questdb._client._bench_dataframe_plan_and_populate_column_chunks", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 4792, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); /* … */ __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_17_bench_dataframe_plan_and_populate_column_chunks, 0, __pyx_mstate_global->__pyx_n_u_bench_dataframe_plan_and_popula, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[81])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4792, __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_17); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_bench_dataframe_plan_and_popula, __pyx_t_18) < (0)) __PYX_ERR(0, 4792, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
4793: object df,
4794: *,
+4795: object table_name=None,
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_table_name, Py_None) < (0)) __PYX_ERR(0, 4792, __pyx_L1_error)
+4796: object table_name_col=None,
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_auto))); /* … */ if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)((PyObject*)__pyx_mstate_global->__pyx_n_u_auto))); /* … */ if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_table_name_col, Py_None) < (0)) __PYX_ERR(0, 4792, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_symbols, ((PyObject*)__pyx_mstate_global->__pyx_n_u_auto)) < (0)) __PYX_ERR(0, 4792, __pyx_L1_error)
4797: object symbols='auto',
+4798: object at=None,
if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_bench_dataframe_plan_and_populate_column_chunks", 1, 1, 1, i); __PYX_ERR(0, 4792, __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(0, 4792, __pyx_L3_error) /* … */ if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_df = values[0]; __pyx_v_table_name = values[1]; __pyx_v_table_name_col = values[2]; __pyx_v_symbols = values[3]; __pyx_v_at = values[4]; if (values[5]) { __pyx_v_iterations = __Pyx_PyLong_As_size_t(values[5]); if (unlikely((__pyx_v_iterations == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 4799, __pyx_L3_error) } else { __pyx_v_iterations = ((size_t)((size_t)1)); } if (values[6]) { __pyx_v_max_rows_per_chunk = __Pyx_PyLong_As_size_t(values[6]); if (unlikely((__pyx_v_max_rows_per_chunk == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 4800, __pyx_L3_error) } else { __pyx_v_max_rows_per_chunk = ((size_t)((size_t)0x4000)); } } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_bench_dataframe_plan_and_populate_column_chunks", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 4792, __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._bench_dataframe_plan_and_populate_column_chunks", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_16_bench_dataframe_plan_and_populate_column_chunks(__pyx_self, __pyx_v_df, __pyx_v_table_name, __pyx_v_table_name_col, __pyx_v_symbols, __pyx_v_at, __pyx_v_iterations, __pyx_v_max_rows_per_chunk); /* … */ if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_at, Py_None) < (0)) __PYX_ERR(0, 4792, __pyx_L1_error)
+4799: size_t iterations=1,
__pyx_t_18 = __Pyx_PyLong_FromSize_t(((size_t)1)); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_iterations, __pyx_t_18) < (0)) __PYX_ERR(0, 4792, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+4800: size_t max_rows_per_chunk=16384):
__pyx_t_18 = __Pyx_PyLong_FromSize_t(((size_t)0x4000)); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_max_rows_per_chunk, __pyx_t_18) < (0)) __PYX_ERR(0, 4792, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
4801: """
4802: Internal benchmark hook for Layer 1 pandas columnar work.
4803:
4804: This builds the shared dataframe plan and populates #148 chunks, but it
4805: never flushes to a sender. It is intentionally kept out of ``__all__``.
4806: """
4807: cdef size_t iteration
+4808: cdef qdb_pystr_buf* b = NULL
__pyx_v_b = NULL;
4809: cdef dataframe_plan_t plan
+4810: cdef qwp_chunk* chunk = NULL
__pyx_v_chunk = NULL;
+4811: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
4812: cdef uint64_t start_row_path_emissions
4813: cdef uint64_t end_row_path_emissions
+4814: cdef size_t row_count = 0
__pyx_v_row_count = 0;
+4815: cdef size_t col_count = 0
__pyx_v_col_count = 0;
+4816: cdef size_t populated_rows = 0
__pyx_v_populated_rows = 0;
+4817: cdef size_t populated_rows_total = 0
__pyx_v_populated_rows_total = 0;
+4818: cdef size_t populated_chunks = 0
__pyx_v_populated_chunks = 0;
+4819: cdef size_t rows_per_chunk = 0
__pyx_v_rows_per_chunk = 0;
4820: cdef size_t row_offset
4821: cdef size_t chunk_rows
4822: global _dataframe_count_row_path_emissions
4823: global _dataframe_row_path_emissions
4824:
+4825: if iterations == 0:
__pyx_t_1 = (__pyx_v_iterations == 0);
if (unlikely(__pyx_t_1)) {
/* … */
}
+4826: raise ValueError('iterations must be greater than zero')
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_iterations_must_be_greater_than};
__pyx_t_2 = __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_2)) __PYX_ERR(0, 4826, __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(0, 4826, __pyx_L1_error)
4827:
+4828: start_row_path_emissions = _dataframe_row_path_emissions
__pyx_v_start_row_path_emissions = __pyx_v_7questdb_7_client__dataframe_row_path_emissions;
+4829: _dataframe_count_row_path_emissions = True
__pyx_v_7questdb_7_client__dataframe_count_row_path_emissions = 1;
+4830: try:
/*try:*/ {
+4831: for iteration in range(iterations):
__pyx_t_4 = __pyx_v_iterations;
__pyx_t_5 = __pyx_t_4;
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_iteration = __pyx_t_6;
+4832: b = qdb_pystr_buf_new()
__pyx_v_b = qdb_pystr_buf_new();
+4833: plan = dataframe_plan_blank()
__pyx_v_plan = __pyx_f_7questdb_7_client_dataframe_plan_blank();
+4834: try:
/*try:*/ {
+4835: _dataframe_plan_build(
__pyx_t_7 = __pyx_f_7questdb_7_client__dataframe_plan_build(__pyx_v_b, __pyx_v_df, __pyx_v_table_name, __pyx_v_table_name_col, __pyx_v_symbols, __pyx_v_at, (&__pyx_v_plan), ((PyObject*)__pyx_t_2)); if (unlikely(__pyx_t_7 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4835, __pyx_L12_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4836: b,
4837: df,
4838: table_name,
4839: table_name_col,
4840: symbols,
4841: at,
4842: &plan,
+4843: _FIELD_TARGETS_QWP)
__pyx_t_2 = __pyx_v_7questdb_7_client__FIELD_TARGETS_QWP;
__Pyx_INCREF(__pyx_t_2);
+4844: row_count = plan.row_count
__pyx_t_8 = __pyx_v_plan.row_count;
__pyx_v_row_count = __pyx_t_8;
+4845: col_count = plan.col_count
__pyx_t_8 = __pyx_v_plan.col_count;
__pyx_v_col_count = __pyx_t_8;
+4846: if (plan.col_count == 0) or (plan.row_count == 0):
__pyx_t_9 = (__pyx_v_plan.col_count == 0);
if (!__pyx_t_9) {
} else {
__pyx_t_1 = __pyx_t_9;
goto __pyx_L15_bool_binop_done;
}
__pyx_t_9 = (__pyx_v_plan.row_count == 0);
__pyx_t_1 = __pyx_t_9;
__pyx_L15_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+4847: continue
goto __pyx_L9_continue;
4848:
+4849: _dataframe_columnar_promote_cols(df, &plan)
__pyx_t_7 = __pyx_f_7questdb_7_client__dataframe_columnar_promote_cols(__pyx_v_df, (&__pyx_v_plan)); if (unlikely(__pyx_t_7 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4849, __pyx_L12_error)
+4850: _dataframe_columnar_validate_plan(df, &plan)
__pyx_t_7 = __pyx_f_7questdb_7_client__dataframe_columnar_validate_plan(__pyx_v_df, (&__pyx_v_plan)); if (unlikely(__pyx_t_7 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4850, __pyx_L12_error)
+4851: _dataframe_columnar_prebuild_pyobj(df, &plan)
__pyx_t_7 = __pyx_f_7questdb_7_client__dataframe_columnar_prebuild_pyobj(__pyx_v_df, (&__pyx_v_plan)); if (unlikely(__pyx_t_7 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4851, __pyx_L12_error)
+4852: rows_per_chunk = _dataframe_columnar_rows_per_chunk(
__pyx_v_rows_per_chunk = __pyx_f_7questdb_7_client__dataframe_columnar_rows_per_chunk((&__pyx_v_plan), __pyx_v_max_rows_per_chunk);
4853: &plan,
4854: max_rows_per_chunk)
+4855: chunk = qwp_chunk_new(
__pyx_v_chunk = qwp_chunk_new(__pyx_v_plan.c_table_name.buf, __pyx_v_plan.c_table_name.len, (&__pyx_v_err));
4856: plan.c_table_name.buf,
4857: plan.c_table_name.len,
4858: &err)
+4859: if chunk == NULL:
__pyx_t_1 = (__pyx_v_chunk == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+4860: raise 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(0, 4860, __pyx_L12_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(0, 4860, __pyx_L12_error)
+4861: row_offset = 0
__pyx_v_row_offset = 0;
+4862: while row_offset < plan.row_count:
while (1) {
__pyx_t_1 = (__pyx_v_row_offset < __pyx_v_plan.row_count);
if (!__pyx_t_1) break;
+4863: if not qwp_chunk_clear(chunk, &err):
__pyx_t_1 = (!qwp_chunk_clear(__pyx_v_chunk, (&__pyx_v_err)));
if (unlikely(__pyx_t_1)) {
/* … */
}
+4864: raise 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(0, 4864, __pyx_L12_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(0, 4864, __pyx_L12_error)
+4865: chunk_rows = rows_per_chunk
__pyx_v_chunk_rows = __pyx_v_rows_per_chunk;
+4866: if chunk_rows > plan.row_count - row_offset:
__pyx_t_1 = (__pyx_v_chunk_rows > (__pyx_v_plan.row_count - __pyx_v_row_offset));
if (__pyx_t_1) {
/* … */
}
+4867: chunk_rows = plan.row_count - row_offset
__pyx_v_chunk_rows = (__pyx_v_plan.row_count - __pyx_v_row_offset);
+4868: _dataframe_columnar_populate_chunk(
__pyx_t_7 = __pyx_f_7questdb_7_client__dataframe_columnar_populate_chunk((&__pyx_v_plan), __pyx_v_chunk, __pyx_v_row_offset, __pyx_v_chunk_rows); if (unlikely(__pyx_t_7 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4868, __pyx_L12_error)
4869: &plan,
4870: chunk,
4871: row_offset,
4872: chunk_rows)
+4873: populated_rows = qwp_chunk_row_count(chunk, &err)
__pyx_v_populated_rows = qwp_chunk_row_count(__pyx_v_chunk, (&__pyx_v_err));
+4874: if populated_rows == <size_t>-1:
__pyx_t_1 = (__pyx_v_populated_rows == ((size_t)-1L));
if (unlikely(__pyx_t_1)) {
/* … */
}
+4875: raise 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(0, 4875, __pyx_L12_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(0, 4875, __pyx_L12_error)
+4876: if populated_rows != 0:
__pyx_t_1 = (__pyx_v_populated_rows != 0);
if (__pyx_t_1) {
/* … */
}
+4877: populated_chunks += 1
__pyx_v_populated_chunks = (__pyx_v_populated_chunks + 1);
+4878: populated_rows_total += populated_rows
__pyx_v_populated_rows_total = (__pyx_v_populated_rows_total + __pyx_v_populated_rows);
+4879: row_offset += chunk_rows
__pyx_v_row_offset = (__pyx_v_row_offset + __pyx_v_chunk_rows);
}
}
4880: finally:
+4881: if chunk != NULL:
/*finally:*/ {
/*normal exit:*/{
__pyx_t_1 = (__pyx_v_chunk != NULL);
if (__pyx_t_1) {
/* … */
}
/* … */
__pyx_t_1 = (__pyx_v_chunk != NULL);
if (__pyx_t_1) {
/* … */
}
/* … */
__pyx_t_1 = (__pyx_v_chunk != NULL);
if (__pyx_t_1) {
/* … */
}
+4882: qwp_chunk_free(chunk)
qwp_chunk_free(__pyx_v_chunk);
/* … */
qwp_chunk_free(__pyx_v_chunk);
/* … */
qwp_chunk_free(__pyx_v_chunk);
+4883: chunk = NULL
__pyx_v_chunk = NULL;
/* … */
__pyx_v_chunk = NULL;
/* … */
__pyx_v_chunk = NULL;
+4884: dataframe_plan_release(&plan)
__pyx_f_7questdb_7_client_dataframe_plan_release((&__pyx_v_plan));
/* … */
__pyx_f_7questdb_7_client_dataframe_plan_release((&__pyx_v_plan));
/* … */
__pyx_f_7questdb_7_client_dataframe_plan_release((&__pyx_v_plan));
+4885: if b != NULL:
__pyx_t_1 = (__pyx_v_b != NULL);
if (__pyx_t_1) {
/* … */
}
goto __pyx_L13;
}
__pyx_L12_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
if ( unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_17);
__Pyx_XGOTREF(__pyx_t_18);
__pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
{
/* … */
__pyx_t_1 = (__pyx_v_b != NULL);
if (__pyx_t_1) {
/* … */
}
}
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15);
__pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
__pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12;
goto __pyx_L5_error;
}
__pyx_L9_continue: {
/* … */
__pyx_t_1 = (__pyx_v_b != NULL);
if (__pyx_t_1) {
/* … */
}
goto __pyx_L7_continue;
}
__pyx_L13:;
}
__pyx_L7_continue:;
}
}
+4886: qdb_pystr_buf_free(b)
qdb_pystr_buf_free(__pyx_v_b);
/* … */
qdb_pystr_buf_free(__pyx_v_b);
/* … */
qdb_pystr_buf_free(__pyx_v_b);
+4887: b = NULL
__pyx_v_b = NULL;
/* … */
__pyx_v_b = NULL;
/* … */
__pyx_v_b = NULL;
4888: finally:
+4889: _dataframe_count_row_path_emissions = False
/*finally:*/ {
/*normal exit:*/{
__pyx_v_7questdb_7_client__dataframe_count_row_path_emissions = 0;
goto __pyx_L6;
}
__pyx_L5_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_14, &__pyx_t_13);
if ( unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_18);
__Pyx_XGOTREF(__pyx_t_17);
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_13);
__pyx_t_11 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_19 = __pyx_filename;
{
__pyx_v_7questdb_7_client__dataframe_count_row_path_emissions = 0;
}
__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);
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_ErrRestore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
__pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_13 = 0;
__pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_19;
goto __pyx_L1_error;
}
__pyx_L6:;
}
4890:
+4891: end_row_path_emissions = _dataframe_row_path_emissions
__pyx_v_end_row_path_emissions = __pyx_v_7questdb_7_client__dataframe_row_path_emissions;
+4892: return {
__Pyx_XDECREF(__pyx_r);
+4893: 'iterations': iterations,
__pyx_t_2 = __Pyx_PyDict_NewPresized(9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyLong_FromSize_t(__pyx_v_iterations); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_iterations, __pyx_t_3) < (0)) __PYX_ERR(0, 4893, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4894: 'row_count': row_count,
__pyx_t_3 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_row_count, __pyx_t_3) < (0)) __PYX_ERR(0, 4893, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4895: 'col_count': col_count,
__pyx_t_3 = __Pyx_PyLong_FromSize_t(__pyx_v_col_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_col_count, __pyx_t_3) < (0)) __PYX_ERR(0, 4893, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4896: 'logical_cells': row_count * col_count,
__pyx_t_3 = __Pyx_PyLong_FromSize_t((__pyx_v_row_count * __pyx_v_col_count)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_logical_cells, __pyx_t_3) < (0)) __PYX_ERR(0, 4893, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4897: 'rows_per_chunk': rows_per_chunk,
__pyx_t_3 = __Pyx_PyLong_FromSize_t(__pyx_v_rows_per_chunk); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_rows_per_chunk, __pyx_t_3) < (0)) __PYX_ERR(0, 4893, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4898: 'populated_chunks': populated_chunks,
__pyx_t_3 = __Pyx_PyLong_FromSize_t(__pyx_v_populated_chunks); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_populated_chunks, __pyx_t_3) < (0)) __PYX_ERR(0, 4893, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4899: 'populated_rows_total': populated_rows_total,
__pyx_t_3 = __Pyx_PyLong_FromSize_t(__pyx_v_populated_rows_total); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_populated_rows_total, __pyx_t_3) < (0)) __PYX_ERR(0, 4893, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4900: 'last_populated_rows': populated_rows,
__pyx_t_3 = __Pyx_PyLong_FromSize_t(__pyx_v_populated_rows); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_last_populated_rows, __pyx_t_3) < (0)) __PYX_ERR(0, 4893, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4901: 'row_path_cell_emissions': (
+4902: end_row_path_emissions - start_row_path_emissions),
__pyx_t_3 = __Pyx_PyLong_From_uint64_t((__pyx_v_end_row_path_emissions - __pyx_v_start_row_path_emissions)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_row_path_cell_emissions, __pyx_t_3) < (0)) __PYX_ERR(0, 4893, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
4903: }
4904:
4905:
+4906: cdef object _POLARS = None
__Pyx_INCREF(Py_None); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__POLARS); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__POLARS, Py_None); __Pyx_GIVEREF(Py_None);
+4907: cdef object _POLARS_DATAFRAME_T = None
__Pyx_INCREF(Py_None); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__POLARS_DATAFRAME_T); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__POLARS_DATAFRAME_T, Py_None); __Pyx_GIVEREF(Py_None);
+4908: cdef object _POLARS_LAZYFRAME_T = None
__Pyx_INCREF(Py_None); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__POLARS_LAZYFRAME_T); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__POLARS_LAZYFRAME_T, Py_None); __Pyx_GIVEREF(Py_None);
4909:
4910:
+4911: cdef bint _try_import_polars():
static int __pyx_f_7questdb_7_client__try_import_polars(void) {
PyObject *__pyx_v_polars = NULL;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("questdb._client._try_import_polars", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_polars);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4912: global _POLARS, _POLARS_DATAFRAME_T, _POLARS_LAZYFRAME_T
+4913: if _POLARS is not None:
__pyx_t_1 = (__pyx_v_7questdb_7_client__POLARS != Py_None);
if (__pyx_t_1) {
/* … */
}
+4914: return True
__pyx_r = 1;
goto __pyx_L0;
+4915: 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_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
__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_L7_except_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_L9_try_end:;
}
+4916: import polars
__pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_polars, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4916, __pyx_L4_error) __pyx_t_5 = __pyx_t_6; __Pyx_GOTREF(__pyx_t_5); __pyx_v_polars = __pyx_t_5; __pyx_t_5 = 0;
+4917: except ImportError:
__pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError)))); if (__pyx_t_7) { __Pyx_ErrRestore(0,0,0);
+4918: return False
__pyx_r = 0;
goto __pyx_L7_except_return;
}
goto __pyx_L6_except_error;
+4919: _POLARS_DATAFRAME_T = polars.DataFrame
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_polars, __pyx_mstate_global->__pyx_n_u_DataFrame); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__POLARS_DATAFRAME_T); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__POLARS_DATAFRAME_T, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0;
+4920: _POLARS_LAZYFRAME_T = polars.LazyFrame
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_polars, __pyx_mstate_global->__pyx_n_u_LazyFrame); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4920, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__POLARS_LAZYFRAME_T); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__POLARS_LAZYFRAME_T, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = 0;
+4921: _POLARS = polars
__Pyx_INCREF(__pyx_v_polars); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__POLARS); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__POLARS, __pyx_v_polars); __Pyx_GIVEREF(__pyx_v_polars);
+4922: return True
__pyx_r = 1; goto __pyx_L0;
4923:
4924:
+4925: cdef bint _is_polars_dataframe_or_lazy(object obj):
static int __pyx_f_7questdb_7_client__is_polars_dataframe_or_lazy(PyObject *__pyx_v_obj) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client._is_polars_dataframe_or_lazy", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+4926: if not _try_import_polars():
__pyx_t_1 = __pyx_f_7questdb_7_client__try_import_polars(); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4926, __pyx_L1_error) __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { /* … */ }
+4927: return False
__pyx_r = 0;
goto __pyx_L0;
+4928: return isinstance(obj, (_POLARS_DATAFRAME_T, _POLARS_LAZYFRAME_T))
__Pyx_INCREF(__pyx_v_7questdb_7_client__POLARS_DATAFRAME_T); __pyx_t_3 = __pyx_v_7questdb_7_client__POLARS_DATAFRAME_T; __Pyx_INCREF(__pyx_v_7questdb_7_client__POLARS_LAZYFRAME_T); __pyx_t_4 = __pyx_v_7questdb_7_client__POLARS_LAZYFRAME_T; __pyx_t_1 = PyObject_IsInstance(__pyx_v_obj, __pyx_t_3); if (!__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L4_bool_binop_done; } __pyx_t_1 = PyObject_IsInstance(__pyx_v_obj, __pyx_t_4); __pyx_t_2 = __pyx_t_1; __pyx_L4_bool_binop_done:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; goto __pyx_L0;
4929:
4930:
+4931: cdef void_int _capsule_consume_stream(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__capsule_consume_stream(struct qwp_direct_sender *__pyx_v_conn, PyObject *__pyx_v_stream_owner, struct line_sender_table_name __pyx_v_c_table_name, struct line_sender_column_name *__pyx_v_c_ts_column_ptr, int __pyx_v_at_scalar_set, int64_t __pyx_v_at_scalar_nanos, struct ArrowSchema *__pyx_v_c_schema, struct qwp_arrow_override const *__pyx_v_c_overrides, size_t __pyx_v_c_overrides_len, int *__pyx_v_any_flushed, size_t *__pyx_v_deferred_since_sync, int *__pyx_v_committed_prefix) {
PyObject *__pyx_v_stream_capsule = 0;
struct ArrowArrayStream *__pyx_v_stream;
struct ArrowArray __pyx_v_batch;
int __pyx_v_rc;
char const *__pyx_v_stream_err;
__pyx_t_7questdb_7_client_void_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_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("questdb._client._capsule_consume_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_stream_capsule);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
4932: qwp_direct_sender* conn,
4933: object stream_owner,
4934: line_sender_table_name c_table_name,
4935: line_sender_column_name* c_ts_column_ptr,
4936: bint at_scalar_set,
4937: int64_t at_scalar_nanos,
4938: ArrowSchema* c_schema,
4939: const qwp_arrow_override* c_overrides,
4940: size_t c_overrides_len,
4941: bint* any_flushed,
4942: size_t* deferred_since_sync,
4943: bint* committed_prefix) except -1:
4944: # `c_schema` is in/out and owned by the caller: zero-init on first
4945: # call (this function populates it via get_schema), reused as-is on
4946: # subsequent calls (Arrow C Data Interface guarantees slices of the
4947: # same source share schema), and released by the caller.
+4948: cdef object stream_capsule = stream_owner.__arrow_c_stream__()
__pyx_t_2 = __pyx_v_stream_owner; __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_arrow_c_stream, __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(0, 4948, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_v_stream_capsule = __pyx_t_1; __pyx_t_1 = 0;
+4949: if not PyCapsule_IsValid(stream_capsule, b'arrow_array_stream'):
__pyx_t_4 = (!PyCapsule_IsValid(__pyx_v_stream_capsule, __pyx_k_arrow_array_stream));
if (unlikely(__pyx_t_4)) {
/* … */
}
+4950: raise TypeError(
__pyx_t_2 = NULL;
__pyx_t_3 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_arrow_c_stream___did_not_retur};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4950, __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(0, 4950, __pyx_L1_error)
4951: '__arrow_c_stream__ did not return a valid arrow_array_stream '
4952: 'PyCapsule.')
+4953: cdef ArrowArrayStream* stream = <ArrowArrayStream*>PyCapsule_GetPointer(
__pyx_t_5 = PyCapsule_GetPointer(__pyx_v_stream_capsule, __pyx_k_arrow_array_stream); if (unlikely(__pyx_t_5 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 4953, __pyx_L1_error) __pyx_v_stream = ((struct ArrowArrayStream *)__pyx_t_5);
4954: stream_capsule, b'arrow_array_stream')
4955: cdef ArrowArray batch
4956: cdef int rc
4957: cdef const char* stream_err
4958:
+4959: if (stream == NULL or stream.get_schema == NULL or
__pyx_t_6 = (__pyx_v_stream == NULL);
if (!__pyx_t_6) {
} else {
__pyx_t_4 = __pyx_t_6;
goto __pyx_L5_bool_binop_done;
}
__pyx_t_6 = (__pyx_v_stream->get_schema == NULL);
if (!__pyx_t_6) {
} else {
__pyx_t_4 = __pyx_t_6;
goto __pyx_L5_bool_binop_done;
}
/* … */
if (unlikely(__pyx_t_4)) {
/* … */
}
+4960: stream.get_next == NULL or stream.get_last_error == NULL):
__pyx_t_6 = (__pyx_v_stream->get_next == NULL);
if (!__pyx_t_6) {
} else {
__pyx_t_4 = __pyx_t_6;
goto __pyx_L5_bool_binop_done;
}
__pyx_t_6 = (__pyx_v_stream->get_last_error == NULL);
__pyx_t_4 = __pyx_t_6;
__pyx_L5_bool_binop_done:;
+4961: raise TypeError(
__pyx_t_2 = NULL;
__pyx_t_3 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_arrow_c_stream___returned_a_ma};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4961, __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(0, 4961, __pyx_L1_error)
4962: '__arrow_c_stream__ returned a malformed arrow_array_stream '
4963: 'PyCapsule with NULL callbacks.')
4964:
+4965: if c_schema.release == NULL:
__pyx_t_4 = (__pyx_v_c_schema->release == NULL);
if (__pyx_t_4) {
/* … */
}
+4966: rc = stream.get_schema(stream, c_schema)
__pyx_v_rc = __pyx_v_stream->get_schema(__pyx_v_stream, __pyx_v_c_schema);
+4967: if rc != 0:
__pyx_t_4 = (__pyx_v_rc != 0);
if (unlikely(__pyx_t_4)) {
/* … */
}
+4968: stream_err = stream.get_last_error(stream)
__pyx_v_stream_err = __pyx_v_stream->get_last_error(__pyx_v_stream);
+4969: raise QuestDBError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4969, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+4970: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4970, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4970, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+4971: f'Arrow stream get_schema failed: '
__pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Arrow_stream_get_schema_failed, __pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 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[3] = {__pyx_t_2, __pyx_t_9, __pyx_t_8}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __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; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 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(0, 4969, __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(0, 4969, __pyx_L1_error)
+4972: f'{stream_err.decode("utf-8", errors="replace") if stream_err != NULL else "unknown"}')
__pyx_t_4 = (__pyx_v_stream_err != NULL);
if (__pyx_t_4) {
__pyx_t_12 = __Pyx_PyBytes_FromString(__pyx_v_stream_err); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4972, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_11 = __pyx_t_12;
__Pyx_INCREF(__pyx_t_11);
__pyx_t_3 = 0;
{
PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_11, __pyx_mstate_global->__pyx_kp_u_utf_8};
__pyx_t_13 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 4972, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_errors, __pyx_mstate_global->__pyx_n_u_replace, __pyx_t_13, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4972, __pyx_L1_error)
__pyx_t_10 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_13);
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4972, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
}
__pyx_t_8 = __pyx_t_10;
__pyx_t_10 = 0;
} else {
__Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_unknown);
__pyx_t_8 = __pyx_mstate_global->__pyx_n_u_unknown;
}
__pyx_t_10 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4972, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
4973:
+4974: while True:
while (1) {
+4975: memset(&batch, 0, sizeof(ArrowArray))
(void)(memset((&__pyx_v_batch), 0, (sizeof(struct ArrowArray))));
+4976: rc = stream.get_next(stream, &batch)
__pyx_v_rc = __pyx_v_stream->get_next(__pyx_v_stream, (&__pyx_v_batch));
+4977: if rc != 0:
__pyx_t_4 = (__pyx_v_rc != 0);
if (unlikely(__pyx_t_4)) {
/* … */
}
+4978: stream_err = stream.get_last_error(stream)
__pyx_v_stream_err = __pyx_v_stream->get_last_error(__pyx_v_stream);
+4979: raise QuestDBError(
__pyx_t_7 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4979, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
+4980: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4980, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+4981: f'Arrow stream get_next failed: '
__pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Arrow_stream_get_next_failed, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4981, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __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[3] = {__pyx_t_7, __pyx_t_2, __pyx_t_9}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4979, __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(0, 4979, __pyx_L1_error)
+4982: f'{stream_err.decode("utf-8", errors="replace") if stream_err != NULL else "unknown"}')
__pyx_t_4 = (__pyx_v_stream_err != NULL);
if (__pyx_t_4) {
__pyx_t_13 = __Pyx_PyBytes_FromString(__pyx_v_stream_err); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 4982, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_12 = __pyx_t_13;
__Pyx_INCREF(__pyx_t_12);
__pyx_t_3 = 0;
{
PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_utf_8};
__pyx_t_11 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4982, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_errors, __pyx_mstate_global->__pyx_n_u_replace, __pyx_t_11, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 4982, __pyx_L1_error)
__pyx_t_10 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_11);
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4982, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
}
__pyx_t_9 = __pyx_t_10;
__pyx_t_10 = 0;
} else {
__Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_unknown);
__pyx_t_9 = __pyx_mstate_global->__pyx_n_u_unknown;
}
__pyx_t_10 = __Pyx_PyUnicode_Unicode(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4982, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+4983: if batch.release == NULL:
__pyx_t_4 = (__pyx_v_batch.release == NULL);
if (__pyx_t_4) {
/* … */
}
+4984: break
goto __pyx_L12_break;
+4985: try:
/*try:*/ {
+4986: if deferred_since_sync[0] >= _QWP_MAX_DEFERRED_ARROW_FRAMES:
__pyx_t_4 = ((__pyx_v_deferred_since_sync[0]) >= __pyx_v_7questdb_7_client__QWP_MAX_DEFERRED_ARROW_FRAMES);
if (__pyx_t_4) {
/* … */
}
+4987: _dataframe_columnar_sync(conn)
__pyx_t_14 = __pyx_f_7questdb_7_client__dataframe_columnar_sync(__pyx_v_conn); if (unlikely(__pyx_t_14 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4987, __pyx_L18_error)
+4988: committed_prefix[0] = True
(__pyx_v_committed_prefix[0]) = 1;
+4989: deferred_since_sync[0] = 0
(__pyx_v_deferred_since_sync[0]) = 0;
+4990: _dataframe_arrow_flush_batch(
__pyx_t_14 = __pyx_f_7questdb_7_client__dataframe_arrow_flush_batch(__pyx_v_conn, __pyx_v_c_table_name, (&__pyx_v_batch), __pyx_v_c_schema, __pyx_v_c_ts_column_ptr, __pyx_v_at_scalar_set, __pyx_v_at_scalar_nanos, __pyx_v_c_overrides, __pyx_v_c_overrides_len, 1, __pyx_v_committed_prefix, __pyx_v_deferred_since_sync); if (unlikely(__pyx_t_14 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 4990, __pyx_L18_error)
4991: conn, c_table_name, &batch, c_schema, c_ts_column_ptr,
4992: at_scalar_set, at_scalar_nanos,
4993: c_overrides, c_overrides_len,
4994: True, committed_prefix,
4995: deferred_since_sync)
+4996: any_flushed[0] = True
(__pyx_v_any_flushed[0]) = 1;
+4997: deferred_since_sync[0] += 1
__pyx_t_15 = 0;
(__pyx_v_deferred_since_sync[__pyx_t_15]) = ((__pyx_v_deferred_since_sync[__pyx_t_15]) + 1);
}
4998: finally:
+4999: if batch.release != NULL:
/*finally:*/ {
/*normal exit:*/{
__pyx_t_4 = (__pyx_v_batch.release != NULL);
if (__pyx_t_4) {
/* … */
}
goto __pyx_L19;
}
__pyx_L18_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__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;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 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_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24);
if ( unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
__Pyx_XGOTREF(__pyx_t_19);
__Pyx_XGOTREF(__pyx_t_20);
__Pyx_XGOTREF(__pyx_t_21);
__Pyx_XGOTREF(__pyx_t_22);
__Pyx_XGOTREF(__pyx_t_23);
__Pyx_XGOTREF(__pyx_t_24);
__pyx_t_16 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
{
__pyx_t_4 = (__pyx_v_batch.release != NULL);
if (__pyx_t_4) {
/* … */
}
}
__Pyx_XGIVEREF(__pyx_t_22);
__Pyx_XGIVEREF(__pyx_t_23);
__Pyx_XGIVEREF(__pyx_t_24);
__Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24);
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_XGIVEREF(__pyx_t_21);
__Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
__pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
__pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18;
goto __pyx_L1_error;
}
__pyx_L19:;
}
}
__pyx_L12_break:;
+5000: batch.release(&batch)
__pyx_v_batch.release((&__pyx_v_batch));
/* … */
__pyx_v_batch.release((&__pyx_v_batch));
5001:
5002:
+5003: cdef object _validate_schema_overrides(object schema_overrides):
static PyObject *__pyx_f_7questdb_7_client__validate_schema_overrides(PyObject *__pyx_v_schema_overrides) {
PyObject *__pyx_v_out = 0;
PyObject *__pyx_v_name = 0;
PyObject *__pyx_v_override = 0;
PyObject *__pyx_v_kind = 0;
PyObject *__pyx_v_value = 0;
int __pyx_v_kind_int;
int __pyx_v_arg_int;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_AddTraceback("questdb._client._validate_schema_overrides", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_out);
__Pyx_XDECREF(__pyx_v_name);
__Pyx_XDECREF(__pyx_v_override);
__Pyx_XDECREF(__pyx_v_kind);
__Pyx_XDECREF(__pyx_v_value);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5004: """Convert the public schema_overrides dict into a list of
5005: (name_bytes, kind_int, arg_int) tuples. Returns None if empty.
5006:
5007: Keeping `name_bytes` alive on the Python side lets the C overrides
5008: array borrow the underlying char* without an extra copy.
5009: """
+5010: if not schema_overrides:
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_schema_overrides); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5010, __pyx_L1_error) __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { /* … */ }
+5011: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
+5012: if not isinstance(schema_overrides, dict):
__pyx_t_2 = PyDict_Check(__pyx_v_schema_overrides);
__pyx_t_1 = (!__pyx_t_2);
if (unlikely(__pyx_t_1)) {
/* … */
}
+5013: raise TypeError(
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_schema_overrides_must_be_a_dict};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5013, __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(0, 5013, __pyx_L1_error)
5014: 'schema_overrides must be a dict mapping column name to '
5015: "one of: 'symbol', 'ipv4', 'char', or ('geohash', bits).")
+5016: cdef list out = []
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_out = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
5017: cdef object name, override, kind, value
5018: cdef int kind_int
5019: cdef int arg_int
+5020: for name, override in schema_overrides.items():
__pyx_t_6 = 0;
if (unlikely(__pyx_v_schema_overrides == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
__PYX_ERR(0, 5020, __pyx_L1_error)
}
__pyx_t_4 = __Pyx_dict_iterator(__pyx_v_schema_overrides, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5020, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_3);
__pyx_t_3 = __pyx_t_4;
__pyx_t_4 = 0;
while (1) {
__pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_7, &__pyx_t_6, &__pyx_t_4, &__pyx_t_9, NULL, __pyx_t_8);
if (unlikely(__pyx_t_10 == 0)) break;
if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 5020, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_t_9);
__Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_4);
__pyx_t_4 = 0;
__Pyx_XDECREF_SET(__pyx_v_override, __pyx_t_9);
__pyx_t_9 = 0;
+5021: if not isinstance(name, str):
__pyx_t_1 = PyUnicode_Check(__pyx_v_name);
__pyx_t_2 = (!__pyx_t_1);
if (unlikely(__pyx_t_2)) {
/* … */
}
+5022: raise TypeError(
__pyx_t_4 = NULL;
+5023: f'schema_overrides key must be str, got '
__pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, 38 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5023, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_5 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_11}; __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5022, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); } __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(0, 5022, __pyx_L1_error)
+5024: f'{type(name).__name__}.')
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_name)), __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5024, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5024, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_schema_overrides_key_must_be_str; __pyx_t_13[1] = __pyx_t_12; __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u__2;
+5025: if isinstance(override, str):
__pyx_t_2 = PyUnicode_Check(__pyx_v_override);
if (__pyx_t_2) {
/* … */
goto __pyx_L8;
}
+5026: kind = override
__Pyx_INCREF(__pyx_v_override); __Pyx_XDECREF_SET(__pyx_v_kind, __pyx_v_override);
+5027: value = None
__Pyx_INCREF(Py_None); __Pyx_XDECREF_SET(__pyx_v_value, Py_None);
+5028: elif isinstance(override, tuple) and len(override) == 2:
__pyx_t_1 = PyTuple_Check(__pyx_v_override); if (__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L9_bool_binop_done; } __pyx_t_14 = PyObject_Length(__pyx_v_override); if (unlikely(__pyx_t_14 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5028, __pyx_L1_error) __pyx_t_1 = (__pyx_t_14 == 2); __pyx_t_2 = __pyx_t_1; __pyx_L9_bool_binop_done:; if (likely(__pyx_t_2)) { /* … */ goto __pyx_L8; }
+5029: kind, value = override
if ((likely(PyTuple_CheckExact(__pyx_v_override))) || (PyList_CheckExact(__pyx_v_override))) { PyObject* sequence = __pyx_v_override; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 5029, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_9); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_11); } else { __pyx_t_9 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5029, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5029, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_11); } #else __pyx_t_9 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5029, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5029, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); #endif } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_override); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5029, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_15 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); index = 0; __pyx_t_9 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_9)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); index = 1; __pyx_t_11 = __pyx_t_15(__pyx_t_4); if (unlikely(!__pyx_t_11)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_11); if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_4), 2) < (0)) __PYX_ERR(0, 5029, __pyx_L1_error) __pyx_t_15 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L12_unpacking_done; __pyx_L11_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_15 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 5029, __pyx_L1_error) __pyx_L12_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_kind, __pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_11); __pyx_t_11 = 0;
5030: else:
+5031: raise TypeError(
/*else*/ {
__pyx_t_9 = NULL;
+5032: f'schema_overrides[{name!r}] has invalid shape '
__pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); /* … */ __pyx_t_17 = __Pyx_PyUnicode_Join(__pyx_t_16, 5, 17 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 20 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12) + 38, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12)); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 5032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_5 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_17}; __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); } __Pyx_Raise(__pyx_t_11, 0, 0, 0); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __PYX_ERR(0, 5031, __pyx_L1_error) } __pyx_L8:;
+5033: f'{override!r}; expected str or (kind, value) tuple.')
__pyx_t_12 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_override), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5033, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_16[0] = __pyx_mstate_global->__pyx_kp_u_schema_overrides; __pyx_t_16[1] = __pyx_t_4; __pyx_t_16[2] = __pyx_mstate_global->__pyx_kp_u_has_invalid_shape; __pyx_t_16[3] = __pyx_t_12; __pyx_t_16[4] = __pyx_mstate_global->__pyx_kp_u_expected_str_or_kind_value_tupl;
+5034: arg_int = 0
__pyx_v_arg_int = 0;
+5035: if kind == 'symbol':
__pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_kind, __pyx_mstate_global->__pyx_n_u_symbol, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5035, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L13; }
+5036: kind_int = <int>qwp_arrow_override_symbol
__pyx_v_kind_int = ((int)qwp_arrow_override_symbol);
+5037: elif kind == 'ipv4':
__pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_kind, __pyx_mstate_global->__pyx_n_u_ipv4, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5037, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L13; }
+5038: kind_int = <int>qwp_arrow_override_ipv4
__pyx_v_kind_int = ((int)qwp_arrow_override_ipv4);
+5039: elif kind == 'char':
__pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_kind, __pyx_mstate_global->__pyx_n_u_char, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5039, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L13; }
+5040: kind_int = <int>qwp_arrow_override_char
__pyx_v_kind_int = ((int)qwp_arrow_override_char);
+5041: elif kind == 'geohash':
__pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_kind, __pyx_mstate_global->__pyx_n_u_geohash, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5041, __pyx_L1_error) if (likely(__pyx_t_2)) { /* … */ goto __pyx_L13; }
+5042: if not isinstance(value, int) or value < 1 or value > 60:
__pyx_t_1 = PyLong_Check(__pyx_v_value); __pyx_t_18 = (!__pyx_t_1); if (!__pyx_t_18) { } else { __pyx_t_2 = __pyx_t_18; goto __pyx_L15_bool_binop_done; } __pyx_t_11 = PyObject_RichCompare(__pyx_v_value, __pyx_mstate_global->__pyx_int_1, Py_LT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5042, __pyx_L1_error) __pyx_t_18 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely((__pyx_t_18 < 0))) __PYX_ERR(0, 5042, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (!__pyx_t_18) { } else { __pyx_t_2 = __pyx_t_18; goto __pyx_L15_bool_binop_done; } __pyx_t_11 = PyObject_RichCompare(__pyx_v_value, __pyx_mstate_global->__pyx_int_60, Py_GT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5042, __pyx_L1_error) __pyx_t_18 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely((__pyx_t_18 < 0))) __PYX_ERR(0, 5042, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_2 = __pyx_t_18; __pyx_L15_bool_binop_done:; if (unlikely(__pyx_t_2)) { /* … */ }
+5043: raise ValueError(
__pyx_t_17 = NULL;
+5044: f'schema_overrides[{name!r}] geohash bits must '
__pyx_t_9 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); /* … */ __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_16, 5, 17 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9) + 42 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_5 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_17, __pyx_t_4}; __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5043, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); } __Pyx_Raise(__pyx_t_11, 0, 0, 0); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __PYX_ERR(0, 5043, __pyx_L1_error)
+5045: f'be int in 1..=60, got {value!r}.')
__pyx_t_12 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_value), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5045, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_16[0] = __pyx_mstate_global->__pyx_kp_u_schema_overrides; __pyx_t_16[1] = __pyx_t_9; __pyx_t_16[2] = __pyx_mstate_global->__pyx_kp_u_geohash_bits_must_be_int_in_1_6; __pyx_t_16[3] = __pyx_t_12; __pyx_t_16[4] = __pyx_mstate_global->__pyx_kp_u__2;
+5046: kind_int = <int>qwp_arrow_override_geohash
__pyx_v_kind_int = ((int)qwp_arrow_override_geohash);
+5047: arg_int = value
__pyx_t_10 = __Pyx_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5047, __pyx_L1_error) __pyx_v_arg_int = __pyx_t_10;
5048: else:
+5049: raise ValueError(
/*else*/ {
__pyx_t_4 = NULL;
+5050: f'schema_overrides[{name!r}] kind {kind!r} not '
__pyx_t_17 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 5050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_12 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_kind), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_16[0] = __pyx_mstate_global->__pyx_kp_u_schema_overrides; __pyx_t_16[1] = __pyx_t_17; __pyx_t_16[2] = __pyx_mstate_global->__pyx_kp_u_kind_2; __pyx_t_16[3] = __pyx_t_12; __pyx_t_16[4] = __pyx_mstate_global->__pyx_kp_u_not_in_symbol_ipv4_char_geohash; __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_16, 5, 17 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17) + 7 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12) + 46, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_17) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_12)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_5 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_9}; __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__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_11)) __PYX_ERR(0, 5049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); } __Pyx_Raise(__pyx_t_11, 0, 0, 0); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __PYX_ERR(0, 5049, __pyx_L1_error) } __pyx_L13:;
5051: "in {'symbol', 'ipv4', 'char', 'geohash'}.")
+5052: out.append((name.encode('utf-8'), kind_int, arg_int))
__pyx_t_9 = __pyx_v_name;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_utf_8};
__pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
}
__pyx_t_9 = __Pyx_PyLong_From_int(__pyx_v_kind_int); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_arg_int); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_GIVEREF(__pyx_t_11);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11) != (0)) __PYX_ERR(0, 5052, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_9);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_9) != (0)) __PYX_ERR(0, 5052, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_4);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_4) != (0)) __PYX_ERR(0, 5052, __pyx_L1_error);
__pyx_t_11 = 0;
__pyx_t_9 = 0;
__pyx_t_4 = 0;
__pyx_t_19 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_12); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(0, 5052, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+5053: return out
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_out); __pyx_r = __pyx_v_out; goto __pyx_L0;
5054:
5055:
+5056: cdef object _capsule_get_column_names(object sliceable):
static PyObject *__pyx_f_7questdb_7_client__capsule_get_column_names(PyObject *__pyx_v_sliceable) {
PyObject *__pyx_v_names = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client._capsule_get_column_names", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_names);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5057: """Return list of str column names from polars / pyarrow input,
5058: or None if the input doesn't expose a uniform name list."""
5059: cdef object names
+5060: names = getattr(sliceable, 'column_names', None)
__pyx_t_1 = __Pyx_GetAttr3(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_column_names, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_names = __pyx_t_1; __pyx_t_1 = 0;
+5061: if names is not None:
__pyx_t_2 = (__pyx_v_names != Py_None);
if (__pyx_t_2) {
/* … */
}
+5062: return list(names)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PySequence_List(__pyx_v_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5062, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+5063: names = getattr(sliceable, 'columns', None)
__pyx_t_1 = __Pyx_GetAttr3(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_columns, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5063, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_names, __pyx_t_1); __pyx_t_1 = 0;
+5064: if names is not None:
__pyx_t_2 = (__pyx_v_names != Py_None);
if (__pyx_t_2) {
/* … */
}
+5065: return list(names)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PySequence_List(__pyx_v_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5065, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+5066: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
5067:
5068:
+5069: cdef object _capsule_at_index_to_name(object sliceable, int idx):
static PyObject *__pyx_f_7questdb_7_client__capsule_at_index_to_name(PyObject *__pyx_v_sliceable, int __pyx_v_idx) {
PyObject *__pyx_v_names = 0;
int __pyx_v_orig;
int __pyx_v_n;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._capsule_at_index_to_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_names);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5070: """Resolve an integer `at` column index (negative allowed) to its name,
5071: mirroring the numpy path's `_bind_col_index`."""
+5072: cdef object names = _capsule_get_column_names(sliceable)
__pyx_t_1 = __pyx_f_7questdb_7_client__capsule_get_column_names(__pyx_v_sliceable); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_names = __pyx_t_1; __pyx_t_1 = 0;
+5073: cdef int orig = idx
__pyx_v_orig = __pyx_v_idx;
5074: cdef int n
+5075: if names is None:
__pyx_t_2 = (__pyx_v_names == Py_None);
if (unlikely(__pyx_t_2)) {
/* … */
}
+5076: raise TypeError(
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Cannot_resolve_an_integer_at_ind};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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(0, 5076, __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(0, 5076, __pyx_L1_error)
5077: 'Cannot resolve an integer `at` index for this Arrow-native '
5078: 'input; pass the designated timestamp column name as a str.')
+5079: n = <int>len(names)
__pyx_t_5 = PyObject_Length(__pyx_v_names); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5079, __pyx_L1_error) __pyx_v_n = ((int)__pyx_t_5);
+5080: if idx < 0:
__pyx_t_2 = (__pyx_v_idx < 0);
if (__pyx_t_2) {
/* … */
}
+5081: idx += n
__pyx_v_idx = (__pyx_v_idx + __pyx_v_n);
+5082: if idx < 0 or idx >= n:
__pyx_t_6 = (__pyx_v_idx < 0);
if (!__pyx_t_6) {
} else {
__pyx_t_2 = __pyx_t_6;
goto __pyx_L6_bool_binop_done;
}
__pyx_t_6 = (__pyx_v_idx >= __pyx_v_n);
__pyx_t_2 = __pyx_t_6;
__pyx_L6_bool_binop_done:;
if (unlikely(__pyx_t_2)) {
/* … */
}
+5083: raise IndexError(f'Bad argument `at`: {orig} index out of range')
__pyx_t_3 = NULL;
__pyx_t_7 = __Pyx_PyUnicode_From_int(__pyx_v_orig, 0, ' ', 'd'); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5083, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_Bad_argument_at;
__pyx_t_8[1] = __pyx_t_7;
__pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_index_out_of_range;
__pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, 19 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7), 127);
if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5083, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_9};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_IndexError)), __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;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5083, __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(0, 5083, __pyx_L1_error)
+5084: return names[idx]
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_names, __pyx_v_idx, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5084, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
5085:
5086:
+5087: cdef bint _capsule_polars_dtype_is_string_like(object dtype) except -1:
static int __pyx_f_7questdb_7_client__capsule_polars_dtype_is_string_like(PyObject *__pyx_v_dtype) {
PyObject *__pyx_v_enum_t = 0;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client._capsule_polars_dtype_is_string_like", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_enum_t);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5088: """polars: Utf8 / String / Categorical / Enum count as string-like."""
+5089: if _POLARS is None:
__pyx_t_1 = (__pyx_v_7questdb_7_client__POLARS == Py_None);
if (__pyx_t_1) {
/* … */
}
+5090: return False
__pyx_r = 0;
goto __pyx_L0;
+5091: if dtype == _POLARS.Utf8:
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__POLARS, __pyx_mstate_global->__pyx_n_u_Utf8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5091, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_RichCompare(__pyx_v_dtype, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5091, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5091, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_1) { /* … */ }
+5092: return True
__pyx_r = 1;
goto __pyx_L0;
+5093: if isinstance(dtype, _POLARS.Categorical):
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__POLARS, __pyx_mstate_global->__pyx_n_u_Categorical); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyObject_IsInstance(__pyx_v_dtype, __pyx_t_3); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5093, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_1) { /* … */ }
+5094: return True
__pyx_r = 1;
goto __pyx_L0;
+5095: cdef object enum_t = getattr(_POLARS, 'Enum', None)
__pyx_t_3 = __pyx_v_7questdb_7_client__POLARS; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = __Pyx_GetAttr3(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Enum, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5095, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_enum_t = __pyx_t_2; __pyx_t_2 = 0;
+5096: if enum_t is not None and isinstance(dtype, enum_t):
__pyx_t_4 = (__pyx_v_enum_t != Py_None);
if (__pyx_t_4) {
} else {
__pyx_t_1 = __pyx_t_4;
goto __pyx_L7_bool_binop_done;
}
__pyx_t_4 = PyObject_IsInstance(__pyx_v_dtype, __pyx_v_enum_t); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 5096, __pyx_L1_error)
__pyx_t_1 = __pyx_t_4;
__pyx_L7_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+5097: return True
__pyx_r = 1;
goto __pyx_L0;
+5098: return False
__pyx_r = 0; goto __pyx_L0;
5099:
5100:
+5101: cdef bint _capsule_pyarrow_type_is_string_like(object field_type) except -1:
static int __pyx_f_7questdb_7_client__capsule_pyarrow_type_is_string_like(PyObject *__pyx_v_field_type) {
PyObject *__pyx_v_value_type = NULL;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client._capsule_pyarrow_type_is_string_like", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_value_type);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5102: """pyarrow: utf8 / large_utf8 / utf8_view, plus Dictionary whose
5103: value type is one of those."""
+5104: if _PYARROW is None:
__pyx_t_1 = (__pyx_v_7questdb_7_client__PYARROW == Py_None);
if (__pyx_t_1) {
/* … */
}
+5105: return False
__pyx_r = 0;
goto __pyx_L0;
+5106: if (_PYARROW.types.is_string(field_type)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_field_type}; __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_string, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (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(0, 5106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 5106, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!__pyx_t_6) { } else { __pyx_t_1 = __pyx_t_6; goto __pyx_L5_bool_binop_done; } /* … */ if (__pyx_t_1) { /* … */ }
+5107: or _PYARROW.types.is_large_string(field_type)):
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_field_type}; __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_large_string, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 5107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = __pyx_t_6; __pyx_L5_bool_binop_done:;
+5108: return True
__pyx_r = 1;
goto __pyx_L0;
+5109: if _PYARROW.types.is_dictionary(field_type):
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_field_type}; __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_dictionary, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (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(0, 5109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* … */ }
+5110: value_type = field_type.value_type
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_field_type, __pyx_mstate_global->__pyx_n_u_value_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_value_type = __pyx_t_2; __pyx_t_2 = 0;
+5111: if (_PYARROW.types.is_string(value_type)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_value_type}; __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_string, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 5111, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!__pyx_t_6) { } else { __pyx_t_1 = __pyx_t_6; goto __pyx_L9_bool_binop_done; } /* … */ if (__pyx_t_1) { /* … */ }
+5112: or _PYARROW.types.is_large_string(value_type)):
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5112, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_value_type}; __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_large_string, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (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(0, 5112, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 5112, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = __pyx_t_6; __pyx_L9_bool_binop_done:;
+5113: return True
__pyx_r = 1;
goto __pyx_L0;
+5114: return False
__pyx_r = 0; goto __pyx_L0;
5115:
5116:
+5117: cdef bint _capsule_pandas_dtype_is_string_like(object dtype) except -1:
static int __pyx_f_7questdb_7_client__capsule_pandas_dtype_is_string_like(PyObject *__pyx_v_dtype) {
PyObject *__pyx_v_storage = 0;
PyObject *__pyx_v_arrow_type = 0;
PyObject *__pyx_v_cat_dtype = 0;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client._capsule_pandas_dtype_is_string_like", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_storage);
__Pyx_XDECREF(__pyx_v_arrow_type);
__Pyx_XDECREF(__pyx_v_cat_dtype);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5118: cdef object storage
5119: cdef object arrow_type
5120: cdef object cat_dtype
+5121: if _PANDAS is None:
__pyx_t_1 = (__pyx_v_7questdb_7_client__PANDAS == Py_None);
if (__pyx_t_1) {
/* … */
}
+5122: return False
__pyx_r = 0;
goto __pyx_L0;
+5123: if isinstance(dtype, _PANDAS.StringDtype):
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PANDAS, __pyx_mstate_global->__pyx_n_u_StringDtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_IsInstance(__pyx_v_dtype, __pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5123, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* … */ }
+5124: storage = getattr(dtype, 'storage', None)
__pyx_t_2 = __Pyx_GetAttr3(__pyx_v_dtype, __pyx_mstate_global->__pyx_n_u_storage, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_storage = __pyx_t_2; __pyx_t_2 = 0;
+5125: return storage == 'pyarrow'
__pyx_t_2 = PyObject_RichCompare(__pyx_v_storage, __pyx_mstate_global->__pyx_n_u_pyarrow, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5125, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5125, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; goto __pyx_L0;
+5126: if isinstance(dtype, _PANDAS.ArrowDtype):
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PANDAS, __pyx_mstate_global->__pyx_n_u_ArrowDtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5126, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_IsInstance(__pyx_v_dtype, __pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5126, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* … */ }
+5127: _dataframe_require_pyarrow()
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_require_pyarrow(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+5128: arrow_type = dtype.pyarrow_dtype
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_mstate_global->__pyx_n_u_pyarrow_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5128, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_arrow_type = __pyx_t_2; __pyx_t_2 = 0;
+5129: return _capsule_pyarrow_type_is_string_like(arrow_type)
__pyx_t_1 = __pyx_f_7questdb_7_client__capsule_pyarrow_type_is_string_like(__pyx_v_arrow_type); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5129, __pyx_L1_error)
__pyx_r = __pyx_t_1;
goto __pyx_L0;
+5130: if isinstance(dtype, _PANDAS.CategoricalDtype):
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PANDAS, __pyx_mstate_global->__pyx_n_u_CategoricalDtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5130, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_IsInstance(__pyx_v_dtype, __pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5130, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* … */ }
+5131: cat_dtype = dtype.categories.dtype
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_mstate_global->__pyx_n_u_categories); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_cat_dtype = __pyx_t_3; __pyx_t_3 = 0;
+5132: if cat_dtype == object:
__pyx_t_3 = PyObject_RichCompare(__pyx_v_cat_dtype, __pyx_builtin_object, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5132, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5132, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_1) { /* … */ }
+5133: return True
__pyx_r = 1;
goto __pyx_L0;
+5134: return _capsule_pandas_dtype_is_string_like(cat_dtype)
__pyx_t_1 = __pyx_f_7questdb_7_client__capsule_pandas_dtype_is_string_like(__pyx_v_cat_dtype); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5134, __pyx_L1_error)
__pyx_r = __pyx_t_1;
goto __pyx_L0;
+5135: return False
__pyx_r = 0; goto __pyx_L0;
5136:
5137:
+5138: cdef object _capsule_get_string_column_names(object sliceable):
static PyObject *__pyx_f_7questdb_7_client__capsule_get_string_column_names(PyObject *__pyx_v_sliceable) {
PyObject *__pyx_v_schema = 0;
PyObject *__pyx_v_out = 0;
PyObject *__pyx_v_name = 0;
PyObject *__pyx_v_dtype = 0;
PyObject *__pyx_v_field_type = 0;
int __pyx_v_i;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client._capsule_get_string_column_names", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_schema);
__Pyx_XDECREF(__pyx_v_out);
__Pyx_XDECREF(__pyx_v_name);
__Pyx_XDECREF(__pyx_v_dtype);
__Pyx_XDECREF(__pyx_v_field_type);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5139: """Return names of all string-like columns (utf8 / large_utf8 /
5140: utf8_view / dict-of-utf8). Supports polars DataFrame and pyarrow
5141: Table / RecordBatch. Returns None if schema introspection is not
5142: available on the input."""
5143: cdef object schema
5144: cdef object out
5145: cdef object name
5146: cdef object dtype
5147: cdef object field_type
5148: cdef int i
+5149: if _is_pandas_dataframe_object(sliceable):
__pyx_t_1 = __pyx_f_7questdb_7_client__is_pandas_dataframe_object(__pyx_v_sliceable); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5149, __pyx_L1_error) if (__pyx_t_1) { /* … */ }
+5150: _dataframe_may_import_deps()
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_may_import_deps(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5150, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+5151: out = []
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_out = __pyx_t_2; __pyx_t_2 = 0;
+5152: for name, dtype in sliceable.dtypes.items():
__pyx_t_3 = 0;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_dtypes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (unlikely(__pyx_t_6 == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
__PYX_ERR(0, 5152, __pyx_L1_error)
}
__pyx_t_7 = __Pyx_dict_iterator(__pyx_t_6, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_4), (&__pyx_t_5)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_2);
__pyx_t_2 = __pyx_t_7;
__pyx_t_7 = 0;
while (1) {
__pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_4, &__pyx_t_3, &__pyx_t_7, &__pyx_t_6, NULL, __pyx_t_5);
if (unlikely(__pyx_t_8 == 0)) break;
if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 5152, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
__pyx_t_7 = 0;
__Pyx_XDECREF_SET(__pyx_v_dtype, __pyx_t_6);
__pyx_t_6 = 0;
+5153: if _capsule_pandas_dtype_is_string_like(dtype):
__pyx_t_1 = __pyx_f_7questdb_7_client__capsule_pandas_dtype_is_string_like(__pyx_v_dtype); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5153, __pyx_L1_error) if (__pyx_t_1) { /* … */ } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+5154: out.append(name)
__pyx_t_9 = __Pyx_PyObject_Append(__pyx_v_out, __pyx_v_name); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 5154, __pyx_L1_error)
+5155: return out
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_out); __pyx_r = __pyx_v_out; goto __pyx_L0;
+5156: if _POLARS is not None and isinstance(sliceable, _POLARS_DATAFRAME_T):
__pyx_t_10 = (__pyx_v_7questdb_7_client__POLARS != Py_None);
if (__pyx_t_10) {
} else {
__pyx_t_1 = __pyx_t_10;
goto __pyx_L8_bool_binop_done;
}
__pyx_t_2 = __pyx_v_7questdb_7_client__POLARS_DATAFRAME_T;
__Pyx_INCREF(__pyx_t_2);
__pyx_t_10 = PyObject_IsInstance(__pyx_v_sliceable, __pyx_t_2); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 5156, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_1 = __pyx_t_10;
__pyx_L8_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+5157: out = []
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5157, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_out = __pyx_t_2; __pyx_t_2 = 0;
+5158: for name, dtype in sliceable.schema.items():
__pyx_t_4 = 0;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_schema); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5158, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (unlikely(__pyx_t_6 == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
__PYX_ERR(0, 5158, __pyx_L1_error)
}
__pyx_t_7 = __Pyx_dict_iterator(__pyx_t_6, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_3), (&__pyx_t_5)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5158, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_2);
__pyx_t_2 = __pyx_t_7;
__pyx_t_7 = 0;
while (1) {
__pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_3, &__pyx_t_4, &__pyx_t_7, &__pyx_t_6, NULL, __pyx_t_5);
if (unlikely(__pyx_t_8 == 0)) break;
if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 5158, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
__pyx_t_7 = 0;
__Pyx_XDECREF_SET(__pyx_v_dtype, __pyx_t_6);
__pyx_t_6 = 0;
+5159: if _capsule_polars_dtype_is_string_like(dtype):
__pyx_t_1 = __pyx_f_7questdb_7_client__capsule_polars_dtype_is_string_like(__pyx_v_dtype); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5159, __pyx_L1_error) if (__pyx_t_1) { /* … */ } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+5160: out.append(name)
__pyx_t_9 = __Pyx_PyObject_Append(__pyx_v_out, __pyx_v_name); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 5160, __pyx_L1_error)
+5161: return out
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_out); __pyx_r = __pyx_v_out; goto __pyx_L0;
+5162: if _PYARROW is None:
__pyx_t_1 = (__pyx_v_7questdb_7_client__PYARROW == Py_None);
if (__pyx_t_1) {
/* … */
}
+5163: try:
{
/*try:*/ {
/* … */
}
__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;
goto __pyx_L19_try_end;
__pyx_L14_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__pyx_L16_except_error:;
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
goto __pyx_L1_error;
__pyx_L17_except_return:;
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
goto __pyx_L0;
__pyx_L19_try_end:;
}
+5164: _dataframe_require_pyarrow()
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_require_pyarrow(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5164, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+5165: except ImportError:
__pyx_t_5 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError)))); if (__pyx_t_5) { __Pyx_ErrRestore(0,0,0);
+5166: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L17_except_return; } goto __pyx_L16_except_error;
+5167: if isinstance(sliceable, (_PYARROW.Table, _PYARROW.RecordBatch)):
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_Table); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5167, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_RecordBatch); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5167, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = PyObject_IsInstance(__pyx_v_sliceable, __pyx_t_2); if (!__pyx_t_10) { } else { __pyx_t_1 = __pyx_t_10; goto __pyx_L23_bool_binop_done; } __pyx_t_10 = PyObject_IsInstance(__pyx_v_sliceable, __pyx_t_6); __pyx_t_1 = __pyx_t_10; __pyx_L23_bool_binop_done:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* … */ }
+5168: schema = sliceable.schema
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_schema); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_schema = __pyx_t_2; __pyx_t_2 = 0;
+5169: out = []
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_out = __pyx_t_2; __pyx_t_2 = 0;
+5170: for i in range(len(schema.names)):
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_schema, __pyx_mstate_global->__pyx_n_u_names); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5170, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5;
+5171: field_type = schema.field(i).type
__pyx_t_6 = __pyx_v_schema;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5171, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_14 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_7};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_field, __pyx_callargs+__pyx_t_14, (2-__pyx_t_14) | (1*__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_2)) __PYX_ERR(0, 5171, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_type); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5171, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF_SET(__pyx_v_field_type, __pyx_t_7);
__pyx_t_7 = 0;
+5172: if _capsule_pyarrow_type_is_string_like(field_type):
__pyx_t_1 = __pyx_f_7questdb_7_client__capsule_pyarrow_type_is_string_like(__pyx_v_field_type); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5172, __pyx_L1_error)
if (__pyx_t_1) {
/* … */
}
}
+5173: out.append(schema.names[i])
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_schema, __pyx_mstate_global->__pyx_n_u_names); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_7, __pyx_v_i, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = __Pyx_PyObject_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 5173, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+5174: return out
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_out); __pyx_r = __pyx_v_out; goto __pyx_L0;
+5175: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
5176:
5177:
+5178: cdef object _capsule_column_is_string_like(object sliceable, str name):
static PyObject *__pyx_f_7questdb_7_client__capsule_column_is_string_like(PyObject *__pyx_v_sliceable, PyObject *__pyx_v_name) {
PyObject *__pyx_v_dtype = 0;
PyObject *__pyx_v_field_type = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("questdb._client._capsule_column_is_string_like", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_dtype);
__Pyx_XDECREF(__pyx_v_field_type);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5179: """Returns True iff `name` is a string-like column on `sliceable`,
5180: False iff it is some other type, or None if schema introspection
5181: is not available on the input."""
5182: cdef object dtype
5183: cdef object field_type
+5184: if _is_pandas_dataframe_object(sliceable):
__pyx_t_1 = __pyx_f_7questdb_7_client__is_pandas_dataframe_object(__pyx_v_sliceable); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5184, __pyx_L1_error) if (__pyx_t_1) { /* … */ }
+5185: _dataframe_may_import_deps()
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_may_import_deps(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5185, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+5186: try:
{
/*try:*/ {
/* … */
}
__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;
goto __pyx_L9_try_end;
__pyx_L4_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
__pyx_L6_except_error:;
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
goto __pyx_L1_error;
__pyx_L9_try_end:;
}
+5187: dtype = sliceable.dtypes[name]
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_dtypes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5187, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_Dict_GetItem(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5187, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_dtype = __pyx_t_6; __pyx_t_6 = 0;
+5188: except KeyError:
__pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError)))); if (__pyx_t_7) { __Pyx_AddTraceback("questdb._client._capsule_column_is_string_like", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_2, &__pyx_t_8) < 0) __PYX_ERR(0, 5188, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_8);
+5189: raise KeyError(
__pyx_t_10 = NULL;
+5190: f'symbols column {name!r} not found in the dataframe.')
__pyx_t_11 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5190, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12[0] = __pyx_mstate_global->__pyx_kp_u_symbols_column; __pyx_t_12[1] = __pyx_t_11; __pyx_t_12[2] = __pyx_mstate_global->__pyx_kp_u_not_found_in_the_dataframe; __pyx_t_13 = __Pyx_PyUnicode_Join(__pyx_t_12, 3, 15 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11) + 28, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11)); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5190, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_14 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_13}; __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_14, (2-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5189, __pyx_L6_except_error) __Pyx_GOTREF(__pyx_t_9); } __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(0, 5189, __pyx_L6_except_error) } goto __pyx_L6_except_error;
+5191: return _capsule_pandas_dtype_is_string_like(dtype)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_7questdb_7_client__capsule_pandas_dtype_is_string_like(__pyx_v_dtype); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5191, __pyx_L1_error) __pyx_t_8 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L0;
+5192: if _POLARS is not None and isinstance(sliceable, _POLARS_DATAFRAME_T):
__pyx_t_15 = (__pyx_v_7questdb_7_client__POLARS != Py_None);
if (__pyx_t_15) {
} else {
__pyx_t_1 = __pyx_t_15;
goto __pyx_L13_bool_binop_done;
}
__pyx_t_8 = __pyx_v_7questdb_7_client__POLARS_DATAFRAME_T;
__Pyx_INCREF(__pyx_t_8);
__pyx_t_15 = PyObject_IsInstance(__pyx_v_sliceable, __pyx_t_8); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 5192, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_1 = __pyx_t_15;
__pyx_L13_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+5193: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L20_try_end;
__pyx_L15_error:;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 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_L17_except_error:;
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L20_try_end:;
}
+5194: dtype = sliceable.schema[name]
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_schema); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5194, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = __Pyx_PyObject_Dict_GetItem(__pyx_t_8, __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5194, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_dtype = __pyx_t_2; __pyx_t_2 = 0;
+5195: except KeyError:
__pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError)))); if (__pyx_t_7) { __Pyx_AddTraceback("questdb._client._capsule_column_is_string_like", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_8, &__pyx_t_6) < 0) __PYX_ERR(0, 5195, __pyx_L17_except_error) __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_6);
+5196: raise KeyError(
__pyx_t_13 = NULL;
+5197: f'symbols column {name!r} not found in the dataframe.')
__pyx_t_10 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5197, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_12[0] = __pyx_mstate_global->__pyx_kp_u_symbols_column; __pyx_t_12[1] = __pyx_t_10; __pyx_t_12[2] = __pyx_mstate_global->__pyx_kp_u_not_found_in_the_dataframe; __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_12, 3, 15 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10) + 28, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5197, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_14 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_11}; __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_14, (2-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5196, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_9); } __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(0, 5196, __pyx_L17_except_error) } goto __pyx_L17_except_error;
+5198: return _capsule_polars_dtype_is_string_like(dtype)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_7questdb_7_client__capsule_polars_dtype_is_string_like(__pyx_v_dtype); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5198, __pyx_L1_error) __pyx_t_6 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0;
+5199: if _PYARROW is None:
__pyx_t_1 = (__pyx_v_7questdb_7_client__PYARROW == Py_None);
if (__pyx_t_1) {
/* … */
}
+5200: try:
{
/*try:*/ {
/* … */
}
__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;
goto __pyx_L29_try_end;
__pyx_L24_error:;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 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_L26_except_error:;
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
goto __pyx_L1_error;
__pyx_L27_except_return:;
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
goto __pyx_L0;
__pyx_L29_try_end:;
}
+5201: _dataframe_require_pyarrow()
__pyx_t_6 = __pyx_f_7questdb_7_client__dataframe_require_pyarrow(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5201, __pyx_L24_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+5202: except ImportError:
__pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError)))); if (__pyx_t_7) { __Pyx_ErrRestore(0,0,0);
+5203: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L27_except_return; } goto __pyx_L26_except_error;
+5204: if isinstance(sliceable, (_PYARROW.Table, _PYARROW.RecordBatch)):
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_Table); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_RecordBatch); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_15 = PyObject_IsInstance(__pyx_v_sliceable, __pyx_t_6); if (!__pyx_t_15) { } else { __pyx_t_1 = __pyx_t_15; goto __pyx_L33_bool_binop_done; } __pyx_t_15 = PyObject_IsInstance(__pyx_v_sliceable, __pyx_t_8); __pyx_t_1 = __pyx_t_15; __pyx_L33_bool_binop_done:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_1) { /* … */ }
+5205: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L40_try_end;
__pyx_L35_error:;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 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_L37_except_error:;
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L40_try_end:;
}
+5206: field_type = sliceable.schema.field(name).type
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_schema); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5206, __pyx_L35_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = __pyx_t_2; __Pyx_INCREF(__pyx_t_8); __pyx_t_14 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_name}; __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_field, __pyx_callargs+__pyx_t_14, (2-__pyx_t_14) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5206, __pyx_L35_error) __Pyx_GOTREF(__pyx_t_6); } __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5206, __pyx_L35_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_field_type = __pyx_t_2; __pyx_t_2 = 0;
+5207: except (KeyError, ValueError):
__pyx_t_7 = __Pyx_PyErr_ExceptionMatches2(((PyObject *)(((PyTypeObject*)PyExc_KeyError))), ((PyObject *)(((PyTypeObject*)PyExc_ValueError))));
if (__pyx_t_7) {
__Pyx_AddTraceback("questdb._client._capsule_column_is_string_like", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_6, &__pyx_t_8) < 0) __PYX_ERR(0, 5207, __pyx_L37_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_8);
+5208: raise KeyError(
__pyx_t_11 = NULL;
+5209: f'symbols column {name!r} not found in the dataframe.')
__pyx_t_13 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5209, __pyx_L37_except_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12[0] = __pyx_mstate_global->__pyx_kp_u_symbols_column; __pyx_t_12[1] = __pyx_t_13; __pyx_t_12[2] = __pyx_mstate_global->__pyx_kp_u_not_found_in_the_dataframe; __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_12, 3, 15 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13) + 28, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5209, __pyx_L37_except_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_14 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_10}; __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_KeyError)), __pyx_callargs+__pyx_t_14, (2-__pyx_t_14) | (__pyx_t_14*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5208, __pyx_L37_except_error) __Pyx_GOTREF(__pyx_t_9); } __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(0, 5208, __pyx_L37_except_error) } goto __pyx_L37_except_error;
+5210: return _capsule_pyarrow_type_is_string_like(field_type)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_7questdb_7_client__capsule_pyarrow_type_is_string_like(__pyx_v_field_type); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5210, __pyx_L1_error) __pyx_t_8 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5210, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L0;
+5211: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
5212:
5213:
+5214: cdef object _capsule_get_dict_string_column_names(object sliceable):
static PyObject *__pyx_f_7questdb_7_client__capsule_get_dict_string_column_names(PyObject *__pyx_v_sliceable) {
PyObject *__pyx_v_schema = 0;
PyObject *__pyx_v_out = 0;
PyObject *__pyx_v_name = 0;
PyObject *__pyx_v_dtype = 0;
PyObject *__pyx_v_field_type = 0;
PyObject *__pyx_v_value_type = 0;
PyObject *__pyx_v_enum_t = 0;
int __pyx_v_i;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("questdb._client._capsule_get_dict_string_column_names", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_schema);
__Pyx_XDECREF(__pyx_v_out);
__Pyx_XDECREF(__pyx_v_name);
__Pyx_XDECREF(__pyx_v_dtype);
__Pyx_XDECREF(__pyx_v_field_type);
__Pyx_XDECREF(__pyx_v_value_type);
__Pyx_XDECREF(__pyx_v_enum_t);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5215: """Return names of dict-encoded string-like columns (polars
5216: Categorical / Enum or pyarrow Dictionary(*, utf8/large_utf8)).
5217: Returns None if schema introspection is not available."""
5218: cdef object schema
5219: cdef object out
5220: cdef object name
5221: cdef object dtype
5222: cdef object field_type
5223: cdef object value_type
5224: cdef object enum_t
5225: cdef int i
+5226: if _is_pandas_dataframe_object(sliceable):
__pyx_t_1 = __pyx_f_7questdb_7_client__is_pandas_dataframe_object(__pyx_v_sliceable); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5226, __pyx_L1_error) if (__pyx_t_1) { /* … */ }
+5227: _dataframe_may_import_deps()
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_may_import_deps(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+5228: out = []
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_out = __pyx_t_2; __pyx_t_2 = 0;
+5229: for name, dtype in sliceable.dtypes.items():
__pyx_t_3 = 0;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_dtypes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5229, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (unlikely(__pyx_t_6 == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
__PYX_ERR(0, 5229, __pyx_L1_error)
}
__pyx_t_7 = __Pyx_dict_iterator(__pyx_t_6, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_4), (&__pyx_t_5)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5229, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_2);
__pyx_t_2 = __pyx_t_7;
__pyx_t_7 = 0;
while (1) {
__pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_4, &__pyx_t_3, &__pyx_t_7, &__pyx_t_6, NULL, __pyx_t_5);
if (unlikely(__pyx_t_8 == 0)) break;
if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 5229, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_7);
__pyx_t_7 = 0;
__Pyx_XDECREF_SET(__pyx_v_dtype, __pyx_t_6);
__pyx_t_6 = 0;
+5230: if (isinstance(dtype, _PANDAS.CategoricalDtype)
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PANDAS, __pyx_mstate_global->__pyx_n_u_CategoricalDtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = PyObject_IsInstance(__pyx_v_dtype, __pyx_t_6); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 5230, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_9) { } else { __pyx_t_1 = __pyx_t_9; goto __pyx_L7_bool_binop_done; } /* … */ if (__pyx_t_1) { /* … */ goto __pyx_L6; }
+5231: and _capsule_pandas_dtype_is_string_like(dtype)):
__pyx_t_9 = __pyx_f_7questdb_7_client__capsule_pandas_dtype_is_string_like(__pyx_v_dtype); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 5231, __pyx_L1_error)
__pyx_t_1 = __pyx_t_9;
__pyx_L7_bool_binop_done:;
+5232: out.append(name)
__pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_out, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 5232, __pyx_L1_error)
+5233: elif isinstance(dtype, _PANDAS.ArrowDtype):
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PANDAS, __pyx_mstate_global->__pyx_n_u_ArrowDtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = PyObject_IsInstance(__pyx_v_dtype, __pyx_t_6); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5233, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_1) { /* … */ } __pyx_L6:; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+5234: _dataframe_require_pyarrow()
__pyx_t_6 = __pyx_f_7questdb_7_client__dataframe_require_pyarrow(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+5235: field_type = dtype.pyarrow_dtype
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_mstate_global->__pyx_n_u_pyarrow_dtype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_field_type, __pyx_t_6); __pyx_t_6 = 0;
+5236: if _PYARROW.types.is_dictionary(field_type):
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5236, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = __pyx_t_11; __Pyx_INCREF(__pyx_t_7); __pyx_t_12 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_field_type}; __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_dictionary, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5236, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5236, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_1) { /* … */ }
+5237: value_type = field_type.value_type
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_field_type, __pyx_mstate_global->__pyx_n_u_value_type); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_value_type, __pyx_t_6); __pyx_t_6 = 0;
+5238: if (_PYARROW.types.is_string(value_type)
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = __pyx_t_7; __Pyx_INCREF(__pyx_t_11); __pyx_t_12 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_value_type}; __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_string, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5238, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!__pyx_t_9) { } else { __pyx_t_1 = __pyx_t_9; goto __pyx_L11_bool_binop_done; } /* … */ if (__pyx_t_1) { /* … */ }
+5239: or _PYARROW.types.is_large_string(value_type)):
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = __pyx_t_11; __Pyx_INCREF(__pyx_t_7); __pyx_t_12 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_value_type}; __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_large_string, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5239, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_1 = __pyx_t_9; __pyx_L11_bool_binop_done:;
+5240: out.append(name)
__pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_out, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 5240, __pyx_L1_error)
+5241: return out
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_out); __pyx_r = __pyx_v_out; goto __pyx_L0;
+5242: if _POLARS is not None and isinstance(sliceable, _POLARS_DATAFRAME_T):
__pyx_t_9 = (__pyx_v_7questdb_7_client__POLARS != Py_None);
if (__pyx_t_9) {
} else {
__pyx_t_1 = __pyx_t_9;
goto __pyx_L14_bool_binop_done;
}
__pyx_t_2 = __pyx_v_7questdb_7_client__POLARS_DATAFRAME_T;
__Pyx_INCREF(__pyx_t_2);
__pyx_t_9 = PyObject_IsInstance(__pyx_v_sliceable, __pyx_t_2); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 5242, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_1 = __pyx_t_9;
__pyx_L14_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+5243: out = []
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_out = __pyx_t_2; __pyx_t_2 = 0;
+5244: enum_t = getattr(_POLARS, 'Enum', None)
__pyx_t_2 = __pyx_v_7questdb_7_client__POLARS;
__Pyx_INCREF(__pyx_t_2);
__pyx_t_6 = __Pyx_GetAttr3(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Enum, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5244, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_enum_t = __pyx_t_6;
__pyx_t_6 = 0;
+5245: for name, dtype in sliceable.schema.items():
__pyx_t_4 = 0;
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_schema); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5245, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(__pyx_t_2 == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
__PYX_ERR(0, 5245, __pyx_L1_error)
}
__pyx_t_11 = __Pyx_dict_iterator(__pyx_t_2, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_3), (&__pyx_t_5)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5245, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_6);
__pyx_t_6 = __pyx_t_11;
__pyx_t_11 = 0;
while (1) {
__pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_3, &__pyx_t_4, &__pyx_t_11, &__pyx_t_2, NULL, __pyx_t_5);
if (unlikely(__pyx_t_8 == 0)) break;
if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(0, 5245, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_11);
__pyx_t_11 = 0;
__Pyx_XDECREF_SET(__pyx_v_dtype, __pyx_t_2);
__pyx_t_2 = 0;
+5246: if isinstance(dtype, _POLARS.Categorical):
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__POLARS, __pyx_mstate_global->__pyx_n_u_Categorical); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_IsInstance(__pyx_v_dtype, __pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5246, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* … */ goto __pyx_L18; }
+5247: out.append(name)
__pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_out, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 5247, __pyx_L1_error)
+5248: elif enum_t is not None and isinstance(dtype, enum_t):
__pyx_t_9 = (__pyx_v_enum_t != Py_None);
if (__pyx_t_9) {
} else {
__pyx_t_1 = __pyx_t_9;
goto __pyx_L19_bool_binop_done;
}
__pyx_t_9 = PyObject_IsInstance(__pyx_v_dtype, __pyx_v_enum_t); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 5248, __pyx_L1_error)
__pyx_t_1 = __pyx_t_9;
__pyx_L19_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
__pyx_L18:;
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+5249: out.append(name)
__pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_out, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 5249, __pyx_L1_error)
+5250: return out
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_out); __pyx_r = __pyx_v_out; goto __pyx_L0;
+5251: if _PYARROW is None:
__pyx_t_1 = (__pyx_v_7questdb_7_client__PYARROW == Py_None);
if (__pyx_t_1) {
/* … */
}
+5252: 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_L27_try_end;
__pyx_L22_error:;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__pyx_L24_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_L25_except_return:;
__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_L0;
__pyx_L27_try_end:;
}
+5253: _dataframe_require_pyarrow()
__pyx_t_6 = __pyx_f_7questdb_7_client__dataframe_require_pyarrow(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5253, __pyx_L22_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+5254: except ImportError:
__pyx_t_5 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError)))); if (__pyx_t_5) { __Pyx_ErrRestore(0,0,0);
+5255: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L25_except_return; } goto __pyx_L24_except_error;
+5256: if isinstance(sliceable, (_PYARROW.Table, _PYARROW.RecordBatch)):
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_Table); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_RecordBatch); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = PyObject_IsInstance(__pyx_v_sliceable, __pyx_t_6); if (!__pyx_t_9) { } else { __pyx_t_1 = __pyx_t_9; goto __pyx_L31_bool_binop_done; } __pyx_t_9 = PyObject_IsInstance(__pyx_v_sliceable, __pyx_t_2); __pyx_t_1 = __pyx_t_9; __pyx_L31_bool_binop_done:; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_1) { /* … */ }
+5257: schema = sliceable.schema
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_schema); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5257, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_schema = __pyx_t_6; __pyx_t_6 = 0;
+5258: out = []
__pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_v_out = __pyx_t_6; __pyx_t_6 = 0;
+5259: for i in range(len(schema.names)):
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_schema, __pyx_mstate_global->__pyx_n_u_names); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5259, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = PyObject_Length(__pyx_t_6); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5259, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5;
+5260: field_type = schema.field(i).type
__pyx_t_2 = __pyx_v_schema;
__Pyx_INCREF(__pyx_t_2);
__pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_i); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5260, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_11};
__pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_field, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5260, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_type); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5260, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF_SET(__pyx_v_field_type, __pyx_t_11);
__pyx_t_11 = 0;
+5261: if _PYARROW.types.is_dictionary(field_type):
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __pyx_t_2; __Pyx_INCREF(__pyx_t_6); __pyx_t_12 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_field_type}; __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_dictionary, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5261, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); } __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5261, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (__pyx_t_1) { /* … */ } }
+5262: value_type = field_type.value_type
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_field_type, __pyx_mstate_global->__pyx_n_u_value_type); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5262, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_XDECREF_SET(__pyx_v_value_type, __pyx_t_11); __pyx_t_11 = 0;
+5263: if (_PYARROW.types.is_string(value_type)
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __pyx_t_6; __Pyx_INCREF(__pyx_t_2); __pyx_t_12 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value_type}; __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_string, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); } __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5263, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (!__pyx_t_9) { } else { __pyx_t_1 = __pyx_t_9; goto __pyx_L37_bool_binop_done; } /* … */ if (__pyx_t_1) { /* … */ }
+5264: or _PYARROW.types.is_large_string(value_type)):
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __pyx_t_2; __Pyx_INCREF(__pyx_t_6); __pyx_t_12 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_value_type}; __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_large_string, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); } __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 5264, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_1 = __pyx_t_9; __pyx_L37_bool_binop_done:;
+5265: out.append(schema.names[i])
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_schema, __pyx_mstate_global->__pyx_n_u_names); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_11, __pyx_v_i, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 5265, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+5266: return out
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_out); __pyx_r = __pyx_v_out; goto __pyx_L0;
+5267: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
5268:
5269:
+5270: cdef object _resolve_symbols_to_overrides(object sliceable, object symbols):
static PyObject *__pyx_f_7questdb_7_client__resolve_symbols_to_overrides(PyObject *__pyx_v_sliceable, PyObject *__pyx_v_symbols) {
PyObject *__pyx_v_out = 0;
int __pyx_v_symbol_kind;
int __pyx_v_not_symbol_kind;
PyObject *__pyx_v_col_names = 0;
PyObject *__pyx_v_entry = 0;
PyObject *__pyx_v_name = 0;
PyObject *__pyx_v_is_str = 0;
int __pyx_v_idx;
PyObject *__pyx_v_listed = 0;
PyObject *__pyx_v_dict_names = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_AddTraceback("questdb._client._resolve_symbols_to_overrides", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_out);
__Pyx_XDECREF(__pyx_v_col_names);
__Pyx_XDECREF(__pyx_v_entry);
__Pyx_XDECREF(__pyx_v_name);
__Pyx_XDECREF(__pyx_v_is_str);
__Pyx_XDECREF(__pyx_v_listed);
__Pyx_XDECREF(__pyx_v_dict_names);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5271: """Translate `symbols` into a list of
5272: (name_bytes, kind, arg) tuples matching the shape returned by
5273: _validate_schema_overrides. `kind` is `qwp_arrow_override_symbol`
5274: to mark a column as SYMBOL or `qwp_arrow_override_not_symbol`
5275: to force a dict-encoded column to VARCHAR; `arg` is unused (0) for both.
5276: Returns:
5277:
5278: - [] for None / 'auto' (no overrides, Rust default applies —
5279: Dictionary columns auto-classify as SymbolDict).
5280: - list for True (auto-detect str cols) / False (force NotSymbol
5281: on every dict-encoded str col) / List[str] / List[int].
5282: - None if resolution requires introspection not available on the
5283: input; caller falls back to Manual plan.
5284:
5285: Raises QuestDBError(BadDataFrame) when an explicitly-named symbols
5286: entry targets a non-string column (matches Manual plan semantics).
5287: """
5288: cdef list out
+5289: cdef int symbol_kind = <int>qwp_arrow_override_symbol
__pyx_v_symbol_kind = ((int)qwp_arrow_override_symbol);
+5290: cdef int not_symbol_kind = <int>qwp_arrow_override_not_symbol
__pyx_v_not_symbol_kind = ((int)qwp_arrow_override_not_symbol);
5291: cdef object col_names
5292: cdef object entry
5293: cdef object name
5294: cdef object is_str
5295: cdef int idx
5296: cdef set listed
5297: cdef object dict_names
5298:
+5299: if symbols is None or symbols == 'auto':
__pyx_t_2 = (__pyx_v_symbols == Py_None);
if (!__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_symbols, __pyx_mstate_global->__pyx_n_u_auto, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5299, __pyx_L1_error)
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+5300: return []
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5300, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
5301:
+5302: if symbols is False:
__pyx_t_1 = (__pyx_v_symbols == Py_False);
if (__pyx_t_1) {
/* … */
}
+5303: col_names = _capsule_get_dict_string_column_names(sliceable)
__pyx_t_3 = __pyx_f_7questdb_7_client__capsule_get_dict_string_column_names(__pyx_v_sliceable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_col_names = __pyx_t_3; __pyx_t_3 = 0;
+5304: if col_names is None:
__pyx_t_1 = (__pyx_v_col_names == Py_None);
if (__pyx_t_1) {
/* … */
}
+5305: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
+5306: out = []
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_out = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+5307: for entry in col_names:
if (likely(PyList_CheckExact(__pyx_v_col_names)) || PyTuple_CheckExact(__pyx_v_col_names)) { __pyx_t_3 = __pyx_v_col_names; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; __pyx_t_5 = NULL; } else { __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_col_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5307, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_5)) { if (likely(PyList_CheckExact(__pyx_t_3))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5307, __pyx_L1_error) #endif if (__pyx_t_4 >= __pyx_temp) break; } __pyx_t_6 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_4; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5307, __pyx_L1_error) #endif if (__pyx_t_4 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4)); #else __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); #endif ++__pyx_t_4; } if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5307, __pyx_L1_error) } else { __pyx_t_6 = __pyx_t_5(__pyx_t_3); if (unlikely(!__pyx_t_6)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5307, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_entry, __pyx_t_6); __pyx_t_6 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+5308: out.append((entry.encode('utf-8'), not_symbol_kind, 0))
__pyx_t_7 = __pyx_v_entry;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_utf_8};
__pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5308, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
__pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_not_symbol_kind); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5308, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5308, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_GIVEREF(__pyx_t_6);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6) != (0)) __PYX_ERR(0, 5308, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_7);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_7) != (0)) __PYX_ERR(0, 5308, __pyx_L1_error);
__Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
__Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_0);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(0, 5308, __pyx_L1_error);
__pyx_t_6 = 0;
__pyx_t_7 = 0;
__pyx_t_10 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_9); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 5308, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+5309: return out
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_out); __pyx_r = __pyx_v_out; goto __pyx_L0;
5310:
+5311: if symbols is True:
__pyx_t_1 = (__pyx_v_symbols == Py_True);
if (__pyx_t_1) {
/* … */
}
+5312: col_names = _capsule_get_string_column_names(sliceable)
__pyx_t_3 = __pyx_f_7questdb_7_client__capsule_get_string_column_names(__pyx_v_sliceable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5312, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_col_names = __pyx_t_3; __pyx_t_3 = 0;
+5313: if col_names is None:
__pyx_t_1 = (__pyx_v_col_names == Py_None);
if (__pyx_t_1) {
/* … */
}
+5314: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
+5315: out = []
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_out = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+5316: for entry in col_names:
if (likely(PyList_CheckExact(__pyx_v_col_names)) || PyTuple_CheckExact(__pyx_v_col_names)) { __pyx_t_3 = __pyx_v_col_names; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; __pyx_t_5 = NULL; } else { __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_col_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5316, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_5)) { if (likely(PyList_CheckExact(__pyx_t_3))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5316, __pyx_L1_error) #endif if (__pyx_t_4 >= __pyx_temp) break; } __pyx_t_9 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_4; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5316, __pyx_L1_error) #endif if (__pyx_t_4 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_9 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4)); #else __pyx_t_9 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); #endif ++__pyx_t_4; } if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5316, __pyx_L1_error) } else { __pyx_t_9 = __pyx_t_5(__pyx_t_3); if (unlikely(!__pyx_t_9)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5316, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_9); __Pyx_XDECREF_SET(__pyx_v_entry, __pyx_t_9); __pyx_t_9 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+5317: out.append((entry.encode('utf-8'), symbol_kind, 0))
__pyx_t_7 = __pyx_v_entry;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_utf_8};
__pyx_t_9 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5317, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
}
__pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_symbol_kind); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5317, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5317, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GIVEREF(__pyx_t_9);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9) != (0)) __PYX_ERR(0, 5317, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_7);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7) != (0)) __PYX_ERR(0, 5317, __pyx_L1_error);
__Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
__Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_0);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(0, 5317, __pyx_L1_error);
__pyx_t_9 = 0;
__pyx_t_7 = 0;
__pyx_t_10 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_6); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 5317, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+5318: return out
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_out); __pyx_r = __pyx_v_out; goto __pyx_L0;
5319:
+5320: if not isinstance(symbols, (list, tuple)):
__pyx_t_2 = PyList_Check(__pyx_v_symbols); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L17_bool_binop_done; } __pyx_t_2 = PyTuple_Check(__pyx_v_symbols); __pyx_t_1 = __pyx_t_2; __pyx_L17_bool_binop_done:; __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { /* … */ }
+5321: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
5322:
+5323: out = []
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_out = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+5324: col_names = None
__Pyx_INCREF(Py_None);
__pyx_v_col_names = Py_None;
+5325: listed = set()
__pyx_t_3 = PySet_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5325, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_listed = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+5326: for entry in symbols:
if (likely(PyList_CheckExact(__pyx_v_symbols)) || PyTuple_CheckExact(__pyx_v_symbols)) { __pyx_t_3 = __pyx_v_symbols; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; __pyx_t_5 = NULL; } else { __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_symbols); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5326, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_5)) { if (likely(PyList_CheckExact(__pyx_t_3))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5326, __pyx_L1_error) #endif if (__pyx_t_4 >= __pyx_temp) break; } __pyx_t_6 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_4; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5326, __pyx_L1_error) #endif if (__pyx_t_4 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4)); #else __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); #endif ++__pyx_t_4; } if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5326, __pyx_L1_error) } else { __pyx_t_6 = __pyx_t_5(__pyx_t_3); if (unlikely(!__pyx_t_6)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5326, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_entry, __pyx_t_6); __pyx_t_6 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+5327: if isinstance(entry, str):
__pyx_t_2 = PyUnicode_Check(__pyx_v_entry);
if (__pyx_t_2) {
/* … */
goto __pyx_L21;
}
+5328: name = entry
__Pyx_INCREF(__pyx_v_entry); __Pyx_XDECREF_SET(__pyx_v_name, __pyx_v_entry);
+5329: elif isinstance(entry, int):
__pyx_t_2 = PyLong_Check(__pyx_v_entry);
if (likely(__pyx_t_2)) {
/* … */
goto __pyx_L21;
}
+5330: if col_names is None:
__pyx_t_2 = (__pyx_v_col_names == Py_None);
if (__pyx_t_2) {
/* … */
}
+5331: col_names = _capsule_get_column_names(sliceable)
__pyx_t_6 = __pyx_f_7questdb_7_client__capsule_get_column_names(__pyx_v_sliceable); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF_SET(__pyx_v_col_names, __pyx_t_6); __pyx_t_6 = 0;
+5332: if col_names is None:
__pyx_t_2 = (__pyx_v_col_names == Py_None);
if (__pyx_t_2) {
/* … */
}
+5333: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0;
+5334: idx = <int>entry
__pyx_t_11 = __Pyx_PyLong_As_int(__pyx_v_entry); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5334, __pyx_L1_error) __pyx_v_idx = ((int)__pyx_t_11);
+5335: if idx < 0:
__pyx_t_2 = (__pyx_v_idx < 0);
if (__pyx_t_2) {
/* … */
}
+5336: idx += len(col_names)
__pyx_t_12 = PyObject_Length(__pyx_v_col_names); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5336, __pyx_L1_error) __pyx_v_idx = (__pyx_v_idx + __pyx_t_12);
+5337: if idx < 0 or idx >= len(col_names):
__pyx_t_1 = (__pyx_v_idx < 0);
if (!__pyx_t_1) {
} else {
__pyx_t_2 = __pyx_t_1;
goto __pyx_L26_bool_binop_done;
}
__pyx_t_12 = PyObject_Length(__pyx_v_col_names); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5337, __pyx_L1_error)
__pyx_t_1 = (__pyx_v_idx >= __pyx_t_12);
__pyx_t_2 = __pyx_t_1;
__pyx_L26_bool_binop_done:;
if (unlikely(__pyx_t_2)) {
/* … */
}
+5338: raise ValueError(
__pyx_t_7 = NULL;
+5339: f'symbols index {entry} out of range '
__pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_entry, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); /* … */ __pyx_t_15 = __Pyx_PyUnicode_Join(__pyx_t_14, 5, 14 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9) + 20 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13) + 10, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_8 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_15}; __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __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_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 5338, __pyx_L1_error)
+5340: f'(have {len(col_names)} columns).')
__pyx_t_12 = PyObject_Length(__pyx_v_col_names); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5340, __pyx_L1_error) __pyx_t_13 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_12, 0, ' ', 'd'); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_14[0] = __pyx_mstate_global->__pyx_kp_u_symbols_index; __pyx_t_14[1] = __pyx_t_9; __pyx_t_14[2] = __pyx_mstate_global->__pyx_kp_u_out_of_range_have; __pyx_t_14[3] = __pyx_t_13; __pyx_t_14[4] = __pyx_mstate_global->__pyx_kp_u_columns_3;
+5341: name = col_names[idx]
__pyx_t_6 = __Pyx_GetItemInt(__pyx_v_col_names, __pyx_v_idx, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_6); __pyx_t_6 = 0;
5342: else:
+5343: raise TypeError(
/*else*/ {
__pyx_t_15 = NULL;
+5344: f'symbols entry must be str or int, got '
__pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_16, 3, 38 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5344, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_8 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_t_7}; __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } __Pyx_Raise(__pyx_t_6, 0, 0, 0); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_ERR(0, 5343, __pyx_L1_error) } __pyx_L21:;
+5345: f'{type(entry).__name__}.')
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_entry)), __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_13 = __Pyx_PyObject_FormatSimple(__pyx_t_7, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_16[0] = __pyx_mstate_global->__pyx_kp_u_symbols_entry_must_be_str_or_int; __pyx_t_16[1] = __pyx_t_13; __pyx_t_16[2] = __pyx_mstate_global->__pyx_kp_u__2;
+5346: is_str = _capsule_column_is_string_like(sliceable, name)
__pyx_t_6 = __pyx_v_name;
__Pyx_INCREF(__pyx_t_6);
if (!(likely(PyUnicode_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_6))) __PYX_ERR(0, 5346, __pyx_L1_error)
__pyx_t_7 = __pyx_f_7questdb_7_client__capsule_column_is_string_like(__pyx_v_sliceable, ((PyObject*)__pyx_t_6)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5346, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF_SET(__pyx_v_is_str, __pyx_t_7);
__pyx_t_7 = 0;
+5347: if is_str is None:
__pyx_t_2 = (__pyx_v_is_str == Py_None);
if (__pyx_t_2) {
/* … */
}
+5348: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0;
+5349: if not is_str:
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_is_str); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5349, __pyx_L1_error) __pyx_t_1 = (!__pyx_t_2); if (unlikely(__pyx_t_1)) { /* … */ }
+5350: raise QuestDBError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5350, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
+5351: QuestDBErrorCode.BadDataFrame,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_BadDataFrame); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+5352: f'Bad argument `symbols`: column {name!r} is not a '
__pyx_t_13 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_16[0] = __pyx_mstate_global->__pyx_kp_u_Bad_argument_symbols_column; __pyx_t_16[1] = __pyx_t_13; __pyx_t_16[2] = __pyx_mstate_global->__pyx_kp_u_is_not_a_strings_column; __pyx_t_17 = __Pyx_PyUnicode_Join(__pyx_t_16, 3, 31 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13) + 25, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_13)); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 5352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_15))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_15); assert(__pyx_t_6); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_15, __pyx__function); __pyx_t_8 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_9, __pyx_t_17}; __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_15, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__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_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5350, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_ERR(0, 5350, __pyx_L1_error)
5353: f'strings column.')
+5354: listed.add(name)
__pyx_t_10 = PySet_Add(__pyx_v_listed, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 5354, __pyx_L1_error)
+5355: out.append((name.encode('utf-8'), symbol_kind, 0))
__pyx_t_15 = __pyx_v_name;
__Pyx_INCREF(__pyx_t_15);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_mstate_global->__pyx_kp_u_utf_8};
__pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5355, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
__pyx_t_15 = __Pyx_PyLong_From_int(__pyx_v_symbol_kind); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5355, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
__pyx_t_17 = PyTuple_New(3); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 5355, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
__Pyx_GIVEREF(__pyx_t_7);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_7) != (0)) __PYX_ERR(0, 5355, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_15);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_17, 1, __pyx_t_15) != (0)) __PYX_ERR(0, 5355, __pyx_L1_error);
__Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
__Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_0);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_17, 2, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(0, 5355, __pyx_L1_error);
__pyx_t_7 = 0;
__pyx_t_15 = 0;
__pyx_t_10 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_17); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 5355, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
5356:
5357: # Match the row/numpy planner: an explicit symbols list marks only the
5358: # listed columns as symbols; every other dict-encoded (categorical)
5359: # column is forced to a plain VARCHAR field rather than auto-symbolized.
+5360: dict_names = _capsule_get_dict_string_column_names(sliceable)
__pyx_t_3 = __pyx_f_7questdb_7_client__capsule_get_dict_string_column_names(__pyx_v_sliceable); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_dict_names = __pyx_t_3; __pyx_t_3 = 0;
+5361: if dict_names is None:
__pyx_t_1 = (__pyx_v_dict_names == Py_None);
if (__pyx_t_1) {
/* … */
}
+5362: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
+5363: for name in dict_names:
if (likely(PyList_CheckExact(__pyx_v_dict_names)) || PyTuple_CheckExact(__pyx_v_dict_names)) { __pyx_t_3 = __pyx_v_dict_names; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; __pyx_t_5 = NULL; } else { __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_dict_names); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5363, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_5)) { if (likely(PyList_CheckExact(__pyx_t_3))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5363, __pyx_L1_error) #endif if (__pyx_t_4 >= __pyx_temp) break; } __pyx_t_17 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_4; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5363, __pyx_L1_error) #endif if (__pyx_t_4 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_17 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4)); #else __pyx_t_17 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_4); #endif ++__pyx_t_4; } if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 5363, __pyx_L1_error) } else { __pyx_t_17 = __pyx_t_5(__pyx_t_3); if (unlikely(!__pyx_t_17)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5363, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_17); __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_17); __pyx_t_17 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+5364: if name not in listed:
__pyx_t_1 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_listed, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5364, __pyx_L1_error) if (__pyx_t_1) { /* … */ }
+5365: out.append((name.encode('utf-8'), not_symbol_kind, 0))
__pyx_t_15 = __pyx_v_name;
__Pyx_INCREF(__pyx_t_15);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_mstate_global->__pyx_kp_u_utf_8};
__pyx_t_17 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 5365, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
}
__pyx_t_15 = __Pyx_PyLong_From_int(__pyx_v_not_symbol_kind); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5365, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_15);
__pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5365, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GIVEREF(__pyx_t_17);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_17) != (0)) __PYX_ERR(0, 5365, __pyx_L1_error);
__Pyx_GIVEREF(__pyx_t_15);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_15) != (0)) __PYX_ERR(0, 5365, __pyx_L1_error);
__Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
__Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_0);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(0, 5365, __pyx_L1_error);
__pyx_t_17 = 0;
__pyx_t_15 = 0;
__pyx_t_10 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_7); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 5365, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+5366: return out
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_out); __pyx_r = __pyx_v_out; goto __pyx_L0;
5367:
5368:
+5369: cdef object _merge_capsule_overrides(
static PyObject *__pyx_f_7questdb_7_client__merge_capsule_overrides(PyObject *__pyx_v_symbol_overrides, PyObject *__pyx_v_validated_overrides) {
PyObject *__pyx_v_explicit_names = 0;
PyObject *__pyx_v_merged = 0;
PyObject *__pyx_v_entry = 0;
PyObject *__pyx_9genexpr11__pyx_v_entry = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("questdb._client._merge_capsule_overrides", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_explicit_names);
__Pyx_XDECREF(__pyx_v_merged);
__Pyx_XDECREF(__pyx_v_entry);
__Pyx_XDECREF(__pyx_9genexpr11__pyx_v_entry);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5370: object symbol_overrides, object validated_overrides):
5371: """Merge symbol overrides into validated schema_overrides.
5372: schema_overrides take precedence on name collision."""
5373: cdef set explicit_names
5374: cdef list merged
5375: cdef object entry
+5376: if not symbol_overrides and validated_overrides is None:
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_symbol_overrides); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5376, __pyx_L1_error) __pyx_t_3 = (!__pyx_t_2); if (__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__pyx_v_validated_overrides == Py_None); __pyx_t_1 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+5377: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
+5378: if not symbol_overrides:
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_symbol_overrides); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 5378, __pyx_L1_error) __pyx_t_3 = (!__pyx_t_1); if (__pyx_t_3) { /* … */ }
+5379: return validated_overrides
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_validated_overrides); __pyx_r = __pyx_v_validated_overrides; goto __pyx_L0;
+5380: if validated_overrides is None:
__pyx_t_3 = (__pyx_v_validated_overrides == Py_None);
if (__pyx_t_3) {
/* … */
}
+5381: return symbol_overrides
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_symbol_overrides); __pyx_r = __pyx_v_symbol_overrides; goto __pyx_L0;
+5382: explicit_names = {entry[0] for entry in validated_overrides}
{ /* enter inner scope */
__pyx_t_4 = PySet_New(NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5382, __pyx_L10_error)
__Pyx_GOTREF(__pyx_t_4);
if (likely(PyList_CheckExact(__pyx_v_validated_overrides)) || PyTuple_CheckExact(__pyx_v_validated_overrides)) {
__pyx_t_5 = __pyx_v_validated_overrides; __Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = 0;
__pyx_t_7 = NULL;
} else {
__pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_validated_overrides); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5382, __pyx_L10_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5382, __pyx_L10_error)
}
for (;;) {
if (likely(!__pyx_t_7)) {
if (likely(PyList_CheckExact(__pyx_t_5))) {
{
Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
#if !CYTHON_ASSUME_SAFE_SIZE
if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5382, __pyx_L10_error)
#endif
if (__pyx_t_6 >= __pyx_temp) break;
}
__pyx_t_8 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_5, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference);
++__pyx_t_6;
} else {
{
Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
#if !CYTHON_ASSUME_SAFE_SIZE
if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5382, __pyx_L10_error)
#endif
if (__pyx_t_6 >= __pyx_temp) break;
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_8 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6));
#else
__pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_6);
#endif
++__pyx_t_6;
}
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5382, __pyx_L10_error)
} else {
__pyx_t_8 = __pyx_t_7(__pyx_t_5);
if (unlikely(!__pyx_t_8)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5382, __pyx_L10_error)
PyErr_Clear();
}
break;
}
}
__Pyx_GOTREF(__pyx_t_8);
__Pyx_XDECREF_SET(__pyx_9genexpr11__pyx_v_entry, __pyx_t_8);
__pyx_t_8 = 0;
__pyx_t_8 = __Pyx_GetItemInt(__pyx_9genexpr11__pyx_v_entry, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5382, __pyx_L10_error)
__Pyx_GOTREF(__pyx_t_8);
if (unlikely(PySet_Add(__pyx_t_4, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 5382, __pyx_L10_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_9genexpr11__pyx_v_entry); __pyx_9genexpr11__pyx_v_entry = 0;
goto __pyx_L14_exit_scope;
__pyx_L10_error:;
__Pyx_XDECREF(__pyx_9genexpr11__pyx_v_entry); __pyx_9genexpr11__pyx_v_entry = 0;
goto __pyx_L1_error;
__pyx_L14_exit_scope:;
} /* exit inner scope */
__pyx_v_explicit_names = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
+5383: merged = list(validated_overrides)
__pyx_t_4 = PySequence_List(__pyx_v_validated_overrides); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5383, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_merged = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+5384: for entry in symbol_overrides:
if (likely(PyList_CheckExact(__pyx_v_symbol_overrides)) || PyTuple_CheckExact(__pyx_v_symbol_overrides)) { __pyx_t_4 = __pyx_v_symbol_overrides; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_symbol_overrides); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5384, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_7)) { if (likely(PyList_CheckExact(__pyx_t_4))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5384, __pyx_L1_error) #endif if (__pyx_t_6 >= __pyx_temp) break; } __pyx_t_5 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_4, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_6; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5384, __pyx_L1_error) #endif if (__pyx_t_6 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6)); #else __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_6); #endif ++__pyx_t_6; } if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5384, __pyx_L1_error) } else { __pyx_t_5 = __pyx_t_7(__pyx_t_4); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5384, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_entry, __pyx_t_5); __pyx_t_5 = 0; /* … */ } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+5385: if entry[0] not in explicit_names:
__pyx_t_5 = __Pyx_GetItemInt(__pyx_v_entry, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = (__Pyx_PySet_ContainsTF(__pyx_t_5, __pyx_v_explicit_names, Py_NE)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5385, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (__pyx_t_3) { /* … */ }
+5386: merged.append(entry)
__pyx_t_9 = __Pyx_PyList_Append(__pyx_v_merged, __pyx_v_entry); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 5386, __pyx_L1_error)
+5387: return merged
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_merged); __pyx_r = __pyx_v_merged; goto __pyx_L0;
5388:
5389:
+5390: cdef bint _is_pandas_dataframe_object(object obj):
static int __pyx_f_7questdb_7_client__is_pandas_dataframe_object(PyObject *__pyx_v_obj) {
PyObject *__pyx_v_cls = 0;
PyObject *__pyx_v_module = 0;
PyObject *__pyx_v_name = 0;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("questdb._client._is_pandas_dataframe_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_cls);
__Pyx_XDECREF(__pyx_v_module);
__Pyx_XDECREF(__pyx_v_name);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5391: cdef object cls
5392: cdef object module
5393: cdef object name
+5394: if _PANDAS is not None and isinstance(obj, _PANDAS.DataFrame):
__pyx_t_2 = (__pyx_v_7questdb_7_client__PANDAS != Py_None);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PANDAS, __pyx_mstate_global->__pyx_n_u_DataFrame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5394, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_2 = PyObject_IsInstance(__pyx_v_obj, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 5394, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+5395: return True
__pyx_r = 1;
goto __pyx_L0;
+5396: try:
{
/*try:*/ {
/* … */
}
__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;
goto __pyx_L11_try_end;
__pyx_L6_error:;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__pyx_L8_except_error:;
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L1_error;
__pyx_L10_try_return:;
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L0;
__pyx_L9_except_return:;
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L0;
__pyx_L11_try_end:;
}
+5397: for cls in type(obj).__mro__:
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_obj)), __pyx_mstate_global->__pyx_n_u_mro); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5397, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_3); if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_7 = __pyx_t_3; __Pyx_INCREF(__pyx_t_7); __pyx_t_8 = 0; __pyx_t_9 = NULL; } else { __pyx_t_8 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5397, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5397, __pyx_L6_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { if (likely(!__pyx_t_9)) { if (likely(PyList_CheckExact(__pyx_t_7))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_7); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5397, __pyx_L6_error) #endif if (__pyx_t_8 >= __pyx_temp) break; } __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_7, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_8; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_7); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5397, __pyx_L6_error) #endif if (__pyx_t_8 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_8)); #else __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_7, __pyx_t_8); #endif ++__pyx_t_8; } if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5397, __pyx_L6_error) } else { __pyx_t_3 = __pyx_t_9(__pyx_t_7); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5397, __pyx_L6_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_cls, __pyx_t_3); __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+5398: module = getattr(cls, '__module__', '')
__pyx_t_3 = __Pyx_GetAttr3(__pyx_v_cls, __pyx_mstate_global->__pyx_n_u_module, __pyx_mstate_global->__pyx_kp_u__7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5398, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_module, __pyx_t_3); __pyx_t_3 = 0;
+5399: name = getattr(cls, '__name__', '')
__pyx_t_3 = __Pyx_GetAttr3(__pyx_v_cls, __pyx_mstate_global->__pyx_n_u_name_2, __pyx_mstate_global->__pyx_kp_u__7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5399, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3); __pyx_t_3 = 0;
+5400: if (name == 'DataFrame' and
__pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_mstate_global->__pyx_n_u_DataFrame, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5400, __pyx_L6_error) if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L15_bool_binop_done; } /* … */ if (__pyx_t_1) { /* … */ }
+5401: isinstance(module, str) and
__pyx_t_2 = PyUnicode_Check(__pyx_v_module);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L15_bool_binop_done;
}
+5402: (module == 'pandas' or module.startswith('pandas.'))):
__pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_module, __pyx_mstate_global->__pyx_n_u_pandas, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5402, __pyx_L6_error) if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L15_bool_binop_done; } __pyx_t_10 = __pyx_v_module; __Pyx_INCREF(__pyx_t_10); __pyx_t_11 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_mstate_global->__pyx_kp_u_pandas_2}; __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5402, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5402, __pyx_L6_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __pyx_t_2; __pyx_L15_bool_binop_done:;
+5403: return True
__pyx_r = 1;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L10_try_return;
+5404: except Exception:
__pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_12) { __Pyx_ErrRestore(0,0,0);
+5405: return False
__pyx_r = 0;
goto __pyx_L9_except_return;
}
goto __pyx_L8_except_error;
+5406: return False
__pyx_r = 0; goto __pyx_L0;
5407:
5408:
+5409: cdef object _MASKED_DTYPE = None
__Pyx_INCREF(Py_None); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__MASKED_DTYPE); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__MASKED_DTYPE, Py_None); __Pyx_GIVEREF(Py_None);
+5410: cdef bint _MASKED_DTYPE_READY = False
__pyx_v_7questdb_7_client__MASKED_DTYPE_READY = 0;
5411:
5412:
+5413: cdef object _pandas_masked_dtype():
static PyObject *__pyx_f_7questdb_7_client__pandas_masked_dtype(void) {
PyObject *__pyx_v_BaseMaskedDtype = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("questdb._client._pandas_masked_dtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_BaseMaskedDtype);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5414: global _MASKED_DTYPE, _MASKED_DTYPE_READY
+5415: if not _MASKED_DTYPE_READY:
__pyx_t_1 = (!__pyx_v_7questdb_7_client__MASKED_DTYPE_READY);
if (__pyx_t_1) {
/* … */
}
+5416: 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_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
__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_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:;
}
+5417: from pandas.core.arrays.masked import BaseMaskedDtype
{
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_BaseMaskedDtype};
__pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pandas_core_arrays_masked, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5417, __pyx_L4_error)
}
__pyx_t_5 = __pyx_t_6;
__Pyx_GOTREF(__pyx_t_5);
{
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_BaseMaskedDtype};
__pyx_t_7 = 0; {
__pyx_t_8 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_7]); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5417, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_8);
switch (__pyx_t_7) {
case 0:
__Pyx_INCREF(__pyx_t_8);
__pyx_v_BaseMaskedDtype = __pyx_t_8;
break;
default:;
}
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+5418: _MASKED_DTYPE = BaseMaskedDtype
__Pyx_INCREF(__pyx_v_BaseMaskedDtype); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__MASKED_DTYPE); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__MASKED_DTYPE, __pyx_v_BaseMaskedDtype); __Pyx_GIVEREF(__pyx_v_BaseMaskedDtype);
+5419: except Exception:
__pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_9) { __Pyx_ErrRestore(0,0,0);
+5420: _MASKED_DTYPE = ()
__Pyx_INCREF(__pyx_mstate_global->__pyx_empty_tuple); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__MASKED_DTYPE); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__MASKED_DTYPE, __pyx_mstate_global->__pyx_empty_tuple); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_empty_tuple); goto __pyx_L5_exception_handled; } goto __pyx_L6_except_error;
+5421: _MASKED_DTYPE_READY = True
__pyx_v_7questdb_7_client__MASKED_DTYPE_READY = 1;
+5422: return _MASKED_DTYPE
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_7questdb_7_client__MASKED_DTYPE); __pyx_r = __pyx_v_7questdb_7_client__MASKED_DTYPE; goto __pyx_L0;
5423:
5424:
+5425: cdef bint _pandas_dataframe_requires_manual_planner(object df) except -1:
static int __pyx_f_7questdb_7_client__pandas_dataframe_requires_manual_planner(PyObject *__pyx_v_df) {
PyObject *__pyx_v_dtype = 0;
PyObject *__pyx_v_arrow_dtype = 0;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client._pandas_dataframe_requires_manual_planner", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_dtype);
__Pyx_XDECREF(__pyx_v_arrow_dtype);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5426: # A fully Arrow-backed frame takes the zero-copy capsule path; any
5427: # numpy / object / masked / categorical column routes the whole frame to
5428: # the manual planner (which ingests those directly and the Arrow-backed
5429: # columns via the arrow-import path).
5430: cdef object dtype
5431: cdef object arrow_dtype
+5432: if not _is_pandas_dataframe_object(df):
__pyx_t_1 = __pyx_f_7questdb_7_client__is_pandas_dataframe_object(__pyx_v_df); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5432, __pyx_L1_error) __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { /* … */ }
+5433: return False
__pyx_r = 0;
goto __pyx_L0;
+5434: _dataframe_may_import_deps()
__pyx_t_3 = __pyx_f_7questdb_7_client__dataframe_may_import_deps(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5434, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+5435: arrow_dtype = getattr(_PANDAS, 'ArrowDtype', None)
__pyx_t_3 = __pyx_v_7questdb_7_client__PANDAS; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = __Pyx_GetAttr3(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ArrowDtype, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5435, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_arrow_dtype = __pyx_t_4; __pyx_t_4 = 0;
+5436: 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_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_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;
__pyx_L9_try_end:;
}
+5437: for dtype in df.dtypes:
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_dtypes); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5437, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) { __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = 0; __pyx_t_9 = NULL; } else { __pyx_t_8 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5437, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5437, __pyx_L4_error) } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; for (;;) { if (likely(!__pyx_t_9)) { if (likely(PyList_CheckExact(__pyx_t_3))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5437, __pyx_L4_error) #endif if (__pyx_t_8 >= __pyx_temp) break; } __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_8; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 5437, __pyx_L4_error) #endif if (__pyx_t_8 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_8)); #else __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_8); #endif ++__pyx_t_8; } if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5437, __pyx_L4_error) } else { __pyx_t_4 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 5437, __pyx_L4_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_dtype, __pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_L10_continue:; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+5438: if arrow_dtype is not None and isinstance(dtype, arrow_dtype):
__pyx_t_1 = (__pyx_v_arrow_dtype != Py_None);
if (__pyx_t_1) {
} else {
__pyx_t_2 = __pyx_t_1;
goto __pyx_L13_bool_binop_done;
}
__pyx_t_1 = PyObject_IsInstance(__pyx_v_dtype, __pyx_v_arrow_dtype); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5438, __pyx_L4_error)
__pyx_t_2 = __pyx_t_1;
__pyx_L13_bool_binop_done:;
if (__pyx_t_2) {
/* … */
}
+5439: continue
goto __pyx_L10_continue;
+5440: if isinstance(dtype, _PANDAS.StringDtype):
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PANDAS, __pyx_mstate_global->__pyx_n_u_StringDtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5440, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyObject_IsInstance(__pyx_v_dtype, __pyx_t_4); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 5440, __pyx_L4_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_2) { /* … */ }
+5441: if getattr(dtype, 'storage', None) == 'pyarrow':
__pyx_t_4 = __Pyx_GetAttr3(__pyx_v_dtype, __pyx_mstate_global->__pyx_n_u_storage, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5441, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_pyarrow, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5441, __pyx_L4_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_2) { /* … */ }
+5442: continue
goto __pyx_L10_continue;
+5443: return True
__pyx_r = 1;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8_try_return;
+5444: except Exception:
__pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_10) { __Pyx_ErrRestore(0,0,0);
+5445: return True
__pyx_r = 1;
goto __pyx_L7_except_return;
}
goto __pyx_L6_except_error;
+5446: return False
__pyx_r = 0; goto __pyx_L0;
5447:
5448:
+5449: cdef bint _pandas_dataframe_is_timestamp_only_at(
static int __pyx_f_7questdb_7_client__pandas_dataframe_is_timestamp_only_at(PyObject *__pyx_v_df, PyObject *__pyx_v_at) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._pandas_dataframe_is_timestamp_only_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5450: object df,
5451: object at) except -1:
+5452: if not _is_pandas_dataframe_object(df) or not isinstance(at, str):
__pyx_t_2 = __pyx_f_7questdb_7_client__is_pandas_dataframe_object(__pyx_v_df); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5452, __pyx_L1_error) __pyx_t_3 = (!__pyx_t_2); if (!__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = PyUnicode_Check(__pyx_v_at); __pyx_t_2 = (!__pyx_t_3); __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { /* … */ }
+5453: return False
__pyx_r = 0;
goto __pyx_L0;
+5454: try:
{
/*try:*/ {
/* … */
}
__pyx_L6_error:;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L8_except_error:;
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L1_error;
__pyx_L10_try_return:;
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L0;
__pyx_L9_except_return:;
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L0;
}
+5455: return len(df.columns) == 1 and df.columns[0] == at
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_columns); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5455, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PyObject_Length(__pyx_t_7); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5455, __pyx_L6_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_2 = (__pyx_t_8 == 1); if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L12_bool_binop_done; } __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_columns); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5455, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5455, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyObject_RichCompare(__pyx_t_9, __pyx_v_at, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5455, __pyx_L6_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5455, __pyx_L6_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_1 = __pyx_t_2; __pyx_L12_bool_binop_done:; __pyx_r = __pyx_t_1; goto __pyx_L10_try_return;
+5456: except Exception:
__pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_10) { __Pyx_ErrRestore(0,0,0);
+5457: return False
__pyx_r = 0;
goto __pyx_L9_except_return;
}
goto __pyx_L8_except_error;
5458:
5459:
+5460: cdef Py_ssize_t _capsule_row_count(object sliceable) except -2:
static Py_ssize_t __pyx_f_7questdb_7_client__capsule_row_count(PyObject *__pyx_v_sliceable) {
PyObject *__pyx_v_row_count_obj = 0;
Py_ssize_t __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client._capsule_row_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -2L;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_row_count_obj);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+5461: cdef object row_count_obj = getattr(sliceable, 'num_rows', None)
__pyx_t_1 = __Pyx_GetAttr3(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_num_rows, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_row_count_obj = __pyx_t_1; __pyx_t_1 = 0;
+5462: if row_count_obj is None:
__pyx_t_2 = (__pyx_v_row_count_obj == Py_None);
if (__pyx_t_2) {
/* … */
}
+5463: row_count_obj = getattr(sliceable, 'height', None)
__pyx_t_1 = __Pyx_GetAttr3(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_height, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_row_count_obj, __pyx_t_1); __pyx_t_1 = 0;
+5464: if row_count_obj is not None:
__pyx_t_2 = (__pyx_v_row_count_obj != Py_None);
if (__pyx_t_2) {
/* … */
}
+5465: return <Py_ssize_t>row_count_obj
__pyx_t_3 = __Pyx_PyIndex_AsSsize_t(__pyx_v_row_count_obj); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 5465, __pyx_L1_error) __pyx_r = ((Py_ssize_t)__pyx_t_3); goto __pyx_L0;
+5466: if _is_pandas_dataframe_object(sliceable):
__pyx_t_2 = __pyx_f_7questdb_7_client__is_pandas_dataframe_object(__pyx_v_sliceable); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5466, __pyx_L1_error) if (__pyx_t_2) { /* … */ }
+5467: return <Py_ssize_t>len(sliceable)
__pyx_t_3 = PyObject_Length(__pyx_v_sliceable); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5467, __pyx_L1_error) __pyx_r = ((Py_ssize_t)__pyx_t_3); goto __pyx_L0;
+5468: return -1
__pyx_r = -1L; goto __pyx_L0;
5469:
5470:
+5471: cdef object _capsule_slice_rows(
static PyObject *__pyx_f_7questdb_7_client__capsule_slice_rows(PyObject *__pyx_v_sliceable, Py_ssize_t __pyx_v_offset, Py_ssize_t __pyx_v_row_count) {
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_AddTraceback("questdb._client._capsule_slice_rows", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5472: object sliceable,
5473: Py_ssize_t offset,
5474: Py_ssize_t row_count):
+5475: if hasattr(sliceable, 'slice'):
__pyx_t_1 = __Pyx_HasAttr(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_slice); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5475, __pyx_L1_error) if (__pyx_t_1) { /* … */ }
+5476: return sliceable.slice(offset, row_count)
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __pyx_v_sliceable; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = PyLong_FromSsize_t(__pyx_v_offset); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyLong_FromSsize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_4, __pyx_t_5}; __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_slice, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__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; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+5477: if _is_pandas_dataframe_object(sliceable):
__pyx_t_1 = __pyx_f_7questdb_7_client__is_pandas_dataframe_object(__pyx_v_sliceable); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5477, __pyx_L1_error) if (__pyx_t_1) { /* … */ }
+5478: return sliceable.iloc[offset:offset + row_count]
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_iloc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5478, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_2, __pyx_v_offset, (__pyx_v_offset + __pyx_v_row_count), NULL, NULL, NULL, 1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5478, __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;
+5479: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
5480:
5481:
+5482: cdef struct direct_conn_source_t:
struct __pyx_t_7questdb_7_client_direct_conn_source_t {
struct questdb_db *db;
struct line_sender_opts const *opts;
};
5483: # Pooled borrow when ``db != NULL``; otherwise a poolless standalone
5484: # connection opened from ``opts`` per call.
5485: questdb_db* db
5486: const line_sender_opts* opts
5487:
5488:
+5489: cdef qwp_direct_sender* _direct_conn_open(
static struct qwp_direct_sender *__pyx_f_7questdb_7_client__direct_conn_open(struct __pyx_t_7questdb_7_client_direct_conn_source_t *__pyx_v_src, uint64_t __pyx_v_budget_ms, struct line_sender_error **__pyx_v_err) {
struct qwp_direct_sender *__pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
5490: direct_conn_source_t* src,
5491: uint64_t budget_ms,
5492: line_sender_error** err) noexcept nogil:
+5493: if src.db != NULL:
__pyx_t_1 = (__pyx_v_src->db != NULL);
if (__pyx_t_1) {
/* … */
}
+5494: if budget_ms == 0:
__pyx_t_1 = (__pyx_v_budget_ms == 0);
if (__pyx_t_1) {
/* … */
}
+5495: return questdb_db_borrow_direct_sender(src.db, err)
__pyx_r = questdb_db_borrow_direct_sender(__pyx_v_src->db, __pyx_v_err);
goto __pyx_L0;
+5496: return questdb_db_borrow_direct_sender_with_retry(
__pyx_r = questdb_db_borrow_direct_sender_with_retry(__pyx_v_src->db, __pyx_v_budget_ms, __pyx_v_err);
goto __pyx_L0;
5497: src.db, budget_ms, err)
+5498: return qwp_direct_sender_from_opts(src.opts, err)
__pyx_r = qwp_direct_sender_from_opts(__pyx_v_src->opts, __pyx_v_err); goto __pyx_L0;
5499:
5500:
+5501: cdef void _direct_conn_close(
static void __pyx_f_7questdb_7_client__direct_conn_close(struct __pyx_t_7questdb_7_client_direct_conn_source_t *__pyx_v_src, struct qwp_direct_sender *__pyx_v_conn, int __pyx_v_force_drop) {
/* … */
/* function exit code */
}
5502: direct_conn_source_t* src,
5503: qwp_direct_sender* conn,
5504: bint force_drop) noexcept nogil:
+5505: if src.db != NULL:
__pyx_t_1 = (__pyx_v_src->db != NULL);
if (__pyx_t_1) {
/* … */
goto __pyx_L3;
}
+5506: if force_drop:
if (__pyx_v_force_drop) {
/* … */
goto __pyx_L4;
}
+5507: questdb_db_drop_direct_sender(src.db, conn)
questdb_db_drop_direct_sender(__pyx_v_src->db, __pyx_v_conn);
5508: else:
+5509: questdb_db_return_direct_sender(src.db, conn)
/*else*/ {
questdb_db_return_direct_sender(__pyx_v_src->db, __pyx_v_conn);
}
__pyx_L4:;
+5510: elif force_drop:
if (__pyx_v_force_drop) {
/* … */
goto __pyx_L3;
}
5511: # Destroying a poolless sender after a failure must discard its
5512: # uncommitted pipelined frames, and `qwp_direct_sender_free`
5513: # commits them best-effort, so the drop entry point is the only
5514: # bound way to get that. It ignores its `db` argument
5515: # (`qwp_sender.h`: "`db` is currently ignored - the sender
5516: # carries its own reference to the pool"), which is what makes
5517: # NULL safe for a handle that never came from a pool.
+5518: questdb_db_drop_direct_sender(NULL, conn)
questdb_db_drop_direct_sender(NULL, __pyx_v_conn);
5519: else:
+5520: qwp_direct_sender_free(conn)
/*else*/ {
qwp_direct_sender_free(__pyx_v_conn);
}
__pyx_L3:;
5521:
5522:
+5523: cdef bint _dataframe_client_try_capsule_path(
static int __pyx_f_7questdb_7_client__dataframe_client_try_capsule_path(struct __pyx_t_7questdb_7_client_direct_conn_source_t *__pyx_v_src, uint64_t __pyx_v_budget_ms, PyObject *__pyx_v_df, PyObject *__pyx_v_table_name, PyObject *__pyx_v_table_name_col, PyObject *__pyx_v_symbols, PyObject *__pyx_v_at, size_t __pyx_v_max_rows_per_batch, PyObject *__pyx_v_validated_overrides, int *__pyx_v_committed_prefix, int *__pyx_v_nonreplayable_consumed) {
struct qdb_pystr_buf *__pyx_v_b;
struct qwp_direct_sender *__pyx_v_conn;
struct line_sender_error *__pyx_v_err;
PyThreadState *__pyx_v_gs;
PyObject *__pyx_v_sliceable = 0;
int __pyx_v_any_flushed;
size_t __pyx_v_deferred_since_sync;
int __pyx_v_force_drop_conn;
PyObject *__pyx_v_row_slice = 0;
Py_ssize_t __pyx_v_total_rows;
Py_ssize_t __pyx_v_offset;
Py_ssize_t __pyx_v_chunk_rows;
PyObject *__pyx_v_symbol_overrides = 0;
PyObject *__pyx_v_merged_overrides = 0;
int __pyx_v_can_slice;
struct line_sender_table_name __pyx_v_c_table_name;
struct line_sender_column_name __pyx_v_c_ts_column;
struct line_sender_column_name *__pyx_v_c_ts_column_ptr;
struct ArrowSchema __pyx_v_c_schema;
struct qwp_arrow_override *__pyx_v_c_overrides;
size_t __pyx_v_c_overrides_len;
int __pyx_v_at_is_column;
int __pyx_v_at_scalar_set;
int64_t __pyx_v_at_scalar_nanos;
size_t __pyx_v_i;
PyObject *__pyx_v_name_bytes = 0;
int __pyx_v_kind_int;
int __pyx_v_arg_int;
int __pyx_r;
__Pyx_INCREF(__pyx_v_at);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("questdb._client._dataframe_client_try_capsule_path", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_sliceable);
__Pyx_XDECREF(__pyx_v_row_slice);
__Pyx_XDECREF(__pyx_v_symbol_overrides);
__Pyx_XDECREF(__pyx_v_merged_overrides);
__Pyx_XDECREF(__pyx_v_name_bytes);
__Pyx_XDECREF(__pyx_v_at);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5524: direct_conn_source_t* src,
5525: uint64_t budget_ms,
5526: object df,
5527: object table_name,
5528: object table_name_col,
5529: object symbols,
5530: object at,
5531: size_t max_rows_per_batch,
5532: object validated_overrides,
5533: bint* committed_prefix,
5534: bint* nonreplayable_consumed) except -1:
+5535: cdef qdb_pystr_buf* b = NULL
__pyx_v_b = NULL;
+5536: cdef qwp_direct_sender* conn = NULL
__pyx_v_conn = NULL;
+5537: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+5538: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+5539: cdef object sliceable = None
__Pyx_INCREF(Py_None);
__pyx_v_sliceable = Py_None;
+5540: cdef bint any_flushed = False
__pyx_v_any_flushed = 0;
+5541: cdef size_t deferred_since_sync = 0
__pyx_v_deferred_since_sync = 0;
+5542: cdef bint force_drop_conn = False
__pyx_v_force_drop_conn = 0;
+5543: cdef object row_slice = None
__Pyx_INCREF(Py_None);
__pyx_v_row_slice = Py_None;
+5544: cdef Py_ssize_t total_rows = 0
__pyx_v_total_rows = 0;
+5545: cdef Py_ssize_t offset = 0
__pyx_v_offset = 0;
5546: cdef Py_ssize_t chunk_rows
5547: cdef object symbol_overrides
5548: cdef object merged_overrides
+5549: cdef bint can_slice = False
__pyx_v_can_slice = 0;
5550: cdef line_sender_table_name c_table_name
5551: cdef line_sender_column_name c_ts_column
+5552: cdef line_sender_column_name* c_ts_column_ptr = NULL
__pyx_v_c_ts_column_ptr = NULL;
5553: cdef ArrowSchema c_schema
+5554: cdef qwp_arrow_override* c_overrides = NULL
__pyx_v_c_overrides = NULL;
+5555: cdef size_t c_overrides_len = 0
__pyx_v_c_overrides_len = 0;
+5556: cdef bint at_is_column = False
__pyx_v_at_is_column = 0;
+5557: cdef bint at_scalar_set = False
__pyx_v_at_scalar_set = 0;
+5558: cdef int64_t at_scalar_nanos = 0
__pyx_v_at_scalar_nanos = 0;
5559: cdef size_t i
5560: cdef object name_bytes
5561: cdef int kind_int
5562: cdef int arg_int
5563:
+5564: if _pandas_dataframe_requires_manual_planner(df):
__pyx_t_1 = __pyx_f_7questdb_7_client__pandas_dataframe_requires_manual_planner(__pyx_v_df); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5564, __pyx_L1_error)
if (__pyx_t_1) {
/* … */
}
+5565: return False
__pyx_r = 0;
goto __pyx_L0;
+5566: if _pandas_dataframe_is_timestamp_only_at(df, at):
__pyx_t_1 = __pyx_f_7questdb_7_client__pandas_dataframe_is_timestamp_only_at(__pyx_v_df, __pyx_v_at); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5566, __pyx_L1_error)
if (__pyx_t_1) {
/* … */
}
+5567: return False
__pyx_r = 0;
goto __pyx_L0;
+5568: if table_name_col is not None:
__pyx_t_1 = (__pyx_v_table_name_col != Py_None);
if (__pyx_t_1) {
/* … */
}
+5569: return False
__pyx_r = 0;
goto __pyx_L0;
5570:
5571: # LazyFrame: prefer the streaming engine (polars 1.0+) for lower
5572: # peak memory. `LazyFrame.collect_batches()` would stream natively
5573: # but upstream marks it unstable and "much slower than native sinks",
5574: # so we materialize and slice downstream.
+5575: if _is_polars_dataframe_or_lazy(df) and isinstance(
__pyx_t_2 = __pyx_f_7questdb_7_client__is_polars_dataframe_or_lazy(__pyx_v_df); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5575, __pyx_L1_error) if (__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L7_bool_binop_done; } /* … */ __pyx_t_2 = PyObject_IsInstance(__pyx_v_df, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 5575, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __pyx_t_2; __pyx_L7_bool_binop_done:; if (__pyx_t_1) { /* … */ goto __pyx_L6; }
+5576: df, _POLARS_LAZYFRAME_T):
__pyx_t_3 = __pyx_v_7questdb_7_client__POLARS_LAZYFRAME_T;
__Pyx_INCREF(__pyx_t_3);
+5577: try:
{
/*try:*/ {
/* … */
}
__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;
goto __pyx_L14_try_end;
__pyx_L9_error:;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L11_except_error:;
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L1_error;
__pyx_L10_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
__pyx_L14_try_end:;
}
+5578: sliceable = df.collect(engine='streaming')
__pyx_t_7 = __pyx_v_df;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_7, NULL};
__pyx_t_9 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5578, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_9);
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_engine, __pyx_mstate_global->__pyx_n_u_streaming, __pyx_t_9, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 5578, __pyx_L9_error)
__pyx_t_3 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_collect, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_9);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5578, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_DECREF_SET(__pyx_v_sliceable, __pyx_t_3);
__pyx_t_3 = 0;
+5579: except TypeError:
__pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_TypeError)))); if (__pyx_t_10) { __Pyx_AddTraceback("questdb._client._dataframe_client_try_capsule_path", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_9, &__pyx_t_7) < 0) __PYX_ERR(0, 5579, __pyx_L11_except_error) __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_7);
+5580: sliceable = df.collect()
__pyx_t_12 = __pyx_v_df;
__Pyx_INCREF(__pyx_t_12);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_12, NULL};
__pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_collect, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5580, __pyx_L11_except_error)
__Pyx_GOTREF(__pyx_t_11);
}
__Pyx_DECREF_SET(__pyx_v_sliceable, __pyx_t_11);
__pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L10_exception_handled;
}
goto __pyx_L11_except_error;
+5581: elif hasattr(df, '__arrow_c_stream__'):
__pyx_t_1 = __Pyx_HasAttr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_arrow_c_stream); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5581, __pyx_L1_error) if (__pyx_t_1) { /* … */ goto __pyx_L6; }
+5582: sliceable = df
__Pyx_INCREF(__pyx_v_df); __Pyx_DECREF_SET(__pyx_v_sliceable, __pyx_v_df);
+5583: elif hasattr(df, '__arrow_c_array__'):
__pyx_t_1 = __Pyx_HasAttr(__pyx_v_df, __pyx_mstate_global->__pyx_n_u_arrow_c_array); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5583, __pyx_L1_error) if (__pyx_t_1) { /* … */ goto __pyx_L6; }
+5584: _dataframe_require_pyarrow()
__pyx_t_7 = __pyx_f_7questdb_7_client__dataframe_require_pyarrow(); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+5585: sliceable = _PYARROW.Table.from_batches(
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_7questdb_7_client__PYARROW, __pyx_mstate_global->__pyx_n_u_Table); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = __pyx_t_3; __Pyx_INCREF(__pyx_t_9);
+5586: [_PYARROW.record_batch(df)])
__pyx_t_12 = __pyx_v_7questdb_7_client__PYARROW;
__Pyx_INCREF(__pyx_t_12);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_v_df};
__pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_record_batch, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5586, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
}
__pyx_t_12 = PyList_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5586, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_GIVEREF(__pyx_t_11);
if (__Pyx_PyList_SET_ITEM(__pyx_t_12, 0, __pyx_t_11) != (0)) __PYX_ERR(0, 5586, __pyx_L1_error);
__pyx_t_11 = 0;
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_12};
__pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_batches, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5585, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
__Pyx_DECREF_SET(__pyx_v_sliceable, __pyx_t_7);
__pyx_t_7 = 0;
5587: else:
+5588: return False
/*else*/ {
__pyx_r = 0;
goto __pyx_L0;
}
__pyx_L6:;
5589:
+5590: total_rows = _capsule_row_count(sliceable)
__pyx_t_13 = __pyx_f_7questdb_7_client__capsule_row_count(__pyx_v_sliceable); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-2L))) __PYX_ERR(0, 5590, __pyx_L1_error)
__pyx_v_total_rows = __pyx_t_13;
5591:
+5592: if not isinstance(table_name, str):
__pyx_t_1 = PyUnicode_Check(__pyx_v_table_name);
__pyx_t_2 = (!__pyx_t_1);
if (unlikely(__pyx_t_2)) {
/* … */
}
+5593: raise TypeError(
__pyx_t_3 = NULL;
__pyx_t_8 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_table_name_must_be_str_for_Arrow};
__pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5593, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
__Pyx_Raise(__pyx_t_7, 0, 0, 0);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__PYX_ERR(0, 5593, __pyx_L1_error)
5594: 'table_name must be str for Arrow-native DataFrame input.')
+5595: if at is None or isinstance(at, ServerTimestampType):
__pyx_t_1 = (__pyx_v_at == Py_None);
if (!__pyx_t_1) {
} else {
__pyx_t_2 = __pyx_t_1;
goto __pyx_L19_bool_binop_done;
}
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ServerTimestampType); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5595, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_1 = PyObject_IsInstance(__pyx_v_at, __pyx_t_7); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 5595, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_2 = __pyx_t_1;
__pyx_L19_bool_binop_done:;
if (__pyx_t_2) {
/* … */
goto __pyx_L18;
}
+5596: at_is_column = False
__pyx_v_at_is_column = 0;
+5597: elif isinstance(at, TimestampNanos):
__pyx_t_2 = __Pyx_TypeCheck(__pyx_v_at, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampNanos);
if (__pyx_t_2) {
/* … */
goto __pyx_L18;
}
+5598: at_scalar_set = True
__pyx_v_at_scalar_set = 1;
+5599: at_scalar_nanos = (<TimestampNanos>at)._value
__pyx_t_14 = ((struct __pyx_obj_7questdb_7_client_TimestampNanos *)__pyx_v_at)->_value;
__pyx_v_at_scalar_nanos = __pyx_t_14;
+5600: elif isinstance(at, datetime.datetime):
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5600, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5600, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_2 = PyObject_IsInstance(__pyx_v_at, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 5600, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_2) { /* … */ goto __pyx_L18; }
+5601: at_scalar_set = True
__pyx_v_at_scalar_set = 1;
+5602: at_scalar_nanos = datetime_to_nanos(at)
if (!(likely(((__pyx_v_at) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_at, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime))))) __PYX_ERR(0, 5602, __pyx_L1_error) __pyx_t_14 = __pyx_f_7questdb_7_client_datetime_to_nanos(((PyDateTime_DateTime *)__pyx_v_at)); if (unlikely(__pyx_t_14 == ((int64_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 5602, __pyx_L1_error) __pyx_v_at_scalar_nanos = __pyx_t_14;
+5603: elif isinstance(at, str):
__pyx_t_2 = PyUnicode_Check(__pyx_v_at);
if (__pyx_t_2) {
/* … */
goto __pyx_L18;
}
+5604: at_is_column = True
__pyx_v_at_is_column = 1;
+5605: elif isinstance(at, int) and not isinstance(at, bool):
__pyx_t_1 = PyLong_Check(__pyx_v_at); if (__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L21_bool_binop_done; } __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_at, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool); __pyx_t_15 = (!__pyx_t_1); __pyx_t_2 = __pyx_t_15; __pyx_L21_bool_binop_done:; if (likely(__pyx_t_2)) { /* … */ goto __pyx_L18; }
+5606: at = _capsule_at_index_to_name(sliceable, at)
__pyx_t_10 = __Pyx_PyLong_As_int(__pyx_v_at); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5606, __pyx_L1_error) __pyx_t_3 = __pyx_f_7questdb_7_client__capsule_at_index_to_name(__pyx_v_sliceable, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF_SET(__pyx_v_at, __pyx_t_3); __pyx_t_3 = 0;
+5607: at_is_column = True
__pyx_v_at_is_column = 1;
5608: else:
+5609: raise TypeError(
/*else*/ {
__pyx_t_7 = NULL;
__pyx_t_8 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_at_must_be_a_column_name_str_int};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5609, __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(0, 5609, __pyx_L1_error)
}
__pyx_L18:;
5610: 'at must be a column name str, int index, TimestampNanos, '
5611: 'datetime, ServerTimestamp, or None for Arrow-native DataFrame '
5612: 'input.')
5613:
5614: # An empty frame is a no-op: emit nothing and skip symbol-shape
5615: # validation, which is moot with zero rows.
+5616: if total_rows == 0:
__pyx_t_2 = (__pyx_v_total_rows == 0);
if (__pyx_t_2) {
/* … */
}
+5617: return True
__pyx_r = 1;
goto __pyx_L0;
5618:
+5619: symbol_overrides = _resolve_symbols_to_overrides(sliceable, symbols)
__pyx_t_3 = __pyx_f_7questdb_7_client__resolve_symbols_to_overrides(__pyx_v_sliceable, __pyx_v_symbols); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_symbol_overrides = __pyx_t_3; __pyx_t_3 = 0;
+5620: if symbol_overrides is None:
__pyx_t_2 = (__pyx_v_symbol_overrides == Py_None);
if (__pyx_t_2) {
/* … */
}
+5621: return False
__pyx_r = 0;
goto __pyx_L0;
+5622: merged_overrides = _merge_capsule_overrides(
__pyx_t_3 = __pyx_f_7questdb_7_client__merge_capsule_overrides(__pyx_v_symbol_overrides, __pyx_v_validated_overrides); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_merged_overrides = __pyx_t_3; __pyx_t_3 = 0;
5623: symbol_overrides, validated_overrides)
5624:
+5625: can_slice = (total_rows >= 0) and (
__pyx_t_15 = (__pyx_v_total_rows >= 0);
if (__pyx_t_15) {
} else {
__pyx_t_2 = __pyx_t_15;
goto __pyx_L25_bool_binop_done;
}
+5626: hasattr(sliceable, 'slice')
__pyx_t_15 = __Pyx_HasAttr(__pyx_v_sliceable, __pyx_mstate_global->__pyx_n_u_slice); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 5626, __pyx_L1_error) if (!__pyx_t_15) { } else { __pyx_t_2 = __pyx_t_15; goto __pyx_L25_bool_binop_done; }
+5627: or _is_pandas_dataframe_object(sliceable))
__pyx_t_15 = __pyx_f_7questdb_7_client__is_pandas_dataframe_object(__pyx_v_sliceable); if (unlikely(__pyx_t_15 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5627, __pyx_L1_error) __pyx_t_2 = __pyx_t_15; __pyx_L25_bool_binop_done:; __pyx_v_can_slice = __pyx_t_2;
5628:
+5629: b = qdb_pystr_buf_new()
__pyx_v_b = qdb_pystr_buf_new();
+5630: memset(&c_schema, 0, sizeof(ArrowSchema))
(void)(memset((&__pyx_v_c_schema), 0, (sizeof(struct ArrowSchema))));
+5631: try:
/*try:*/ {
+5632: str_to_table_name(b, <PyObject*>table_name, &c_table_name)
__pyx_t_16 = __pyx_f_7questdb_7_client_str_to_table_name(__pyx_v_b, ((PyObject *)__pyx_v_table_name), (&__pyx_v_c_table_name)); if (unlikely(__pyx_t_16 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 5632, __pyx_L29_error)
+5633: if at_is_column:
if (__pyx_v_at_is_column) {
/* … */
}
+5634: str_to_column_name(b, at, &c_ts_column)
__pyx_t_3 = __pyx_v_at;
__Pyx_INCREF(__pyx_t_3);
if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(0, 5634, __pyx_L29_error)
__pyx_t_16 = __pyx_f_7questdb_7_client_str_to_column_name(__pyx_v_b, ((PyObject*)__pyx_t_3), (&__pyx_v_c_ts_column)); if (unlikely(__pyx_t_16 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 5634, __pyx_L29_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+5635: c_ts_column_ptr = &c_ts_column
__pyx_v_c_ts_column_ptr = (&__pyx_v_c_ts_column);
5636:
+5637: if merged_overrides is not None:
__pyx_t_2 = (__pyx_v_merged_overrides != Py_None);
if (__pyx_t_2) {
/* … */
}
+5638: c_overrides_len = len(merged_overrides)
__pyx_t_13 = PyObject_Length(__pyx_v_merged_overrides); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5638, __pyx_L29_error) __pyx_v_c_overrides_len = __pyx_t_13;
+5639: c_overrides = <qwp_arrow_override*>calloc(
__pyx_v_c_overrides = ((struct qwp_arrow_override *)calloc(__pyx_v_c_overrides_len, (sizeof(struct qwp_arrow_override))));
5640: c_overrides_len, sizeof(qwp_arrow_override))
+5641: if c_overrides == NULL:
__pyx_t_2 = (__pyx_v_c_overrides == NULL);
if (unlikely(__pyx_t_2)) {
/* … */
}
+5642: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 5642, __pyx_L29_error)
+5643: for i in range(c_overrides_len):
__pyx_t_8 = __pyx_v_c_overrides_len;
__pyx_t_17 = __pyx_t_8;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_i = __pyx_t_18;
+5644: name_bytes, kind_int, arg_int = merged_overrides[i]
__pyx_t_3 = __Pyx_GetItemInt(__pyx_v_merged_overrides, __pyx_v_i, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5644, __pyx_L29_error) __Pyx_GOTREF(__pyx_t_3); if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 5644, __pyx_L29_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_7); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_12); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 2); __Pyx_INCREF(__pyx_t_9); } else { __pyx_t_7 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5644, __pyx_L29_error) __Pyx_XGOTREF(__pyx_t_7); __pyx_t_12 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5644, __pyx_L29_error) __Pyx_XGOTREF(__pyx_t_12); __pyx_t_9 = __Pyx_PyList_GET_ITEM_REF(sequence, 2, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5644, __pyx_L29_error) __Pyx_XGOTREF(__pyx_t_9); } #else __pyx_t_7 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5644, __pyx_L29_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_12 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5644, __pyx_L29_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_9 = __Pyx_PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5644, __pyx_L29_error) __Pyx_GOTREF(__pyx_t_9); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5644, __pyx_L29_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_19 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_11); index = 0; __pyx_t_7 = __pyx_t_19(__pyx_t_11); if (unlikely(!__pyx_t_7)) goto __pyx_L36_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); index = 1; __pyx_t_12 = __pyx_t_19(__pyx_t_11); if (unlikely(!__pyx_t_12)) goto __pyx_L36_unpacking_failed; __Pyx_GOTREF(__pyx_t_12); index = 2; __pyx_t_9 = __pyx_t_19(__pyx_t_11); if (unlikely(!__pyx_t_9)) goto __pyx_L36_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); if (__Pyx_IternextUnpackEndCheck(__pyx_t_19(__pyx_t_11), 3) < (0)) __PYX_ERR(0, 5644, __pyx_L29_error) __pyx_t_19 = NULL; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L37_unpacking_done; __pyx_L36_unpacking_failed:; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_19 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 5644, __pyx_L29_error) __pyx_L37_unpacking_done:; } __pyx_t_10 = __Pyx_PyLong_As_int(__pyx_t_12); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5644, __pyx_L29_error) __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_20 = __Pyx_PyLong_As_int(__pyx_t_9); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5644, __pyx_L29_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_name_bytes, __pyx_t_7); __pyx_t_7 = 0; __pyx_v_kind_int = __pyx_t_10; __pyx_v_arg_int = __pyx_t_20;
+5645: c_overrides[i].column = PyBytes_AsString(name_bytes)
__pyx_t_21 = PyBytes_AsString(__pyx_v_name_bytes); if (unlikely(__pyx_t_21 == ((void *)NULL))) __PYX_ERR(0, 5645, __pyx_L29_error) (__pyx_v_c_overrides[__pyx_v_i]).column = __pyx_t_21;
+5646: c_overrides[i].column_len = PyBytes_GET_SIZE(name_bytes)
(__pyx_v_c_overrides[__pyx_v_i]).column_len = PyBytes_GET_SIZE(__pyx_v_name_bytes);
+5647: c_overrides[i].kind = <uint32_t>kind_int
(__pyx_v_c_overrides[__pyx_v_i]).kind = ((uint32_t)__pyx_v_kind_int);
+5648: c_overrides[i].arg = <uint32_t>arg_int
(__pyx_v_c_overrides[__pyx_v_i]).arg = ((uint32_t)__pyx_v_arg_int);
}
5649:
+5650: _ensure_doesnt_have_gil(&gs)
__pyx_t_2 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5650, __pyx_L29_error)
+5651: conn = _direct_conn_open(src, budget_ms, &err)
__pyx_v_conn = __pyx_f_7questdb_7_client__direct_conn_open(__pyx_v_src, __pyx_v_budget_ms, (&__pyx_v_err));
+5652: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 5652, __pyx_L29_error)
+5653: if conn == NULL:
__pyx_t_2 = (__pyx_v_conn == NULL);
if (unlikely(__pyx_t_2)) {
/* … */
}
+5654: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5654, __pyx_L29_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(0, 5654, __pyx_L29_error)
5655:
+5656: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L44_try_end;
__pyx_L39_error:;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L41_except_error:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4);
goto __pyx_L29_error;
__pyx_L44_try_end:;
}
+5657: if not can_slice:
__pyx_t_2 = (!__pyx_v_can_slice);
if (__pyx_t_2) {
/* … */
goto __pyx_L45;
}
5658: # A one-shot stream (e.g. RecordBatchReader) cannot be
5659: # re-exported for a whole-frame replay: a failed attempt
5660: # must surface instead of retrying with the drained rest.
+5661: nonreplayable_consumed[0] = True
(__pyx_v_nonreplayable_consumed[0]) = 1;
+5662: _capsule_consume_stream_with_hint(
__pyx_t_16 = __pyx_f_7questdb_7_client__capsule_consume_stream_with_hint(__pyx_v_conn, __pyx_v_sliceable, __pyx_v_c_table_name, __pyx_v_c_ts_column_ptr, __pyx_v_at_scalar_set, __pyx_v_at_scalar_nanos, (&__pyx_v_c_schema), __pyx_v_c_overrides, __pyx_v_c_overrides_len, (&__pyx_v_any_flushed), (&__pyx_v_deferred_since_sync), __pyx_v_committed_prefix, __pyx_v_max_rows_per_batch, 0); if (unlikely(__pyx_t_16 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 5662, __pyx_L39_error)
5663: conn, sliceable, c_table_name, c_ts_column_ptr,
5664: at_scalar_set, at_scalar_nanos,
5665: &c_schema, c_overrides, c_overrides_len,
5666: &any_flushed, &deferred_since_sync,
5667: committed_prefix, max_rows_per_batch, False)
5668: else:
+5669: offset = 0
/*else*/ {
__pyx_v_offset = 0;
+5670: while offset < total_rows:
while (1) {
__pyx_t_2 = (__pyx_v_offset < __pyx_v_total_rows);
if (!__pyx_t_2) break;
+5671: chunk_rows = max_rows_per_batch
__pyx_v_chunk_rows = __pyx_v_max_rows_per_batch;
+5672: if chunk_rows > total_rows - offset:
__pyx_t_2 = (__pyx_v_chunk_rows > (__pyx_v_total_rows - __pyx_v_offset));
if (__pyx_t_2) {
/* … */
}
+5673: chunk_rows = total_rows - offset
__pyx_v_chunk_rows = (__pyx_v_total_rows - __pyx_v_offset);
+5674: row_slice = _capsule_slice_rows(
__pyx_t_3 = __pyx_f_7questdb_7_client__capsule_slice_rows(__pyx_v_sliceable, __pyx_v_offset, __pyx_v_chunk_rows); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5674, __pyx_L39_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF_SET(__pyx_v_row_slice, __pyx_t_3); __pyx_t_3 = 0;
5675: sliceable, offset, chunk_rows)
+5676: _capsule_consume_stream_with_hint(
__pyx_t_16 = __pyx_f_7questdb_7_client__capsule_consume_stream_with_hint(__pyx_v_conn, __pyx_v_row_slice, __pyx_v_c_table_name, __pyx_v_c_ts_column_ptr, __pyx_v_at_scalar_set, __pyx_v_at_scalar_nanos, (&__pyx_v_c_schema), __pyx_v_c_overrides, __pyx_v_c_overrides_len, (&__pyx_v_any_flushed), (&__pyx_v_deferred_since_sync), __pyx_v_committed_prefix, __pyx_v_max_rows_per_batch, 1); if (unlikely(__pyx_t_16 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 5676, __pyx_L39_error)
5677: conn, row_slice, c_table_name, c_ts_column_ptr,
5678: at_scalar_set, at_scalar_nanos,
5679: &c_schema, c_overrides, c_overrides_len,
5680: &any_flushed, &deferred_since_sync,
5681: committed_prefix, max_rows_per_batch, True)
+5682: offset += chunk_rows
__pyx_v_offset = (__pyx_v_offset + __pyx_v_chunk_rows);
}
}
__pyx_L45:;
+5683: if any_flushed:
if (__pyx_v_any_flushed) {
/* … */
}
+5684: _dataframe_columnar_sync(conn)
__pyx_t_16 = __pyx_f_7questdb_7_client__dataframe_columnar_sync(__pyx_v_conn); if (unlikely(__pyx_t_16 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 5684, __pyx_L39_error)
+5685: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._dataframe_client_try_capsule_path", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_9, &__pyx_t_12) < 0) __PYX_ERR(0, 5685, __pyx_L41_except_error)
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_12);
+5686: force_drop_conn = _dataframe_columnar_force_drop_after_error(
__pyx_v_force_drop_conn = __pyx_f_7questdb_7_client__dataframe_columnar_force_drop_after_error(__pyx_v_conn, __pyx_v_any_flushed);
5687: conn, any_flushed)
+5688: raise
__Pyx_GIVEREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_9, __pyx_t_12); __pyx_t_3 = 0; __pyx_t_9 = 0; __pyx_t_12 = 0; __PYX_ERR(0, 5688, __pyx_L41_except_error) }
5689:
+5690: return True
__pyx_r = 1;
goto __pyx_L28_return;
}
5691: finally:
+5692: _ensure_has_gil(&gs)
/*finally:*/ {
__pyx_L29_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_ExceptionSwap(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25);
if ( unlikely(__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0)) __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_23);
__Pyx_XGOTREF(__pyx_t_24);
__Pyx_XGOTREF(__pyx_t_25);
__pyx_t_20 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_22 = __pyx_filename;
{
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 5692, __pyx_L53_error)
/* … */
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 5692, __pyx_L1_error)
+5693: if conn != NULL:
__pyx_t_2 = (__pyx_v_conn != NULL);
if (__pyx_t_2) {
/* … */
}
/* … */
__pyx_t_15 = (__pyx_v_conn != NULL);
if (__pyx_t_15) {
/* … */
}
+5694: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L57;
}
__pyx_L57:;
}
}
/* … */
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L64;
}
__pyx_L64:;
}
}
+5695: _direct_conn_close(src, conn, force_drop_conn)
__pyx_f_7questdb_7_client__direct_conn_close(__pyx_v_src, __pyx_v_conn, __pyx_v_force_drop_conn);
}
/* … */
__pyx_f_7questdb_7_client__direct_conn_close(__pyx_v_src, __pyx_v_conn, __pyx_v_force_drop_conn);
}
+5696: if c_schema.release != NULL:
__pyx_t_2 = (__pyx_v_c_schema.release != NULL);
if (__pyx_t_2) {
/* … */
}
/* … */
__pyx_t_15 = (__pyx_v_c_schema.release != NULL);
if (__pyx_t_15) {
/* … */
}
+5697: c_schema.release(&c_schema)
__pyx_v_c_schema.release((&__pyx_v_c_schema));
/* … */
__pyx_v_c_schema.release((&__pyx_v_c_schema));
+5698: if c_overrides != NULL:
__pyx_t_2 = (__pyx_v_c_overrides != NULL);
if (__pyx_t_2) {
/* … */
}
/* … */
__pyx_t_15 = (__pyx_v_c_overrides != NULL);
if (__pyx_t_15) {
/* … */
}
+5699: free(c_overrides)
free(__pyx_v_c_overrides);
/* … */
free(__pyx_v_c_overrides);
+5700: if b != NULL:
__pyx_t_2 = (__pyx_v_b != NULL);
if (__pyx_t_2) {
/* … */
}
}
__Pyx_XGIVEREF(__pyx_t_23);
__Pyx_XGIVEREF(__pyx_t_24);
__Pyx_XGIVEREF(__pyx_t_25);
__Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
__pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
__pyx_lineno = __pyx_t_20; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_22;
goto __pyx_L1_error;
__pyx_L53_error:;
__Pyx_XGIVEREF(__pyx_t_23);
__Pyx_XGIVEREF(__pyx_t_24);
__Pyx_XGIVEREF(__pyx_t_25);
__Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25);
__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_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0;
goto __pyx_L1_error;
}
__pyx_L28_return: {
__pyx_t_2 = __pyx_r;
/* … */
__pyx_t_15 = (__pyx_v_b != NULL);
if (__pyx_t_15) {
/* … */
}
__pyx_r = __pyx_t_2;
goto __pyx_L0;
}
}
+5701: qdb_pystr_buf_free(b)
qdb_pystr_buf_free(__pyx_v_b);
/* … */
qdb_pystr_buf_free(__pyx_v_b);
5702:
5703:
+5704: cdef void_int _dataframe_numpy_publish(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__dataframe_numpy_publish(struct __pyx_t_7questdb_7_client_direct_conn_source_t *__pyx_v_src, uint64_t __pyx_v_budget_ms, struct qdb_pystr_buf *__pyx_v_b, struct __pyx_t_7questdb_7_client_dataframe_plan_t *__pyx_v_plan, PyObject *__pyx_v_df, PyObject *__pyx_v_table_name, PyObject *__pyx_v_table_name_col, PyObject *__pyx_v_symbols, PyObject *__pyx_v_at, size_t __pyx_v_max_rows_per_batch, int *__pyx_v_committed_prefix) {
struct qwp_chunk *__pyx_v_chunk;
struct qwp_direct_sender *__pyx_v_conn;
struct line_sender_error *__pyx_v_err;
PyThreadState *__pyx_v_gs;
int __pyx_v_flushed;
int __pyx_v_force_drop_conn;
size_t __pyx_v_rows_per_chunk;
size_t __pyx_v_row_offset;
size_t __pyx_v_chunk_rows;
__pyx_t_7questdb_7_client_void_int __pyx_r;
__Pyx_INCREF(__pyx_v_df);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._dataframe_numpy_publish", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_df);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5705: direct_conn_source_t* src,
5706: uint64_t budget_ms,
5707: qdb_pystr_buf* b,
5708: dataframe_plan_t* plan,
5709: object df,
5710: object table_name,
5711: object table_name_col,
5712: object symbols,
5713: object at,
5714: size_t max_rows_per_batch,
5715: bint* committed_prefix) except -1:
+5716: cdef qwp_chunk* chunk = NULL
__pyx_v_chunk = NULL;
+5717: cdef qwp_direct_sender* conn = NULL
__pyx_v_conn = NULL;
+5718: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+5719: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+5720: cdef bint flushed = False
__pyx_v_flushed = 0;
+5721: cdef bint force_drop_conn = False
__pyx_v_force_drop_conn = 0;
5722: cdef size_t rows_per_chunk
5723: cdef size_t row_offset
5724: cdef size_t chunk_rows
+5725: try:
/*try:*/ {
+5726: df = _dataframe_normalize_nullable(df)
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_normalize_nullable(__pyx_v_df); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5726, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_df, __pyx_t_1); __pyx_t_1 = 0;
+5727: df = _dataframe_normalize_at_timestamp(df, at)
__pyx_t_1 = __pyx_f_7questdb_7_client__dataframe_normalize_at_timestamp(__pyx_v_df, __pyx_v_at); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5727, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_df, __pyx_t_1); __pyx_t_1 = 0;
+5728: _dataframe_plan_build(
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_plan_build(__pyx_v_b, __pyx_v_df, __pyx_v_table_name, __pyx_v_table_name_col, __pyx_v_symbols, __pyx_v_at, __pyx_v_plan, ((PyObject*)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 5728, __pyx_L4_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5729: b,
5730: df,
5731: table_name,
5732: table_name_col,
5733: symbols,
5734: at,
5735: plan,
+5736: _FIELD_TARGETS_QWP)
__pyx_t_1 = __pyx_v_7questdb_7_client__FIELD_TARGETS_QWP;
__Pyx_INCREF(__pyx_t_1);
+5737: if (plan.col_count == 0) or (plan.row_count == 0):
__pyx_t_4 = (__pyx_v_plan->col_count == 0);
if (!__pyx_t_4) {
} else {
__pyx_t_3 = __pyx_t_4;
goto __pyx_L7_bool_binop_done;
}
__pyx_t_4 = (__pyx_v_plan->row_count == 0);
__pyx_t_3 = __pyx_t_4;
__pyx_L7_bool_binop_done:;
if (__pyx_t_3) {
/* … */
}
+5738: return 0
__pyx_r = 0;
goto __pyx_L3_return;
5739:
+5740: _dataframe_apply_roundtrip_overrides(df, plan)
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_apply_roundtrip_overrides(__pyx_v_df, __pyx_v_plan); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 5740, __pyx_L4_error)
+5741: _dataframe_columnar_promote_cols(df, plan)
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_columnar_promote_cols(__pyx_v_df, __pyx_v_plan); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 5741, __pyx_L4_error)
+5742: _dataframe_columnar_validate_plan(df, plan)
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_columnar_validate_plan(__pyx_v_df, __pyx_v_plan); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 5742, __pyx_L4_error)
+5743: _dataframe_columnar_prebuild_pyobj(df, plan)
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_columnar_prebuild_pyobj(__pyx_v_df, __pyx_v_plan); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 5743, __pyx_L4_error)
+5744: rows_per_chunk = _dataframe_columnar_rows_per_chunk(
__pyx_v_rows_per_chunk = __pyx_f_7questdb_7_client__dataframe_columnar_rows_per_chunk(__pyx_v_plan, __pyx_v_max_rows_per_batch);
5745: plan, max_rows_per_batch)
5746:
+5747: _ensure_doesnt_have_gil(&gs)
__pyx_t_3 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_3 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5747, __pyx_L4_error)
+5748: conn = _direct_conn_open(src, budget_ms, &err)
__pyx_v_conn = __pyx_f_7questdb_7_client__direct_conn_open(__pyx_v_src, __pyx_v_budget_ms, (&__pyx_v_err));
+5749: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 5749, __pyx_L4_error)
+5750: if conn == NULL:
__pyx_t_3 = (__pyx_v_conn == NULL);
if (unlikely(__pyx_t_3)) {
/* … */
}
+5751: 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(0, 5751, __pyx_L4_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(0, 5751, __pyx_L4_error)
5752:
+5753: chunk = qwp_chunk_new(
__pyx_v_chunk = qwp_chunk_new(__pyx_v_plan->c_table_name.buf, __pyx_v_plan->c_table_name.len, (&__pyx_v_err));
5754: plan.c_table_name.buf,
5755: plan.c_table_name.len,
5756: &err)
+5757: if chunk == NULL:
__pyx_t_3 = (__pyx_v_chunk == NULL);
if (unlikely(__pyx_t_3)) {
/* … */
}
+5758: 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(0, 5758, __pyx_L4_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(0, 5758, __pyx_L4_error)
+5759: 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_L16_try_end;
__pyx_L11_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
__pyx_L13_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_L4_error;
__pyx_L16_try_end:;
}
+5760: row_offset = 0
__pyx_v_row_offset = 0;
+5761: while row_offset < plan.row_count:
while (1) {
__pyx_t_3 = (__pyx_v_row_offset < __pyx_v_plan->row_count);
if (!__pyx_t_3) break;
+5762: if not qwp_chunk_clear(chunk, &err):
__pyx_t_3 = (!qwp_chunk_clear(__pyx_v_chunk, (&__pyx_v_err)));
if (unlikely(__pyx_t_3)) {
/* … */
}
+5763: 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(0, 5763, __pyx_L11_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(0, 5763, __pyx_L11_error)
+5764: chunk_rows = rows_per_chunk
__pyx_v_chunk_rows = __pyx_v_rows_per_chunk;
+5765: if chunk_rows > plan.row_count - row_offset:
__pyx_t_3 = (__pyx_v_chunk_rows > (__pyx_v_plan->row_count - __pyx_v_row_offset));
if (__pyx_t_3) {
/* … */
}
+5766: chunk_rows = plan.row_count - row_offset
__pyx_v_chunk_rows = (__pyx_v_plan->row_count - __pyx_v_row_offset);
+5767: _dataframe_columnar_populate_chunk(
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_columnar_populate_chunk(__pyx_v_plan, __pyx_v_chunk, __pyx_v_row_offset, __pyx_v_chunk_rows); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 5767, __pyx_L11_error)
5768: plan,
5769: chunk,
5770: row_offset,
5771: chunk_rows)
+5772: _dataframe_columnar_flush(
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_columnar_flush(__pyx_v_conn, __pyx_v_chunk, 1, __pyx_v_committed_prefix); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 5772, __pyx_L11_error)
5773: conn,
5774: chunk,
5775: True,
5776: committed_prefix)
+5777: flushed = True
__pyx_v_flushed = 1;
+5778: row_offset += chunk_rows
__pyx_v_row_offset = (__pyx_v_row_offset + __pyx_v_chunk_rows);
}
5779:
+5780: _dataframe_columnar_sync(conn)
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_columnar_sync(__pyx_v_conn); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 5780, __pyx_L11_error)
+5781: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._dataframe_numpy_publish", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(0, 5781, __pyx_L13_except_error)
__Pyx_XGOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_t_8);
__Pyx_XGOTREF(__pyx_t_9);
+5782: force_drop_conn = _dataframe_columnar_force_drop_after_error(
__pyx_v_force_drop_conn = __pyx_f_7questdb_7_client__dataframe_columnar_force_drop_after_error(__pyx_v_conn, __pyx_v_flushed);
5783: conn, flushed)
+5784: raise
__Pyx_GIVEREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_8, __pyx_t_9); __pyx_t_1 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __PYX_ERR(0, 5784, __pyx_L13_except_error) }
5785:
+5786: return 0
__pyx_r = 0;
goto __pyx_L3_return;
}
5787: finally:
+5788: _ensure_has_gil(&gs)
/*finally:*/ {
__pyx_L4_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
if ( unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_15);
__pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
{
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 5788, __pyx_L24_error)
/* … */
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 5788, __pyx_L1_error)
+5789: if conn != NULL:
__pyx_t_3 = (__pyx_v_conn != NULL);
if (__pyx_t_3) {
/* … */
}
/* … */
__pyx_t_3 = (__pyx_v_conn != NULL);
if (__pyx_t_3) {
/* … */
}
+5790: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L28;
}
__pyx_L28:;
}
}
/* … */
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L33;
}
__pyx_L33:;
}
}
+5791: _direct_conn_close(src, conn, force_drop_conn)
__pyx_f_7questdb_7_client__direct_conn_close(__pyx_v_src, __pyx_v_conn, __pyx_v_force_drop_conn);
}
/* … */
__pyx_f_7questdb_7_client__direct_conn_close(__pyx_v_src, __pyx_v_conn, __pyx_v_force_drop_conn);
}
+5792: if chunk != NULL:
__pyx_t_3 = (__pyx_v_chunk != NULL);
if (__pyx_t_3) {
/* … */
}
/* … */
__pyx_t_3 = (__pyx_v_chunk != NULL);
if (__pyx_t_3) {
/* … */
}
+5793: qwp_chunk_free(chunk)
qwp_chunk_free(__pyx_v_chunk);
/* … */
qwp_chunk_free(__pyx_v_chunk);
5794: # The plan is rebuilt on each failover attempt; release this
5795: # attempt's plan so a re-send starts from a blank plan.
+5796: dataframe_plan_release(plan)
__pyx_f_7questdb_7_client_dataframe_plan_release(__pyx_v_plan);
/* … */
__pyx_f_7questdb_7_client_dataframe_plan_release(__pyx_v_plan);
+5797: plan[0] = dataframe_plan_blank()
(__pyx_v_plan[0]) = __pyx_f_7questdb_7_client_dataframe_plan_blank();
}
__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);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ErrRestore(__pyx_t_7, __pyx_t_6, __pyx_t_5);
__pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
__pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12;
goto __pyx_L1_error;
__pyx_L24_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);
__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;
__pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
goto __pyx_L1_error;
}
__pyx_L3_return: {
__pyx_t_2 = __pyx_r;
/* … */
(__pyx_v_plan[0]) = __pyx_f_7questdb_7_client_dataframe_plan_blank();
__pyx_r = __pyx_t_2;
goto __pyx_L0;
}
}
5798:
5799:
+5800: cdef void_int _direct_dataframe_run(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__direct_dataframe_run(struct __pyx_t_7questdb_7_client_direct_conn_source_t *__pyx_v_src, double __pyx_v_reconnect_max_s, struct qdb_pystr_buf *__pyx_v_b, struct __pyx_t_7questdb_7_client_dataframe_plan_t *__pyx_v_plan, PyObject *__pyx_v_df, PyObject *__pyx_v_table_name, PyObject *__pyx_v_table_name_col, PyObject *__pyx_v_symbols, PyObject *__pyx_v_at, size_t __pyx_v_max_rows_per_batch, PyObject *__pyx_v_schema_overrides) {
uint64_t __pyx_v_budget_ms;
double __pyx_v_deadline;
double __pyx_v_remaining;
int __pyx_v_committed_prefix;
int __pyx_v_nonreplayable_consumed;
PyObject *__pyx_v_validated_overrides = 0;
int64_t __pyx_v_at_micros;
PyObject *__pyx_v_ve = NULL;
PyObject *__pyx_v_exc = NULL;
__pyx_t_7questdb_7_client_void_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_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_XDECREF(__pyx_t_16);
__Pyx_XDECREF(__pyx_t_30);
__Pyx_AddTraceback("questdb._client._direct_dataframe_run", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_validated_overrides);
__Pyx_XDECREF(__pyx_v_ve);
__Pyx_XDECREF(__pyx_v_exc);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5801: direct_conn_source_t* src,
5802: double reconnect_max_s,
5803: qdb_pystr_buf* b,
5804: dataframe_plan_t* plan,
5805: object df,
5806: object table_name,
5807: object table_name_col,
5808: object symbols,
5809: object at,
5810: size_t max_rows_per_batch,
5811: object schema_overrides) except -1:
+5812: cdef uint64_t budget_ms = 0
__pyx_v_budget_ms = 0;
+5813: cdef double deadline = 0.0
__pyx_v_deadline = 0.0;
+5814: cdef double remaining = 0.0
__pyx_v_remaining = 0.0;
+5815: cdef bint committed_prefix = False
__pyx_v_committed_prefix = 0;
+5816: cdef bint nonreplayable_consumed = False
__pyx_v_nonreplayable_consumed = 0;
+5817: cdef object validated_overrides = _validate_schema_overrides(
__pyx_t_1 = __pyx_f_7questdb_7_client__validate_schema_overrides(__pyx_v_schema_overrides); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_validated_overrides = __pyx_t_1; __pyx_t_1 = 0;
5818: schema_overrides)
+5819: if max_rows_per_batch <= 0:
__pyx_t_2 = (__pyx_v_max_rows_per_batch <= 0);
if (unlikely(__pyx_t_2)) {
/* … */
}
+5820: raise ValueError('max_rows_per_batch must be >= 1.')
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_max_rows_per_batch_must_be_1};
__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(0, 5820, __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(0, 5820, __pyx_L1_error)
+5821: if isinstance(at, datetime.datetime):
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5821, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5821, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = PyObject_IsInstance(__pyx_v_at, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 5821, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_2) { /* … */ }
+5822: if at != at:
__pyx_t_3 = PyObject_RichCompare(__pyx_v_at, __pyx_v_at, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5822, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5822, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+5823: raise QuestDBError(
__pyx_t_1 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5823, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+5824: QuestDBErrorCode.InvalidTimestamp,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5824, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_InvalidTimestamp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5824, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_4 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); assert(__pyx_t_1); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); __pyx_t_4 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Bad_argument_at_NaT_is_not_a_val}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__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_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5823, __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(0, 5823, __pyx_L1_error)
5825: 'Bad argument `at`: NaT is not a valid timestamp.')
+5826: 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_L11_try_end;
__pyx_L6_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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_L8_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_L11_try_end:;
}
+5827: at_micros = datetime_to_micros(at)
if (!(likely(((__pyx_v_at) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_at, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime))))) __PYX_ERR(0, 5827, __pyx_L6_error) __pyx_t_11 = __pyx_f_7questdb_7_client_datetime_to_micros(((PyDateTime_DateTime *)__pyx_v_at)); if (unlikely(__pyx_t_11 == ((int64_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 5827, __pyx_L6_error) __pyx_v_at_micros = __pyx_t_11;
+5828: except ValueError as ve:
__pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError)))); if (__pyx_t_12) { __Pyx_AddTraceback("questdb._client._direct_dataframe_run", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_7) < 0) __PYX_ERR(0, 5828, __pyx_L8_except_error) __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_v_ve = __pyx_t_5; /*try:*/ { /* … */ /*finally:*/ { __pyx_L17_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __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_16); __pyx_t_16 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24); if ( unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_21); __Pyx_XGOTREF(__pyx_t_22); __Pyx_XGOTREF(__pyx_t_23); __Pyx_XGOTREF(__pyx_t_24); __pyx_t_12 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; { __Pyx_DECREF(__pyx_v_ve); __pyx_v_ve = 0; } __Pyx_XGIVEREF(__pyx_t_22); __Pyx_XGIVEREF(__pyx_t_23); __Pyx_XGIVEREF(__pyx_t_24); __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21); __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; goto __pyx_L8_except_error; } } } goto __pyx_L8_except_error;
+5829: raise QuestDBError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5829, __pyx_L17_error)
__Pyx_GOTREF(__pyx_t_13);
+5830: QuestDBErrorCode.InvalidTimestamp,
__Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5830, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_InvalidTimestamp); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5830, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+5831: f'Bad argument `at`: {ve}') from ve
__pyx_t_14 = __Pyx_PyObject_FormatSimple(__pyx_v_ve, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5831, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_16 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Bad_argument_at, __pyx_t_14); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 5831, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_4 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_13))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_13); assert(__pyx_t_6); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_13, __pyx__function); __pyx_t_4 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_15, __pyx_t_16}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_13, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5829, __pyx_L17_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, __pyx_v_ve); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 5829, __pyx_L17_error) }
+5832: if at_micros < 0:
__pyx_t_2 = (__pyx_v_at_micros < 0);
if (unlikely(__pyx_t_2)) {
/* … */
}
+5833: raise ValueError(
__pyx_t_5 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Bad_argument_at_Cannot_use_a_dat};
__pyx_t_7 = __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_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5833, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
__Pyx_Raise(__pyx_t_7, 0, 0, 0);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__PYX_ERR(0, 5833, __pyx_L1_error)
5834: 'Bad argument `at`: Cannot use a datetime before the '
5835: 'Unix epoch (1970-01-01 00:00:00).')
+5836: if not isinstance(
__pyx_t_26 = (!__pyx_t_25);
if (__pyx_t_26) {
} else {
__pyx_t_2 = __pyx_t_26;
goto __pyx_L25_bool_binop_done;
}
/* … */
if (unlikely(__pyx_t_2)) {
/* … */
}
5837: at,
+5838: (str, ServerTimestampType, TimestampNanos,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ServerTimestampType); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5838, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_26 = PyUnicode_Check(__pyx_v_at); if (!__pyx_t_26) { } else { __pyx_t_25 = __pyx_t_26; goto __pyx_L27_bool_binop_done; } /* … */ __pyx_t_26 = PyObject_IsInstance(__pyx_v_at, __pyx_t_7); if (!__pyx_t_26) { } else { __pyx_t_25 = __pyx_t_26; goto __pyx_L27_bool_binop_done; } /* … */ __pyx_t_26 = __Pyx_TypeCheck(__pyx_v_at, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampNanos); if (!__pyx_t_26) { } else { __pyx_t_25 = __pyx_t_26; goto __pyx_L27_bool_binop_done; }
+5839: datetime.datetime)) and not (
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5839, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5839, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* … */ __pyx_t_26 = PyObject_IsInstance(__pyx_v_at, __pyx_t_3); __pyx_t_25 = __pyx_t_26; __pyx_L27_bool_binop_done:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* … */ __pyx_t_27 = (!__pyx_t_26); __pyx_t_2 = __pyx_t_27; __pyx_L25_bool_binop_done:;
+5840: isinstance(at, int) and not isinstance(at, bool)):
__pyx_t_25 = PyLong_Check(__pyx_v_at); if (__pyx_t_25) { } else { __pyx_t_26 = __pyx_t_25; goto __pyx_L31_bool_binop_done; } __pyx_t_25 = __Pyx_TypeCheck(__pyx_v_at, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool); __pyx_t_27 = (!__pyx_t_25); __pyx_t_26 = __pyx_t_27; __pyx_L31_bool_binop_done:;
+5841: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5841, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+5842: QuestDBErrorCode.InvalidTimestamp,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_InvalidTimestamp); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5842, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_4 = 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_4 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_13, __pyx_mstate_global->__pyx_kp_u_dataframe_requires_at_to_be_the}; __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_ERR(0, 5841, __pyx_L1_error)
5843: 'dataframe() requires `at` to be the designated timestamp '
5844: 'column (by name or index), a fixed timestamp shared by every '
5845: 'row (TimestampNanos / datetime), or the explicit '
5846: '`ServerTimestamp` sentinel to let the server assign each '
5847: 'row\'s timestamp on arrival.')
5848: # A zero budget (standalone from-conf source) makes a single attempt:
5849: # a transient failure surfaces immediately rather than re-dialling.
+5850: deadline = time.monotonic() + reconnect_max_s
__pyx_t_5 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_monotonic); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_4 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); assert(__pyx_t_5); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); __pyx_t_4 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __pyx_t_3 = PyFloat_FromDouble(__pyx_v_reconnect_max_s); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyNumber_Add(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_28 = __Pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_28 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 5850, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_deadline = __pyx_t_28;
+5851: while True:
while (1) {
5852: # Reclaim string storage from a prior attempt's released plan.
+5853: qdb_pystr_buf_clear(b)
qdb_pystr_buf_clear(__pyx_v_b);
+5854: try:
{
/*try:*/ {
/* … */
}
__pyx_L35_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__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_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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_L37_except_error:;
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
goto __pyx_L1_error;
__pyx_L39_try_return:;
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
goto __pyx_L0;
__pyx_L36_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
}
}
+5855: if _dataframe_client_try_capsule_path(
__pyx_t_2 = __pyx_f_7questdb_7_client__dataframe_client_try_capsule_path(__pyx_v_src, __pyx_v_budget_ms, __pyx_v_df, __pyx_v_table_name, __pyx_v_table_name_col, __pyx_v_symbols, __pyx_v_at, __pyx_v_max_rows_per_batch, __pyx_v_validated_overrides, (&__pyx_v_committed_prefix), (&__pyx_v_nonreplayable_consumed)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 5855, __pyx_L35_error)
if (__pyx_t_2) {
/* … */
}
5856: src,
5857: budget_ms,
5858: df,
5859: table_name,
5860: table_name_col,
5861: symbols,
5862: at,
5863: max_rows_per_batch,
5864: validated_overrides,
5865: &committed_prefix,
5866: &nonreplayable_consumed):
+5867: return 0
__pyx_r = 0;
goto __pyx_L39_try_return;
+5868: if validated_overrides is not None:
__pyx_t_2 = (__pyx_v_validated_overrides != Py_None);
if (unlikely(__pyx_t_2)) {
/* … */
}
+5869: raise UnsupportedDataFrameShapeError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_UnsupportedDataFrameShapeError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5869, __pyx_L35_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_4 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
__pyx_t_4 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_schema_overrides_requires_the_Ar};
__pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __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;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5869, __pyx_L35_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(0, 5869, __pyx_L35_error)
5870: 'schema_overrides requires the Arrow columnar path: '
5871: 'fully Arrow-backed input (pyarrow / polars, or pandas '
5872: 'where every column uses ArrowDtype) without '
5873: '`table_name_col`. This input falls back to the NumPy '
5874: 'planner, which does not apply schema_overrides; '
5875: 'convert the frame, e.g. '
5876: "df.convert_dtypes(dtype_backend='pyarrow'), or drop "
5877: 'schema_overrides.')
+5878: _dataframe_numpy_publish(
__pyx_t_29 = __pyx_f_7questdb_7_client__dataframe_numpy_publish(__pyx_v_src, __pyx_v_budget_ms, __pyx_v_b, __pyx_v_plan, __pyx_v_df, __pyx_v_table_name, __pyx_v_table_name_col, __pyx_v_symbols, __pyx_v_at, __pyx_v_max_rows_per_batch, (&__pyx_v_committed_prefix)); if (unlikely(__pyx_t_29 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 5878, __pyx_L35_error)
5879: src, budget_ms, b, plan, df, table_name,
5880: table_name_col, symbols, at, max_rows_per_batch,
5881: &committed_prefix)
+5882: return 0
__pyx_r = 0;
goto __pyx_L39_try_return;
+5883: except QuestDBError as exc:
__Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_7, &__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5883, __pyx_L37_except_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_17 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_5, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_ErrRestore(__pyx_t_5, __pyx_t_7, __pyx_t_3); __pyx_t_5 = 0; __pyx_t_7 = 0; __pyx_t_3 = 0; if (__pyx_t_17) { __Pyx_AddTraceback("questdb._client._direct_dataframe_run", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_5) < 0) __PYX_ERR(0, 5883, __pyx_L37_except_error) __Pyx_XGOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_v_exc = __pyx_t_7; /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; goto __pyx_L51; } __pyx_L50_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __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_16); __pyx_t_16 = 0; __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19); if ( unlikely(__Pyx_GetException(&__pyx_t_24, &__pyx_t_23, &__pyx_t_22) < 0)) __Pyx_ErrFetch(&__pyx_t_24, &__pyx_t_23, &__pyx_t_22); __Pyx_XGOTREF(__pyx_t_24); __Pyx_XGOTREF(__pyx_t_23); __Pyx_XGOTREF(__pyx_t_22); __Pyx_XGOTREF(__pyx_t_21); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_19); __pyx_t_17 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_31 = __pyx_filename; { __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; } __Pyx_XGIVEREF(__pyx_t_21); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_ExceptionReset(__pyx_t_21, __pyx_t_20, __pyx_t_19); __Pyx_XGIVEREF(__pyx_t_24); __Pyx_XGIVEREF(__pyx_t_23); __Pyx_XGIVEREF(__pyx_t_22); __Pyx_ErrRestore(__pyx_t_24, __pyx_t_23, __pyx_t_22); __pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_lineno = __pyx_t_17; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_31; goto __pyx_L37_except_error; } __pyx_L51:; } __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L36_exception_handled; } goto __pyx_L37_except_error;
5884: # FailoverRetry = transient flush/sync; SocketError = a
5885: # re-borrow that has not reached a live primary yet.
+5886: if exc.code not in (
__pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_code); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5886, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_13); /* … */ __pyx_t_27 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_27 < 0))) __PYX_ERR(0, 5886, __pyx_L50_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_27) { } else { __pyx_t_2 = __pyx_t_27; goto __pyx_L53_bool_binop_done; } /* … */ __pyx_t_27 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_27 < 0))) __PYX_ERR(0, 5886, __pyx_L50_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = __pyx_t_27; __pyx_L53_bool_binop_done:; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_27 = __pyx_t_2; if (unlikely(__pyx_t_27)) { /* … */ }
+5887: QuestDBErrorCode.FailoverRetry,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5887, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_FailoverRetry); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 5887, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyObject_RichCompare(__pyx_t_13, __pyx_t_16, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5886, __pyx_L50_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+5888: QuestDBErrorCode.SocketError):
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5888, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_SocketError); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 5888, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyObject_RichCompare(__pyx_t_13, __pyx_t_16, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5886, __pyx_L50_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+5889: raise
__Pyx_GIVEREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_7, __pyx_t_5); __pyx_t_3 = 0; __pyx_t_7 = 0; __pyx_t_5 = 0; __PYX_ERR(0, 5889, __pyx_L50_error)
5890: # The native operation may have committed a split prefix, or an
5891: # explicit intermediate sync already committed one. Restarting
5892: # from row 0 would duplicate it.
+5893: if exc.in_doubt or committed_prefix:
__pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_in_doubt); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5893, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5893, __pyx_L50_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (!__pyx_t_2) { } else { __pyx_t_27 = __pyx_t_2; goto __pyx_L56_bool_binop_done; } __pyx_t_27 = __pyx_v_committed_prefix; __pyx_L56_bool_binop_done:; if (unlikely(__pyx_t_27)) { /* … */ }
+5894: raise
__Pyx_GIVEREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_7, __pyx_t_5); __pyx_t_3 = 0; __pyx_t_7 = 0; __pyx_t_5 = 0; __PYX_ERR(0, 5894, __pyx_L50_error)
5895: # A drained one-shot stream has no rows left to replay: retrying
5896: # would report success while writing nothing.
+5897: if nonreplayable_consumed:
if (unlikely(__pyx_v_nonreplayable_consumed)) {
/* … */
}
+5898: raise QuestDBError(
__pyx_t_1 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 5898, __pyx_L50_error)
__Pyx_GOTREF(__pyx_t_16);
+5899: exc.code,
__pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_code); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5899, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_15);
+5900: f'{exc} The input stream was already partially '
__pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_exc, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5900, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_14 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_The_input_stream_was_already_pa); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5900, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5901: f'consumed and cannot be replayed; retry with a '
5902: f'fresh reader.',
+5903: in_doubt=exc.in_doubt) from exc
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_in_doubt); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5903, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_16))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_16); assert(__pyx_t_1); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_16); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_16, __pyx__function); __pyx_t_4 = 0; } #endif { PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_t_15, __pyx_t_14}; __pyx_t_30 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 5898, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_30); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_in_doubt, __pyx_t_6, __pyx_t_30, __pyx_callargs+3, 0) < (0)) __PYX_ERR(0, 5898, __pyx_L50_error) __pyx_t_13 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_16, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_30); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5898, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_13); } __Pyx_Raise(__pyx_t_13, 0, 0, __pyx_v_exc); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __PYX_ERR(0, 5898, __pyx_L50_error)
+5904: remaining = deadline - time.monotonic()
__pyx_t_13 = PyFloat_FromDouble(__pyx_v_deadline); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5904, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_30 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5904, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_monotonic); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5904, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_4 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_14))) { __pyx_t_30 = PyMethod_GET_SELF(__pyx_t_14); assert(__pyx_t_30); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_14); __Pyx_INCREF(__pyx_t_30); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_14, __pyx__function); __pyx_t_4 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_30, NULL}; __pyx_t_16 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_14, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 5904, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_16); } __pyx_t_14 = PyNumber_Subtract(__pyx_t_13, __pyx_t_16); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5904, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_28 = __Pyx_PyFloat_AsDouble(__pyx_t_14); if (unlikely((__pyx_t_28 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 5904, __pyx_L50_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_v_remaining = __pyx_t_28;
+5905: if remaining <= 0.0:
__pyx_t_27 = (__pyx_v_remaining <= 0.0);
if (unlikely(__pyx_t_27)) {
/* … */
}
+5906: raise
__Pyx_GIVEREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_7, __pyx_t_5); __pyx_t_3 = 0; __pyx_t_7 = 0; __pyx_t_5 = 0; __PYX_ERR(0, 5906, __pyx_L50_error)
+5907: budget_ms = <uint64_t>(remaining * 1000.0)
__pyx_v_budget_ms = ((uint64_t)(__pyx_v_remaining * 1000.0));
}
5908:
5909:
+5910: cdef void_int _capsule_consume_stream_with_hint(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__capsule_consume_stream_with_hint(struct qwp_direct_sender *__pyx_v_conn, PyObject *__pyx_v_stream_owner, struct line_sender_table_name __pyx_v_c_table_name, struct line_sender_column_name *__pyx_v_c_ts_column_ptr, int __pyx_v_at_scalar_set, int64_t __pyx_v_at_scalar_nanos, struct ArrowSchema *__pyx_v_c_schema, struct qwp_arrow_override const *__pyx_v_c_overrides, size_t __pyx_v_c_overrides_len, int *__pyx_v_any_flushed, size_t *__pyx_v_deferred_since_sync, int *__pyx_v_committed_prefix, size_t __pyx_v_max_rows_per_batch, int __pyx_v_can_slice) {
PyObject *__pyx_v_hint = 0;
PyObject *__pyx_v_exc = NULL;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
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_8);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_AddTraceback("questdb._client._capsule_consume_stream_with_hint", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_hint);
__Pyx_XDECREF(__pyx_v_exc);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5911: qwp_direct_sender* conn,
5912: object stream_owner,
5913: line_sender_table_name c_table_name,
5914: line_sender_column_name* c_ts_column_ptr,
5915: bint at_scalar_set,
5916: int64_t at_scalar_nanos,
5917: ArrowSchema* c_schema,
5918: const qwp_arrow_override* c_overrides,
5919: size_t c_overrides_len,
5920: bint* any_flushed,
5921: size_t* deferred_since_sync,
5922: bint* committed_prefix,
5923: size_t max_rows_per_batch,
5924: bint can_slice) except -1:
5925: cdef str hint
+5926: 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_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_L8_try_end:;
}
+5927: _capsule_consume_stream(
__pyx_t_4 = __pyx_f_7questdb_7_client__capsule_consume_stream(__pyx_v_conn, __pyx_v_stream_owner, __pyx_v_c_table_name, __pyx_v_c_ts_column_ptr, __pyx_v_at_scalar_set, __pyx_v_at_scalar_nanos, __pyx_v_c_schema, __pyx_v_c_overrides, __pyx_v_c_overrides_len, __pyx_v_any_flushed, __pyx_v_deferred_since_sync, __pyx_v_committed_prefix); if (unlikely(__pyx_t_4 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 5927, __pyx_L3_error)
5928: conn, stream_owner, c_table_name, c_ts_column_ptr,
5929: at_scalar_set, at_scalar_nanos, c_schema,
5930: c_overrides, c_overrides_len, any_flushed,
5931: deferred_since_sync, committed_prefix)
+5932: except QuestDBError as exc:
__Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5932, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_5, __pyx_t_8); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_ErrRestore(__pyx_t_5, __pyx_t_6, __pyx_t_7); __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; if (__pyx_t_9) { __Pyx_AddTraceback("questdb._client._capsule_consume_stream_with_hint", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(0, 5932, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_v_exc = __pyx_t_6; /*try:*/ { /* … */ /*finally:*/ { __pyx_L14_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_ExceptionSwap(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25); if ( unlikely(__Pyx_GetException(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22) < 0)) __Pyx_ErrFetch(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_21); __Pyx_XGOTREF(__pyx_t_22); __Pyx_XGOTREF(__pyx_t_23); __Pyx_XGOTREF(__pyx_t_24); __Pyx_XGOTREF(__pyx_t_25); __pyx_t_9 = __pyx_lineno; __pyx_t_18 = __pyx_clineno; __pyx_t_19 = __pyx_filename; { __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; } __Pyx_XGIVEREF(__pyx_t_23); __Pyx_XGIVEREF(__pyx_t_24); __Pyx_XGIVEREF(__pyx_t_25); __Pyx_ExceptionReset(__pyx_t_23, __pyx_t_24, __pyx_t_25); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_XGIVEREF(__pyx_t_22); __Pyx_ErrRestore(__pyx_t_20, __pyx_t_21, __pyx_t_22); __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_18; __pyx_filename = __pyx_t_19; goto __pyx_L5_except_error; } } } goto __pyx_L5_except_error;
+5933: if _is_batch_too_large_error(exc):
__pyx_t_10 = __pyx_f_7questdb_7_client__is_batch_too_large_error(__pyx_v_exc); if (unlikely(__pyx_t_10 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 5933, __pyx_L14_error) if (__pyx_t_10) { /* … */ }
+5934: if exc.code == QuestDBErrorCode.BatchTooLarge:
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_code); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5934, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5934, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_BatchTooLarge); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5934, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = PyObject_RichCompare(__pyx_t_8, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5934, __pyx_L14_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 5934, __pyx_L14_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (__pyx_t_10) { /* … */ goto __pyx_L17; }
5935: # The core already split the chunk as far as it can: a single
5936: # row (table schema plus one row's values) still exceeds the
5937: # server's per-batch cap, so a smaller batch cannot help.
5938: hint = (
+5939: 'a single row exceeds the server per-batch cap '
__Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_a_single_row_exceeds_the_server);
__pyx_v_hint = __pyx_mstate_global->__pyx_kp_u_a_single_row_exceeds_the_server;
5940: '(max_buf_size / the server X-QWP-Max-Batch-Size); reduce '
5941: 'the size of individual values or raise the cap. '
5942: '`max_rows_per_batch` does not bound a single row.')
+5943: elif can_slice:
if (__pyx_v_can_slice) {
/* … */
goto __pyx_L17;
}
5944: hint = (
+5945: f'reduce `max_rows_per_batch` (current: '
__pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, 38 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11) + 12, 127); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5945, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_hint = ((PyObject*)__pyx_t_12); __pyx_t_12 = 0;
+5946: f'{max_rows_per_batch}) and retry.')
__pyx_t_11 = __Pyx_PyUnicode_From_size_t(__pyx_v_max_rows_per_batch, 0, ' ', 'd'); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5946, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_reduce_max_rows_per_batch_curren; __pyx_t_13[1] = __pyx_t_11; __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u_and_retry;
5947: else:
5948: hint = (
+5949: f'this is a streaming Arrow source (e.g. '
/*else*/ {
/* … */
__pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, 131 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_12) + 124, 127);
if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5949, __pyx_L14_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_v_hint = ((PyObject*)__pyx_t_11);
__pyx_t_11 = 0;
}
__pyx_L17:;
5950: f'pa.RecordBatchReader); batch size is set by the '
5951: f'producer and `max_rows_per_batch` (current: '
+5952: f'{max_rows_per_batch}) does not bound it. '
__pyx_t_12 = __Pyx_PyUnicode_From_size_t(__pyx_v_max_rows_per_batch, 0, ' ', 'd'); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5952, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_this_is_a_streaming_Arrow_source; __pyx_t_13[1] = __pyx_t_12; __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u_does_not_bound_it_Materialise_t;
5953: f'Materialise to a `pa.Table` '
5954: f'(`pa.Table.from_batches(reader)`) or re-batch '
5955: f'at the source before passing.')
+5956: raise QuestDBError(
__pyx_t_12 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5956, __pyx_L14_error)
__Pyx_GOTREF(__pyx_t_8);
+5957: exc.code, f'{exc}\nHint: {hint}') from exc
__pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_code); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5957, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_15 = __Pyx_PyObject_FormatSimple(__pyx_v_exc, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 5957, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_13[0] = __pyx_t_15; __pyx_t_13[1] = __pyx_mstate_global->__pyx_kp_u_Hint; __pyx_t_13[2] = __pyx_v_hint; __pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15) + 7 + __Pyx_PyUnicode_GET_LENGTH(__pyx_v_hint), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_15) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_hint)); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 5957, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_17 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_8); assert(__pyx_t_12); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_8, __pyx__function); __pyx_t_17 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_14, __pyx_t_16}; __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_17, (3-__pyx_t_17) | (__pyx_t_17*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5956, __pyx_L14_error) __Pyx_GOTREF(__pyx_t_11); } __Pyx_Raise(__pyx_t_11, 0, 0, __pyx_v_exc); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __PYX_ERR(0, 5956, __pyx_L14_error)
+5958: raise
__Pyx_GIVEREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ErrRestoreWithState(__pyx_t_7, __pyx_t_6, __pyx_t_5); __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __PYX_ERR(0, 5958, __pyx_L14_error) }
5959:
5960:
+5961: cdef bint _is_batch_too_large_error(object exc):
static int __pyx_f_7questdb_7_client__is_batch_too_large_error(PyObject *__pyx_v_exc) {
PyObject *__pyx_v_msg = 0;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("questdb._client._is_batch_too_large_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_msg);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
5962: cdef str msg
+5963: if not isinstance(exc, QuestDBError):
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5963, __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(0, 5963, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (!__pyx_t_2); if (__pyx_t_3) { /* … */ }
+5964: return False
__pyx_r = 0;
goto __pyx_L0;
+5965: if exc.code == QuestDBErrorCode.BatchTooLarge:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BatchTooLarge); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5965, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 5965, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_3) { /* … */ }
+5966: return True
__pyx_r = 1;
goto __pyx_L0;
5967: # Fallback for encoder-level "too large" errors that carry no dedicated
5968: # code (MAX_CHUNK_ROWS row-count overflow, an oversize single value).
+5969: msg = str(exc).lower()
__pyx_t_1 = __Pyx_PyObject_Unicode(__pyx_v_exc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5969, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_lower, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5969, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_v_msg = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
5970: return (
+5971: ('row_count' in msg and ('exceeds' in msg or 'too large' in msg))
__pyx_t_2 = (__Pyx_PyUnicode_ContainsTF(__pyx_mstate_global->__pyx_n_u_row_count, __pyx_v_msg, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5971, __pyx_L1_error) if (!__pyx_t_2) { goto __pyx_L6_next_or; } else { } __pyx_t_2 = (__Pyx_PyUnicode_ContainsTF(__pyx_mstate_global->__pyx_n_u_exceeds, __pyx_v_msg, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5971, __pyx_L1_error) if (!__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L5_bool_binop_done; } __pyx_t_2 = (__Pyx_PyUnicode_ContainsTF(__pyx_mstate_global->__pyx_kp_u_too_large, __pyx_v_msg, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5971, __pyx_L1_error) if (!__pyx_t_2) { } else { __pyx_t_3 = __pyx_t_2; goto __pyx_L5_bool_binop_done; } __pyx_L6_next_or:;
+5972: or 'batch too large' in msg)
__pyx_t_2 = (__Pyx_PyUnicode_ContainsTF(__pyx_mstate_global->__pyx_kp_u_batch_too_large, __pyx_v_msg, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5972, __pyx_L1_error) __pyx_t_3 = __pyx_t_2; __pyx_L5_bool_binop_done:; __pyx_r = __pyx_t_3; goto __pyx_L0;
5973:
5974:
5975: # no_gc_clear keeps tp_clear from nulling fields the native dispatchers
5976: # still target. The callback targets are additionally pinned in
5977: # _LIVE_CALLBACK_REFS until the dispatchers are joined, so the cycle collector
5978: # cannot clear a live handler even when the handle is reached only through it.
+5979: @cython.no_gc_clear
struct __pyx_vtabstruct_7questdb_7_client_QuestDB {
struct questdb_db *(*_begin_db_use)(struct __pyx_obj_7questdb_7_client_QuestDB *, PyObject *);
void (*_end_db_use)(struct __pyx_obj_7questdb_7_client_QuestDB *);
PyObject *(*close)(struct __pyx_obj_7questdb_7_client_QuestDB *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_7questdb_7_client_QuestDB *__pyx_vtabptr_7questdb_7_client_QuestDB;
5980: cdef class QuestDB:
5981: """
5982: Handle to a QuestDB deployment over QWP/WebSocket.
5983:
5984: Owns the connection pool; lends row-building senders via
5985: :meth:`sender`, bulk-loads DataFrames via :meth:`dataframe`, runs
5986: queries via :meth:`query`, and lends reader leases via
5987: :meth:`reader`. Construct with :func:`questdb.connect`.
5988: Instances are safe to share across threads.
5989: """
5990: cdef questdb_db* _db
5991: cdef object _conf_str
5992: cdef object _state_cond
5993: cdef size_t _active_uses
5994: cdef bint _closing
5995: cdef object _connection_listener
5996: cdef object _error_handler
5997: cdef size_t _cb_refs_key
5998: cdef auto_flush_mode_t _auto_flush_mode
5999: cdef bint _auto_flush_bytes_dynamic
6000:
+6001: def __cinit__(self):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_7QuestDB_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7questdb_7_client_7QuestDB_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_7QuestDB___cinit__(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_7QuestDB___cinit__(struct __pyx_obj_7questdb_7_client_QuestDB *__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_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client.QuestDB.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+6002: self._db = NULL
__pyx_v_self->_db = NULL;
+6003: self._conf_str = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_conf_str); __Pyx_DECREF(__pyx_v_self->_conf_str); __pyx_v_self->_conf_str = Py_None;
+6004: self._state_cond = threading.Condition(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(0, 6004, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Condition); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6004, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_threading); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6004, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_RLock); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6004, __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_3 = __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_3)) __PYX_ERR(0, 6004, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_t_8 = 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_8 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3}; __pyx_t_1 = __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_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6004, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_state_cond); __Pyx_DECREF(__pyx_v_self->_state_cond); __pyx_v_self->_state_cond = __pyx_t_1; __pyx_t_1 = 0;
+6005: self._active_uses = 0
__pyx_v_self->_active_uses = 0;
+6006: self._closing = False
__pyx_v_self->_closing = 0;
+6007: self._connection_listener = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_connection_listener); __Pyx_DECREF(__pyx_v_self->_connection_listener); __pyx_v_self->_connection_listener = Py_None;
+6008: self._error_handler = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_error_handler); __Pyx_DECREF(__pyx_v_self->_error_handler); __pyx_v_self->_error_handler = Py_None;
+6009: self._cb_refs_key = 0
__pyx_v_self->_cb_refs_key = 0;
+6010: self._auto_flush_mode.enabled = False
__pyx_v_self->_auto_flush_mode.enabled = 0;
+6011: self._auto_flush_mode.interval = -1
__pyx_v_self->_auto_flush_mode.interval = -1L;
+6012: self._auto_flush_mode.row_count = -1
__pyx_v_self->_auto_flush_mode.row_count = -1L;
+6013: self._auto_flush_mode.byte_count = -1
__pyx_v_self->_auto_flush_mode.byte_count = -1L;
+6014: self._auto_flush_bytes_dynamic = False
__pyx_v_self->_auto_flush_bytes_dynamic = 0;
6015:
+6016: cdef questdb_db* _begin_db_use(self, str method) except? NULL:
static struct questdb_db *__pyx_f_7questdb_7_client_7QuestDB__begin_db_use(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self, PyObject *__pyx_v_method) {
struct questdb_db *__pyx_v_db;
struct questdb_db *__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_AddTraceback("questdb._client.QuestDB._begin_db_use", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+6017: cdef questdb_db* db = NULL
__pyx_v_db = NULL;
+6018: self._state_cond.acquire()
__pyx_t_2 = __pyx_v_self->_state_cond; __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_acquire, __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(0, 6018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+6019: try:
/*try:*/ {
+6020: db = self._db
__pyx_t_4 = __pyx_v_self->_db;
__pyx_v_db = __pyx_t_4;
+6021: if db == NULL:
__pyx_t_5 = (__pyx_v_db == NULL);
if (unlikely(__pyx_t_5)) {
/* … */
}
+6022: raise QuestDBError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6022, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_6);
+6023: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6023, __pyx_L4_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(0, 6023, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+6024: f"{method}() can't be called: QuestDB is closed.")
__pyx_t_7 = __Pyx_PyUnicode_Unicode(__pyx_v_method); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6024, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_can_t_be_called_QuestDB_is_clos); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6024, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_3 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); __pyx_t_3 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_8, __pyx_t_9}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __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; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6022, __pyx_L4_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(0, 6022, __pyx_L4_error)
+6025: self._active_uses += 1
__pyx_v_self->_active_uses = (__pyx_v_self->_active_uses + 1);
+6026: return db
__pyx_r = __pyx_v_db;
goto __pyx_L3_return;
}
6027: finally:
+6028: self._state_cond.release()
/*finally:*/ {
__pyx_L4_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 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_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
if ( unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_17);
__Pyx_XGOTREF(__pyx_t_18);
__pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
{
__pyx_t_6 = __pyx_v_self->_state_cond;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_3 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_release, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6028, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15);
__pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
__pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12;
goto __pyx_L1_error;
__pyx_L8_error:;
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
__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_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
goto __pyx_L1_error;
}
__pyx_L3_return: {
__pyx_t_4 = __pyx_r;
__pyx_t_6 = __pyx_v_self->_state_cond;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_3 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_release, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6028, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_r = __pyx_t_4;
goto __pyx_L0;
}
}
6029:
+6030: cdef void _end_db_use(self) except *:
static void __pyx_f_7questdb_7_client_7QuestDB__end_db_use(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self) {
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.QuestDB._end_db_use", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_L0:;
__Pyx_RefNannyFinishContext();
}
+6031: self._state_cond.acquire()
__pyx_t_2 = __pyx_v_self->_state_cond; __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_acquire, __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(0, 6031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+6032: try:
/*try:*/ {
+6033: if self._active_uses == 0:
__pyx_t_4 = (__pyx_v_self->_active_uses == 0);
if (unlikely(__pyx_t_4)) {
/* … */
}
+6034: raise RuntimeError('QuestDB use counter underflow.')
__pyx_t_2 = NULL;
__pyx_t_3 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_QuestDB_use_counter_underflow};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_RuntimeError)), __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;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6034, __pyx_L4_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(0, 6034, __pyx_L4_error)
+6035: self._active_uses -= 1
__pyx_v_self->_active_uses = (__pyx_v_self->_active_uses - 1);
+6036: if self._active_uses == 0:
__pyx_t_4 = (__pyx_v_self->_active_uses == 0);
if (__pyx_t_4) {
/* … */
}
}
+6037: self._state_cond.notify_all()
__pyx_t_2 = __pyx_v_self->_state_cond;
__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_notify_all, __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(0, 6037, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6038: finally:
+6039: self._state_cond.release()
/*finally:*/ {
/*normal exit:*/{
__pyx_t_2 = __pyx_v_self->_state_cond;
__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_release, __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(0, 6039, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L5;
}
__pyx_L4_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
if ( unlikely(__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
__Pyx_XGOTREF(__pyx_t_8);
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_10);
__Pyx_XGOTREF(__pyx_t_11);
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_13);
__pyx_t_5 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_7 = __pyx_filename;
{
__pyx_t_2 = __pyx_v_self->_state_cond;
__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_release, __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(0, 6039, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_ErrRestore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
__pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
__pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_7;
goto __pyx_L1_error;
__pyx_L9_error:;
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
__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;
__pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
goto __pyx_L1_error;
}
__pyx_L5:;
}
6040:
+6041: @staticmethod
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_3from_conf(CYTHON_UNUSED 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_7QuestDB_2from_conf, "\n Construct a handle from a QWP/WebSocket configuration string.\n\n Prefer the :func:`questdb.connect` module-level factory.\n\n By default the handle connects eagerly: construction pre-opens the\n warm minimums (``sender_pool_min`` sender and ``query_pool_min``\n reader connections, one of each by default), so an unreachable\n server or bad credentials fail here, fast. With\n ``lazy_connect=true`` construction opens no connection: sender\n leases buffer locally and connect in the background, readers\n connect on first use (``query_pool_min`` defaults to 0), and\n errors surface from the first operation instead. Combining\n ``lazy_connect=true`` with a blocking ``initial_connect_retry``\n or a positive ``query_pool_min`` is a configuration conflict.\n\n Pooled row auto-flush is enabled by default at 1,000 rows, 100\n milliseconds, or an estimated encoded size at 90% of the effective\n frame cap. Before a server cap is known, or when the server omits it,\n the byte threshold is the lower of 8 MiB and 90% of the local\n store-and-forward frame cap. Set\n ``auto_flush_bytes=off`` to disable only the byte trigger, or\n ``auto_flush=off`` to disable all automatic publishing.\n The mode is immutable and shared by every lease; the interval starts\n when the first row enters an empty lease buffer. Auto-triggered\n publishes do not wait for server acknowledgement.\n\n The underlying connection pool is opened by\n `questdb_db_connect_with_handlers`.\n Dataframe ingestion always uses the direct (non-store-and-forward)\n QWP/WebSocket column sender, independent of ``sf_dir``. On a transient\n connection failure the frame is re-sent from the caller's DataFrame\n only when the failed operation is provably not delivered. A\n delivery-unknown failure surfaces as :class:`QuestDBErro""r` with\n ``in_doubt`` set, because blindly re-sending could duplicate rows.\n ``request_timeout`` bounds each commit's no-progress ack wait;\n ``request_timeout=0`` disables that deadline, so a stalled but\n connected server can block :meth:`dataframe` indefinitely.\n\n ``connection_listener``, when set, is a callable receiving one\n :class:`ConnectionEvent` per connection-state transition of the\n pool's ingress connections (initial connect, per-endpoint attempt\n failures, failover, terminal auth rejection). It runs on a\n dedicated dispatcher thread fed by a bounded inbox\n (``connection_event_inbox_capacity``; ``0`` selects the default\n of 64) with a drop-oldest overflow policy, so a slow listener\n cannot stall ingest or reconnects. Exceptions it raises are\n logged and swallowed. Dropped/delivered totals are available via\n :attr:`connection_events_dropped` /\n :attr:`connection_events_delivered`. Successful events are queued\n only after negotiated state, including the server frame cap, is\n committed; they do not acknowledge data.\n\n ``error_handler``, when set, is a callable receiving one\n :class:`SenderError` per server rejection recorded by any of the\n pool's store-and-forward connections \342\200\224 including rejections for\n rows published through a :class:`PooledSender` that was already\n closed. It runs on its own dedicated dispatcher thread fed by a\n bounded inbox (``error_event_inbox_capacity``; ``0`` selects the\n default of 64, overflow drops the oldest event). Exceptions it\n raises are logged and swallowed. Without a handler every rejection\n is logged through the ``questdb`` logger instead \342\200\224 ``ERROR`` for\n terminal rejections, ``WARNING`` for retriable ones (the affected\n rows are replayed, not lost) \342\200\224 so rejections are n""ever silent.\n A terminal rejection is queued only after the connection's terminal\n latch and pollable diagnostic have been committed.\n Delivered/dropped totals are available via\n :attr:`error_events_delivered` /\n :attr:`error_events_dropped`. Use the handler for\n dead-lettering, alerting, and metrics; terminal failures also\n surface as :class:`QuestDBError` from the sender calls themselves.\n\n When a handler or listener closes over the returned handle, call\n :meth:`close` explicitly (or use ``with``): until closed, such a\n handle is pinned alive rather than collected, so an abandoned one\n leaks instead of crashing. The pin is dropped at interpreter\n shutdown, so an unclosed self-referential handle can still crash\n during finalization.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_7QuestDB_3from_conf = {"from_conf", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_7QuestDB_3from_conf, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_7QuestDB_2from_conf}; static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_3from_conf(CYTHON_UNUSED 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_conf_str = 0; PyObject *__pyx_v_connection_listener = 0; PyObject *__pyx_v_connection_event_inbox_capacity = 0; PyObject *__pyx_v_error_handler = 0; PyObject *__pyx_v_error_event_inbox_capacity = 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("from_conf (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_conf_str,&__pyx_mstate_global->__pyx_n_u_connection_listener,&__pyx_mstate_global->__pyx_n_u_connection_event_inbox_capacity,&__pyx_mstate_global->__pyx_n_u_error_handler,&__pyx_mstate_global->__pyx_n_u_error_event_inbox_capacity,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(0, 6041, __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(0, 6041, __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, "from_conf", 0) < (0)) __PYX_ERR(0, 6041, __pyx_L3_error) /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7questdb_7_client_7QuestDB_9from_conf_2generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ static PyObject *__pyx_pf_7questdb_7_client_7QuestDB_2from_conf(PyObject *__pyx_v_conf_str, PyObject *__pyx_v_connection_listener, PyObject *__pyx_v_connection_event_inbox_capacity, PyObject *__pyx_v_error_handler, PyObject *__pyx_v_error_event_inbox_capacity) { struct __pyx_obj_7questdb_7_client___pyx_scope_struct_8_from_conf *__pyx_cur_scope; struct line_sender_error *__pyx_v_err; struct line_sender_utf8 __pyx_v_c_conf; enum line_sender_protocol __pyx_v_c_protocol; PyObject *__pyx_v_protocol = 0; PyObject *__pyx_v_params = 0; int __pyx_v_auto_flush_configured; PyObject *__pyx_v_native_conf_str = 0; struct qdb_pystr_buf *__pyx_v_b; struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_db = 0; PyThreadState *__pyx_v_gs; void *__pyx_v_connection_listener_data; questdb_connection_event_cb __pyx_v_connection_event_cb; size_t __pyx_v_c_event_inbox_capacity; size_t __pyx_v_c_error_inbox_capacity; PyObject *__pyx_gb_7questdb_7_client_7QuestDB_9from_conf_2generator5 = 0; PyObject *__pyx_r = NULL; __pyx_cur_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct_8_from_conf *)__pyx_tp_new_7questdb_7_client___pyx_scope_struct_8_from_conf(__pyx_mstate_global->__pyx_ptype_7questdb_7_client___pyx_scope_struct_8_from_conf, __pyx_mstate_global->__pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7questdb_7_client___pyx_scope_struct_8_from_conf *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 6041, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __Pyx_INCREF(__pyx_v_error_handler); /* … */ /* 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_8); __Pyx_AddTraceback("questdb._client.QuestDB.from_conf", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_protocol); __Pyx_XDECREF(__pyx_v_params); __Pyx_XDECREF(__pyx_v_native_conf_str); __Pyx_XDECREF((PyObject *)__pyx_v_db); __Pyx_XDECREF(__pyx_gb_7questdb_7_client_7QuestDB_9from_conf_2generator5); __Pyx_XDECREF(__pyx_v_error_handler); __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 6041, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_7QuestDB_3from_conf, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_QuestDB_from_conf, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[82])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 6041, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_17, __pyx_t_18); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_QuestDB, __pyx_mstate_global->__pyx_n_u_from_conf, __pyx_t_17) < (0)) __PYX_ERR(0, 6041, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_18 = NULL; __Pyx_GetNameInClass(__pyx_t_13, (PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_QuestDB, __pyx_mstate_global->__pyx_n_u_from_conf); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6041, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_18, __pyx_t_13}; __pyx_t_17 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 6041, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); } if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_QuestDB, __pyx_mstate_global->__pyx_n_u_from_conf, __pyx_t_17) < (0)) __PYX_ERR(0, 6041, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; /* … */ struct __pyx_obj_7questdb_7_client___pyx_scope_struct_8_from_conf { PyObject_HEAD PyObject *__pyx_v_auto_flush_keys; };
6042: def from_conf(
6043: str conf_str,
6044: *,
+6045: connection_listener=None,
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0)); /* … */ if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_connection_listener, Py_None) < (0)) __PYX_ERR(0, 6041, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_connection_event_inbox_capacity, __pyx_mstate_global->__pyx_int_0) < (0)) __PYX_ERR(0, 6041, __pyx_L1_error)
6046: connection_event_inbox_capacity=0,
+6047: error_handler=None,
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("from_conf", 1, 1, 1, i); __PYX_ERR(0, 6041, __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(0, 6041, __pyx_L3_error) /* … */ if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0)); } __pyx_v_conf_str = ((PyObject*)values[0]); __pyx_v_connection_listener = values[1]; __pyx_v_connection_event_inbox_capacity = values[2]; __pyx_v_error_handler = values[3]; __pyx_v_error_event_inbox_capacity = values[4]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("from_conf", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 6041, __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.QuestDB.from_conf", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_conf_str), (&PyUnicode_Type), 1, "conf_str", 1))) __PYX_ERR(0, 6043, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_7QuestDB_2from_conf(__pyx_v_conf_str, __pyx_v_connection_listener, __pyx_v_connection_event_inbox_capacity, __pyx_v_error_handler, __pyx_v_error_event_inbox_capacity); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_error_handler, Py_None) < (0)) __PYX_ERR(0, 6041, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_error_event_inbox_capacity, __pyx_mstate_global->__pyx_int_0) < (0)) __PYX_ERR(0, 6041, __pyx_L1_error)
6048: error_event_inbox_capacity=0):
6049: """
6050: Construct a handle from a QWP/WebSocket configuration string.
6051:
6052: Prefer the :func:`questdb.connect` module-level factory.
6053:
6054: By default the handle connects eagerly: construction pre-opens the
6055: warm minimums (``sender_pool_min`` sender and ``query_pool_min``
6056: reader connections, one of each by default), so an unreachable
6057: server or bad credentials fail here, fast. With
6058: ``lazy_connect=true`` construction opens no connection: sender
6059: leases buffer locally and connect in the background, readers
6060: connect on first use (``query_pool_min`` defaults to 0), and
6061: errors surface from the first operation instead. Combining
6062: ``lazy_connect=true`` with a blocking ``initial_connect_retry``
6063: or a positive ``query_pool_min`` is a configuration conflict.
6064:
6065: Pooled row auto-flush is enabled by default at 1,000 rows, 100
6066: milliseconds, or an estimated encoded size at 90% of the effective
6067: frame cap. Before a server cap is known, or when the server omits it,
6068: the byte threshold is the lower of 8 MiB and 90% of the local
6069: store-and-forward frame cap. Set
6070: ``auto_flush_bytes=off`` to disable only the byte trigger, or
6071: ``auto_flush=off`` to disable all automatic publishing.
6072: The mode is immutable and shared by every lease; the interval starts
6073: when the first row enters an empty lease buffer. Auto-triggered
6074: publishes do not wait for server acknowledgement.
6075:
6076: The underlying connection pool is opened by
6077: `questdb_db_connect_with_handlers`.
6078: Dataframe ingestion always uses the direct (non-store-and-forward)
6079: QWP/WebSocket column sender, independent of ``sf_dir``. On a transient
6080: connection failure the frame is re-sent from the caller's DataFrame
6081: only when the failed operation is provably not delivered. A
6082: delivery-unknown failure surfaces as :class:`QuestDBError` with
6083: ``in_doubt`` set, because blindly re-sending could duplicate rows.
6084: ``request_timeout`` bounds each commit's no-progress ack wait;
6085: ``request_timeout=0`` disables that deadline, so a stalled but
6086: connected server can block :meth:`dataframe` indefinitely.
6087:
6088: ``connection_listener``, when set, is a callable receiving one
6089: :class:`ConnectionEvent` per connection-state transition of the
6090: pool's ingress connections (initial connect, per-endpoint attempt
6091: failures, failover, terminal auth rejection). It runs on a
6092: dedicated dispatcher thread fed by a bounded inbox
6093: (``connection_event_inbox_capacity``; ``0`` selects the default
6094: of 64) with a drop-oldest overflow policy, so a slow listener
6095: cannot stall ingest or reconnects. Exceptions it raises are
6096: logged and swallowed. Dropped/delivered totals are available via
6097: :attr:`connection_events_dropped` /
6098: :attr:`connection_events_delivered`. Successful events are queued
6099: only after negotiated state, including the server frame cap, is
6100: committed; they do not acknowledge data.
6101:
6102: ``error_handler``, when set, is a callable receiving one
6103: :class:`SenderError` per server rejection recorded by any of the
6104: pool's store-and-forward connections — including rejections for
6105: rows published through a :class:`PooledSender` that was already
6106: closed. It runs on its own dedicated dispatcher thread fed by a
6107: bounded inbox (``error_event_inbox_capacity``; ``0`` selects the
6108: default of 64, overflow drops the oldest event). Exceptions it
6109: raises are logged and swallowed. Without a handler every rejection
6110: is logged through the ``questdb`` logger instead — ``ERROR`` for
6111: terminal rejections, ``WARNING`` for retriable ones (the affected
6112: rows are replayed, not lost) — so rejections are never silent.
6113: A terminal rejection is queued only after the connection's terminal
6114: latch and pollable diagnostic have been committed.
6115: Delivered/dropped totals are available via
6116: :attr:`error_events_delivered` /
6117: :attr:`error_events_dropped`. Use the handler for
6118: dead-lettering, alerting, and metrics; terminal failures also
6119: surface as :class:`QuestDBError` from the sender calls themselves.
6120:
6121: When a handler or listener closes over the returned handle, call
6122: :meth:`close` explicitly (or use ``with``): until closed, such a
6123: handle is pinned alive rather than collected, so an abandoned one
6124: leaks instead of crashing. The pin is dropped at interpreter
6125: shutdown, so an unclosed self-referential handle can still crash
6126: during finalization.
6127: """
+6128: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
6129: cdef line_sender_utf8 c_conf
6130: cdef line_sender_protocol c_protocol
6131: cdef object protocol
6132: cdef dict params
+6133: cdef set auto_flush_keys = {
__pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6134, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_auto_flush) < (0)) __PYX_ERR(0, 6134, __pyx_L1_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_auto_flush_rows) < (0)) __PYX_ERR(0, 6134, __pyx_L1_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_auto_flush_bytes) < (0)) __PYX_ERR(0, 6134, __pyx_L1_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_auto_flush_interval) < (0)) __PYX_ERR(0, 6134, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_auto_flush_keys = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
6134: 'auto_flush',
6135: 'auto_flush_rows',
6136: 'auto_flush_bytes',
6137: 'auto_flush_interval',
6138: }
6139: cdef bint auto_flush_configured
6140: cdef str native_conf_str
+6141: cdef qdb_pystr_buf* b = qdb_pystr_buf_new()
__pyx_v_b = qdb_pystr_buf_new();
+6142: cdef QuestDB db = QuestDB.__new__(QuestDB)
__pyx_t_1 = ((PyObject *)__pyx_tp_new_7questdb_7_client_QuestDB(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_QuestDB), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6142, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); __pyx_v_db = ((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_t_1); __pyx_t_1 = 0;
+6143: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+6144: cdef void* connection_listener_data = NULL
__pyx_v_connection_listener_data = NULL;
+6145: cdef questdb_connection_event_cb connection_event_cb = NULL
__pyx_v_connection_event_cb = NULL;
6146: cdef size_t c_event_inbox_capacity
6147: cdef size_t c_error_inbox_capacity
+6148: try:
/*try:*/ {
+6149: protocol, params = parse_conf_str(b, conf_str)
__pyx_t_1 = __pyx_f_7questdb_7_client_parse_conf_str(__pyx_v_b, __pyx_v_conf_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6149, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 6149, __pyx_L4_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_3); } else { __pyx_t_2 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6149, __pyx_L4_error) __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6149, __pyx_L4_error) __Pyx_XGOTREF(__pyx_t_3); } #else __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6149, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6149, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6149, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < (0)) __PYX_ERR(0, 6149, __pyx_L4_error) __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L7_unpacking_done; __pyx_L6_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 6149, __pyx_L4_error) __pyx_L7_unpacking_done:; } if (!(likely(PyDict_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_3))) __PYX_ERR(0, 6149, __pyx_L4_error) __pyx_v_protocol = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_params = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+6150: if protocol not in (Protocol.Ws, Protocol.Wss):
__Pyx_INCREF(__pyx_v_protocol); __pyx_t_1 = __pyx_v_protocol; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Protocol); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6150, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Ws); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6150, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6150, __pyx_L4_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 6150, __pyx_L4_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_7) { } else { __pyx_t_6 = __pyx_t_7; goto __pyx_L9_bool_binop_done; } __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Protocol); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6150, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Wss); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6150, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6150, __pyx_L4_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 6150, __pyx_L4_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = __pyx_t_7; __pyx_L9_bool_binop_done:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = __pyx_t_6; if (unlikely(__pyx_t_7)) { /* … */ }
+6151: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6151, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
+6152: QuestDBErrorCode.ConfigError,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6152, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6152, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_2, __pyx__function); __pyx_t_9 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_8, __pyx_mstate_global->__pyx_kp_u_questdb_connect_requires_a_QWP_W}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6151, __pyx_L4_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(0, 6151, __pyx_L4_error)
6153: 'questdb.connect() requires a QWP/WebSocket '
6154: 'configuration string: ws:: or wss::.')
+6155: if params.get('addr') is None:
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 6155, __pyx_L4_error)
}
__pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_addr, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6155, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_7 = (__pyx_t_1 == Py_None);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(__pyx_t_7)) {
/* … */
}
+6156: raise QuestDBError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6156, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_8);
+6157: QuestDBErrorCode.ConfigError,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6157, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6157, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 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[3] = {__pyx_t_2, __pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Missing_addr_parameter_in_config}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__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_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6156, __pyx_L4_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(0, 6156, __pyx_L4_error)
6158: 'Missing "addr" parameter in config string')
6159:
6160: # The pooled native core does not implement row-buffer
6161: # auto-flushing: it rejects the threshold keys and accepts only
6162: # auto_flush=off. Keep this Python-owned handle configuration out
6163: # of the native connect string. Pooled QWP uses its own defaults,
6164: # while validation stays shared with the standalone Sender.
+6165: c_protocol = protocol.c_value
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_protocol, __pyx_mstate_global->__pyx_n_u_c_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6165, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = ((enum line_sender_protocol)__Pyx_PyLong_As_enum__line_sender_protocol(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6165, __pyx_L4_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_c_protocol = __pyx_t_10;
+6166: auto_flush_configured = not auto_flush_keys.isdisjoint(params)
__pyx_t_1 = __Pyx_CallUnboundCMethod1(&__pyx_mstate_global->__pyx_umethod_PySet_Type__isdisjoint, __pyx_cur_scope->__pyx_v_auto_flush_keys, __pyx_v_params); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6166, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 6166, __pyx_L4_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_auto_flush_configured = (!__pyx_t_7);
+6167: _parse_pooled_auto_flush(
__pyx_t_11 = __pyx_f_7questdb_7_client__parse_pooled_auto_flush(__pyx_v_c_protocol, __pyx_t_1, __pyx_t_8, __pyx_t_4, __pyx_t_2, (&__pyx_v_db->_auto_flush_mode), (&__pyx_v_db->_auto_flush_bytes_dynamic)); if (unlikely(__pyx_t_11 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 6167, __pyx_L4_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6168: c_protocol,
+6169: params.get('auto_flush'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 6169, __pyx_L4_error)
}
__pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_auto_flush, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6169, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
+6170: params.get('auto_flush_rows'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 6170, __pyx_L4_error)
}
__pyx_t_8 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_auto_flush_rows, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6170, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_8);
+6171: params.get('auto_flush_bytes'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 6171, __pyx_L4_error)
}
__pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_auto_flush_bytes, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6171, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_4);
+6172: params.get('auto_flush_interval'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 6172, __pyx_L4_error)
}
__pyx_t_2 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_auto_flush_interval, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6172, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
6173: &db._auto_flush_mode,
6174: &db._auto_flush_bytes_dynamic)
+6175: if auto_flush_configured:
if (__pyx_v_auto_flush_configured) {
/* … */
goto __pyx_L12;
}
+6176: native_conf_str = protocol.tag + '::' + ''.join(
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_protocol, __pyx_mstate_global->__pyx_n_u_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6176, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_mstate_global->__pyx_kp_u__27); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6176, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* … */ __pyx_t_8 = __Pyx_Generator_GetInlinedResult(__pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6176, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__7, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6176, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyNumber_Add(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6176, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(PyUnicode_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_8))) __PYX_ERR(0, 6176, __pyx_L4_error) __pyx_v_native_conf_str = ((PyObject*)__pyx_t_8); __pyx_t_8 = 0;
+6177: f'{key}={conf_str_value(value)};'
static PyObject *__pyx_pf_7questdb_7_client_7QuestDB_9from_conf_genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_9_genexpr *__pyx_cur_scope;
PyObject *__pyx_r = NULL;
__pyx_cur_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct_9_genexpr *)__pyx_tp_new_7questdb_7_client___pyx_scope_struct_9_genexpr(__pyx_mstate_global->__pyx_ptype_7questdb_7_client___pyx_scope_struct_9_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_7questdb_7_client___pyx_scope_struct_9_genexpr *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 6177, __pyx_L1_error)
} else {
__Pyx_GOTREF((PyObject *)__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct_8_from_conf *) __pyx_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
__pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
__Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
{
__pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7questdb_7_client_7QuestDB_9from_conf_2generator5, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[5]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_from_conf_locals_genexpr, __pyx_mstate_global->__pyx_n_u_questdb__client); if (unlikely(!gen)) __PYX_ERR(0, 6177, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
}
/* function exit code */
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client.QuestDB.from_conf.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__Pyx_DECREF((PyObject *)__pyx_cur_scope);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_gb_7questdb_7_client_7QuestDB_9from_conf_2generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("genexpr", 0);
__pyx_L3_first_run:;
if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 6177, __pyx_L1_error)
__pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(0, 6177, __pyx_L1_error)
__Pyx_GOTREF(__pyx_r);
/* … */
__pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_key, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6177, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_5 = __pyx_f_7questdb_7_client_conf_str_value(__pyx_cur_scope->__pyx_v_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6177, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_9 = __Pyx_PyUnicode_Unicode(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6177, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_10[0] = __pyx_t_6;
__pyx_t_10[1] = __pyx_mstate_global->__pyx_kp_u__26;
__pyx_t_10[2] = __pyx_t_9;
__pyx_t_10[3] = __pyx_mstate_global->__pyx_kp_u__23;
__pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_10, 4, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9));
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6177, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 6177, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_r); __pyx_r = 0;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_9);
if (__Pyx_PyErr_Occurred()) {
__Pyx_Generator_Replace_StopIteration(0);
__Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
#if !CYTHON_USE_EXC_INFO_STACK
__Pyx_Coroutine_ResetAndClearException(__pyx_generator);
#endif
__pyx_generator->resume_label = -1;
__Pyx_Coroutine_clear((PyObject*)__pyx_generator);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_2 = __pyx_pf_7questdb_7_client_7QuestDB_9from_conf_genexpr(((PyObject*)__pyx_cur_scope), __pyx_v_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6177, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
/* … */
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_9_genexpr {
PyObject_HEAD
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_8_from_conf *__pyx_outer_scope;
PyObject *__pyx_genexpr_arg_0;
PyObject *__pyx_v_key;
PyObject *__pyx_v_value;
};
+6178: for key, value in params.items()
__pyx_t_2 = 0;
if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 6178, __pyx_L1_error) }
if (unlikely(__pyx_cur_scope->__pyx_genexpr_arg_0 == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
__PYX_ERR(0, 6178, __pyx_L1_error)
}
__pyx_t_5 = __Pyx_dict_iterator(__pyx_cur_scope->__pyx_genexpr_arg_0, 1, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6178, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_1);
__pyx_t_1 = __pyx_t_5;
__pyx_t_5 = 0;
while (1) {
__pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4);
if (unlikely(__pyx_t_7 == 0)) break;
if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 6178, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_key);
__Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_key, __pyx_t_5);
__Pyx_GIVEREF(__pyx_t_5);
__pyx_t_5 = 0;
__Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_value);
__Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_value, __pyx_t_6);
__Pyx_GIVEREF(__pyx_t_6);
__pyx_t_6 = 0;
+6179: if key not in auto_flush_keys)
if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_auto_flush_keys)) { __Pyx_RaiseClosureNameError("auto_flush_keys"); __PYX_ERR(0, 6179, __pyx_L1_error) }
if (unlikely(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_auto_flush_keys == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
__PYX_ERR(0, 6179, __pyx_L1_error)
}
__pyx_t_8 = (__Pyx_PySet_ContainsTF(__pyx_cur_scope->__pyx_v_key, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_auto_flush_keys, Py_NE)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 6179, __pyx_L1_error)
if (__pyx_t_8) {
/* … */
}
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
6180: else:
6181: # Preserve the native configuration path byte for byte when
6182: # there are no Python-owned auto-flush settings to remove.
+6183: native_conf_str = conf_str
/*else*/ {
__Pyx_INCREF(__pyx_v_conf_str);
__pyx_v_native_conf_str = __pyx_v_conf_str;
}
__pyx_L12:;
6184:
+6185: if connection_listener is not None and not callable(
__pyx_t_6 = (__pyx_v_connection_listener != Py_None);
if (__pyx_t_6) {
} else {
__pyx_t_7 = __pyx_t_6;
goto __pyx_L14_bool_binop_done;
}
/* … */
__pyx_t_6 = __Pyx_PyCallable_Check(__pyx_v_connection_listener); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 6185, __pyx_L4_error)
/* … */
__pyx_t_12 = (!__pyx_t_6);
__pyx_t_7 = __pyx_t_12;
__pyx_L14_bool_binop_done:;
if (unlikely(__pyx_t_7)) {
/* … */
}
6186: connection_listener):
+6187: raise TypeError(
__pyx_t_2 = NULL;
+6188: '"connection_listener" must be callable or None, '
__pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_connection_listener_must_be_cal, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6188, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4}; __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__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_8)) __PYX_ERR(0, 6187, __pyx_L4_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(0, 6187, __pyx_L4_error)
+6189: f'not {_fqn(type(connection_listener))}')
__pyx_t_4 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_connection_listener)))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6189, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6189, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+6190: if error_handler is not None and not callable(
__pyx_t_12 = (__pyx_v_error_handler != Py_None);
if (__pyx_t_12) {
} else {
__pyx_t_7 = __pyx_t_12;
goto __pyx_L17_bool_binop_done;
}
/* … */
__pyx_t_12 = __Pyx_PyCallable_Check(__pyx_v_error_handler); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 6190, __pyx_L4_error)
/* … */
__pyx_t_6 = (!__pyx_t_12);
__pyx_t_7 = __pyx_t_6;
__pyx_L17_bool_binop_done:;
if (unlikely(__pyx_t_7)) {
/* … */
}
6191: error_handler):
+6192: raise TypeError(
__pyx_t_4 = NULL;
+6193: '"error_handler" must be callable or None, '
__pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_error_handler_must_be_callable, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6193, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_2}; __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6192, __pyx_L4_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(0, 6192, __pyx_L4_error)
+6194: f'not {_fqn(type(error_handler))}')
__pyx_t_2 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_error_handler)))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6194, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6194, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+6195: str_to_utf8(b, <PyObject*>native_conf_str, &c_conf)
__pyx_t_11 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, ((PyObject *)__pyx_v_native_conf_str), (&__pyx_v_c_conf)); if (unlikely(__pyx_t_11 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 6195, __pyx_L4_error)
+6196: if connection_listener is not None:
__pyx_t_7 = (__pyx_v_connection_listener != Py_None);
if (__pyx_t_7) {
/* … */
}
6197: # Register as part of pool construction so recovery senders
6198: # pre-opened by connect cannot emit events before the listener
6199: # exists. The handle keeps the callback target alive until
6200: # close() has stopped and joined the dispatcher.
+6201: db._connection_listener = connection_listener
__Pyx_INCREF(__pyx_v_connection_listener); __Pyx_GIVEREF(__pyx_v_connection_listener); __Pyx_GOTREF(__pyx_v_db->_connection_listener); __Pyx_DECREF(__pyx_v_db->_connection_listener); __pyx_v_db->_connection_listener = __pyx_v_connection_listener;
+6202: connection_listener_data = <void*>db._connection_listener
__pyx_v_connection_listener_data = ((void *)__pyx_v_db->_connection_listener);
+6203: connection_event_cb = _connection_event_trampoline
__pyx_v_connection_event_cb = __pyx_f_7questdb_7_client__connection_event_trampoline;
6204: # A rejection handler is always installed (defaulting to the
6205: # `questdb` logger) because the native default logs through the
6206: # Rust `log` facade, which is not bridged into Python logging.
+6207: if error_handler is None:
__pyx_t_7 = (__pyx_v_error_handler == Py_None);
if (__pyx_t_7) {
/* … */
}
+6208: error_handler = _default_error_handler
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_default_error_handler); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6208, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF_SET(__pyx_v_error_handler, __pyx_t_8); __pyx_t_8 = 0;
+6209: db._error_handler = error_handler
__Pyx_INCREF(__pyx_v_error_handler); __Pyx_GIVEREF(__pyx_v_error_handler); __Pyx_GOTREF(__pyx_v_db->_error_handler); __Pyx_DECREF(__pyx_v_db->_error_handler); __pyx_v_db->_error_handler = __pyx_v_error_handler;
6210: # Convert to C integers while still holding the GIL: a bad
6211: # value must raise here, not inside the nogil region below.
+6212: c_event_inbox_capacity = connection_event_inbox_capacity
__pyx_t_9 = __Pyx_PyLong_As_size_t(__pyx_v_connection_event_inbox_capacity); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 6212, __pyx_L4_error) __pyx_v_c_event_inbox_capacity = __pyx_t_9;
+6213: c_error_inbox_capacity = error_event_inbox_capacity
__pyx_t_9 = __Pyx_PyLong_As_size_t(__pyx_v_error_event_inbox_capacity); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 6213, __pyx_L4_error) __pyx_v_c_error_inbox_capacity = __pyx_t_9;
+6214: _ensure_doesnt_have_gil(&gs)
__pyx_t_7 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_7 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6214, __pyx_L4_error)
+6215: db._db = questdb_db_connect_with_handlers(
__pyx_v_db->_db = questdb_db_connect_with_handlers(__pyx_v_c_conf.buf, __pyx_v_c_conf.len, __pyx_v_connection_event_cb, __pyx_v_connection_listener_data, __pyx_v_c_event_inbox_capacity, __pyx_f_7questdb_7_client__sender_error_trampoline, ((void *)__pyx_v_db->_error_handler), __pyx_v_c_error_inbox_capacity, (&__pyx_v_err));
6216: c_conf.buf,
6217: c_conf.len,
6218: connection_event_cb,
6219: connection_listener_data,
6220: c_event_inbox_capacity,
6221: _sender_error_trampoline,
6222: <void*>db._error_handler,
6223: c_error_inbox_capacity,
6224: &err)
+6225: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6225, __pyx_L4_error)
+6226: if db._db == NULL:
__pyx_t_7 = (__pyx_v_db->_db == NULL);
if (unlikely(__pyx_t_7)) {
/* … */
}
6227: # A failed handler-aware connect fences its dispatchers before
6228: # returning, so the callback targets are now safe to release.
+6229: db._connection_listener = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_db->_connection_listener); __Pyx_DECREF(__pyx_v_db->_connection_listener); __pyx_v_db->_connection_listener = Py_None;
+6230: db._error_handler = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_db->_error_handler); __Pyx_DECREF(__pyx_v_db->_error_handler); __pyx_v_db->_error_handler = Py_None;
+6231: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6231, __pyx_L4_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(0, 6231, __pyx_L4_error)
+6232: db._conf_str = conf_str
__Pyx_INCREF(__pyx_v_conf_str); __Pyx_GIVEREF(__pyx_v_conf_str); __Pyx_GOTREF(__pyx_v_db->_conf_str); __Pyx_DECREF(__pyx_v_db->_conf_str); __pyx_v_db->_conf_str = __pyx_v_conf_str;
+6233: db._cb_refs_key = _retain_callback_refs(
__pyx_t_9 = __pyx_f_7questdb_7_client__retain_callback_refs(((PyObject *)__pyx_v_db), __pyx_t_8, __pyx_t_2); if (unlikely(__pyx_t_9 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 6233, __pyx_L4_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_db->_cb_refs_key = __pyx_t_9;
+6234: db, db._error_handler, db._connection_listener)
__pyx_t_8 = __pyx_v_db->_error_handler;
__Pyx_INCREF(__pyx_t_8);
__pyx_t_2 = __pyx_v_db->_connection_listener;
__Pyx_INCREF(__pyx_t_2);
+6235: return db
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_db); __pyx_r = ((PyObject *)__pyx_v_db); goto __pyx_L3_return; }
6236: finally:
+6237: _ensure_has_gil(&gs)
/*finally:*/ {
__pyx_L4_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
__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;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
if ( unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
__Pyx_XGOTREF(__pyx_t_16);
__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_t_13 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
{
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6237, __pyx_L23_error)
/* … */
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6237, __pyx_L1_error)
+6238: qdb_pystr_buf_free(b)
qdb_pystr_buf_free(__pyx_v_b);
}
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_XGIVEREF(__pyx_t_21);
__Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
__pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
__pyx_lineno = __pyx_t_13; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
goto __pyx_L1_error;
__pyx_L23_error:;
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_XGIVEREF(__pyx_t_21);
__Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
__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_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
goto __pyx_L1_error;
}
__pyx_L3_return: {
__pyx_t_21 = __pyx_r;
__pyx_r = 0;
/* … */
qdb_pystr_buf_free(__pyx_v_b);
__pyx_r = __pyx_t_21;
__pyx_t_21 = 0;
goto __pyx_L0;
}
}
6239:
+6240: def __enter__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_5__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_7QuestDB_5__enter__ = {"__enter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_7QuestDB_5__enter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_5__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_7QuestDB_4__enter__(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_7QuestDB_4__enter__(struct __pyx_obj_7questdb_7_client_QuestDB *__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_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client.QuestDB.__enter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_7QuestDB_5__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_QuestDB___enter, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[83])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 6240, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17);
#endif
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_QuestDB, __pyx_mstate_global->__pyx_n_u_enter, __pyx_t_17) < (0)) __PYX_ERR(0, 6240, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+6241: self._state_cond.acquire()
__pyx_t_2 = __pyx_v_self->_state_cond; __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_acquire, __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(0, 6241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+6242: try:
/*try:*/ {
+6243: if self._db == NULL:
__pyx_t_4 = (__pyx_v_self->_db == NULL);
if (unlikely(__pyx_t_4)) {
/* … */
}
}
+6244: raise QuestDBError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6244, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_5);
+6245: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6245, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6245, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_3 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); __pyx_t_3 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_7, __pyx_mstate_global->__pyx_kp_u_enter___can_t_be_called_QuestD}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6244, __pyx_L4_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(0, 6244, __pyx_L4_error)
6246: '__enter__() can\'t be called: QuestDB is closed.')
6247: finally:
+6248: self._state_cond.release()
/*finally:*/ {
/*normal exit:*/{
__pyx_t_5 = __pyx_v_self->_state_cond;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_3 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_release, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6248, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L5;
}
__pyx_L4_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 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_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
if ( unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_11);
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_16);
__pyx_t_8 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_10 = __pyx_filename;
{
__pyx_t_5 = __pyx_v_self->_state_cond;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_3 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_release, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6248, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
__pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
__pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_10;
goto __pyx_L1_error;
__pyx_L8_error:;
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
__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_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
goto __pyx_L1_error;
}
__pyx_L5:;
}
+6249: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
6250:
+6251: def sender(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_7sender(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_7QuestDB_6sender, "\n Borrow a context-managed row-building sender from the pool.\n\n The lease participates in the handle's active-use count until it is\n closed. :meth:`QuestDB.close` therefore waits for outstanding leases.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_7QuestDB_7sender = {"sender", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_7QuestDB_7sender, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_7QuestDB_6sender}; static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_7sender(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("sender (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("sender", 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("sender", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_7QuestDB_6sender(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_7QuestDB_6sender(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self) { struct questdb_db *__pyx_v_db; struct qwp_sender *__pyx_v_sender; struct line_sender_error *__pyx_v_err; struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_buffer = 0; struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_lease = 0; PyThreadState *__pyx_v_gs; int __pyx_v_db_use; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("questdb._client.QuestDB.sender", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_buffer); __Pyx_XDECREF((PyObject *)__pyx_v_lease); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_7QuestDB_7sender, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_QuestDB_sender, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[84])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 6251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_QuestDB, __pyx_mstate_global->__pyx_n_u_sender, __pyx_t_17) < (0)) __PYX_ERR(0, 6251, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
6252: """
6253: Borrow a context-managed row-building sender from the pool.
6254:
6255: The lease participates in the handle's active-use count until it is
6256: closed. :meth:`QuestDB.close` therefore waits for outstanding leases.
6257: """
+6258: cdef questdb_db* db = NULL
__pyx_v_db = NULL;
+6259: cdef qwp_sender* sender = NULL
__pyx_v_sender = NULL;
+6260: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+6261: cdef Buffer buffer = None
__Pyx_INCREF(Py_None);
__pyx_v_buffer = ((struct __pyx_obj_7questdb_7_client_Buffer *)Py_None);
+6262: cdef PooledSender lease = None
__Pyx_INCREF(Py_None);
__pyx_v_lease = ((struct __pyx_obj_7questdb_7_client_PooledSender *)Py_None);
+6263: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+6264: cdef bint db_use = False
__pyx_v_db_use = 0;
+6265: db = self._begin_db_use('sender')
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_begin_db_use(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_sender); if (unlikely(__pyx_t_1 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 6265, __pyx_L1_error) __pyx_v_db = __pyx_t_1;
+6266: db_use = True
__pyx_v_db_use = 1;
+6267: try:
/*try:*/ {
+6268: _ensure_doesnt_have_gil(&gs)
__pyx_t_2 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6268, __pyx_L4_error)
+6269: sender = questdb_db_borrow_sender(db, &err)
__pyx_v_sender = questdb_db_borrow_sender(__pyx_v_db, (&__pyx_v_err));
+6270: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6270, __pyx_L4_error)
+6271: if sender == NULL:
__pyx_t_2 = (__pyx_v_sender == NULL);
if (unlikely(__pyx_t_2)) {
/* … */
}
+6272: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6272, __pyx_L4_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(0, 6272, __pyx_L4_error)
6273:
+6274: buffer = Buffer.__new__(Buffer)
__pyx_t_3 = ((PyObject *)__pyx_tp_new_7questdb_7_client_Buffer(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Buffer), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6274, __pyx_L4_error) __Pyx_GOTREF((PyObject *)__pyx_t_3); __Pyx_DECREF_SET(__pyx_v_buffer, ((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_t_3)); __pyx_t_3 = 0;
+6275: buffer._impl = questdb_db_new_buffer(db, &err)
__pyx_v_buffer->_impl = questdb_db_new_buffer(__pyx_v_db, (&__pyx_v_err));
+6276: if buffer._impl == NULL:
__pyx_t_2 = (__pyx_v_buffer->_impl == NULL);
if (unlikely(__pyx_t_2)) {
/* … */
}
+6277: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6277, __pyx_L4_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(0, 6277, __pyx_L4_error)
+6278: buffer._b = qdb_pystr_buf_new()
__pyx_v_buffer->_b = qdb_pystr_buf_new();
+6279: buffer._init_buf_size = line_sender_buffer_capacity(buffer._impl)
__pyx_v_buffer->_init_buf_size = line_sender_buffer_capacity(__pyx_v_buffer->_impl);
+6280: buffer._max_name_len = questdb_db_buffer_max_name_len(db)
__pyx_v_buffer->_max_name_len = questdb_db_buffer_max_name_len(__pyx_v_db);
+6281: buffer._qwp = True
__pyx_v_buffer->_qwp = 1;
6282:
+6283: lease = PooledSender.__new__(PooledSender)
__pyx_t_3 = ((PyObject *)__pyx_tp_new_7questdb_7_client_PooledSender(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledSender), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6283, __pyx_L4_error) __Pyx_GOTREF((PyObject *)__pyx_t_3); __Pyx_DECREF_SET(__pyx_v_lease, ((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_t_3)); __pyx_t_3 = 0;
+6284: lease._attach(self, db, sender, buffer)
((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_lease->__pyx_vtab)->_attach(__pyx_v_lease, __pyx_v_self, __pyx_v_db, __pyx_v_sender, __pyx_v_buffer);
+6285: sender = NULL
__pyx_v_sender = NULL;
+6286: db_use = False
__pyx_v_db_use = 0;
+6287: return lease
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_lease); __pyx_r = ((PyObject *)__pyx_v_lease); goto __pyx_L3_return; }
6288: finally:
+6289: _ensure_has_gil(&gs)
/*finally:*/ {
__pyx_L4_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
if ( unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
__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_XGOTREF(__pyx_t_12);
__pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
{
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6289, __pyx_L9_error)
/* … */
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6289, __pyx_L1_error)
+6290: if sender != NULL:
__pyx_t_2 = (__pyx_v_sender != NULL);
if (__pyx_t_2) {
/* … */
}
/* … */
__pyx_t_2 = (__pyx_v_sender != NULL);
if (__pyx_t_2) {
/* … */
}
+6291: questdb_db_return_sender(db, sender)
questdb_db_return_sender(__pyx_v_db, __pyx_v_sender);
/* … */
questdb_db_return_sender(__pyx_v_db, __pyx_v_sender);
+6292: if db_use:
if (__pyx_v_db_use) {
/* … */
}
}
__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_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
__pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
__pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
goto __pyx_L1_error;
__pyx_L9_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);
__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_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
goto __pyx_L1_error;
}
__pyx_L3_return: {
__pyx_t_12 = __pyx_r;
__pyx_r = 0;
/* … */
if (__pyx_v_db_use) {
/* … */
}
__pyx_r = __pyx_t_12;
__pyx_t_12 = 0;
goto __pyx_L0;
}
}
+6293: self._end_db_use()
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6293, __pyx_L9_error) /* … */ ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6293, __pyx_L1_error)
6294:
+6295: def dataframe(
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_9dataframe(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_7QuestDB_8dataframe, "\n Ingest a dataframe through the pooled columnar QWP path.\n\n Ingestion always uses the direct (non-store-and-forward) column\n sender, independent of ``sf_dir``, and returns once the whole frame\n is committed (``AckLevel::Ok``). On a transient connection failure\n the frame is re-sent from the caller's DataFrame within the pool's\n reconnect budget \342\200\224 unless the native client reports delivery as in\n doubt, or an intermediate commit checkpoint (emitted every ~100 batches\n on large frames) has already landed. In either case the error is raised\n immediately and a committed prefix may remain in the table, since a\n blind re-send would duplicate it. Delivery is\n at-least-once: a re-sent frame can duplicate already-committed rows\n (including the first chunk, which commits eagerly on a fresh\n connection) unless the table has ``DEDUP UPSERT KEYS``. Server-side\n rejections (e.g. a schema mismatch) surface as a plain\n :class:`QuestDBError`; the structured ``sender_error`` diagnostic\n is attached only by the store-and-forward senders.\n\n ``df`` accepts any of:\n\n - **pandas** ``pandas.DataFrame``. NumPy-backed columns route\n through the legacy planner; pyarrow-backed columns route\n through the Arrow C Stream capsule path below.\n - **polars** ``polars.DataFrame`` and ``polars.LazyFrame``.\n ``LazyFrame`` is materialised via\n ``.collect(engine='streaming')`` (eager ``.collect()`` on\n polars < 1.0).\n - **pyarrow** ``pa.Table``, ``pa.RecordBatch``, and\n ``pa.RecordBatchReader``.\n - Any object exposing the Arrow C Data Interface \342\200\224 i.e. with\n ``__arrow_c_stream__`` (duckdb / cudf / modin / pyarrow-backed\n pandas 2.2+) or ``__arrow_c_array__`` (single Arrow array\n exporters, wrapped into a one-batch ``pa.Table``).""\n\n ``at`` names the designated timestamp column (by name or index).\n Alternatively pass a fixed ``TimestampNanos`` / ``datetime``\n shared by every row (encoded as a repeated constant; resubmission\n stays idempotent under ``DEDUP UPSERT KEYS``), or the explicit\n :data:`ServerTimestamp` sentinel to let the server assign each\n row's timestamp on arrival \342\200\224 an opt-in mirroring the row API,\n since server-assigned timestamps defeat ``DEDUP UPSERT KEYS`` on\n resubmission.\n\n The columnar path loads one table per call: name it via\n ``table_name`` \342\200\224 or, for NumPy-backed pandas input, the\n dataframe's index name (``df.index.name``); Arrow-native input\n (polars, pyarrow, pyarrow-backed pandas) requires an explicit\n ``table_name``. ``table_name_col`` raises\n :class:`UnsupportedDataFrameShapeError` \342\200\224 split multi-table\n frames (e.g. ``df.groupby(col)``) and load each group.\n\n Supports a column-QWP v1 subset: a single per-call table name,\n non-null designated timestamp column, and the following\n per-column dtypes:\n\n - **Numeric**: NumPy ``bool/int{8,16,32,64}/uint{8..64}/float{32,64}``.\n Arrow ``pa.int{8,16,32,64}``, ``pa.float{16,32,64}``, and\n ``pa.uint{8,16,32,64}`` are accepted by the Rust Arrow batch route\n when the frame uses a fixed table name and a designated timestamp\n column name. Unsigned Arrow values follow the\n Rust Arrow policy: ``UInt8`` and ``UInt16`` widen to ``INT``,\n ``UInt32`` to ``LONG``, and ``UInt64`` values up to\n ``i64::MAX`` are accepted as ``LONG``. Larger ``UInt64`` values are\n rejected because QuestDB QWP-WS encodes integers as signed ``i64``.\n Signed ``int8``/``int16`` land as QuestDB ``INT``; the row-oriented\n :meth:`Sender.dataframe` instead widens every integer to ``""LONG``.\n Likewise ``float32`` lands here as ``FLOAT`` but is widened to\n ``DOUBLE`` by the row path \342\200\224 ingest a given table through a single\n path to avoid a first-write column-type mismatch.\n - **String / Symbol**: object-dtype ``str``, ``pa.string()``,\n ``pa.large_string()``, ``pd.CategoricalDtype`` of strings.\n - **Timestamp**: NumPy ``datetime64`` units accepted by pandas and\n ``pa.timestamp`` with unit ``s``, ``ms``, ``us``, or ``ns``\n (tz-aware accepted on Arrow-backed columns in the Rust Arrow route).\n Timestamp *field* columns accept null timestamps (``NaT`` /\n ``None``) and values before the Unix epoch; a ``datetime64[ns]``\n field carrying ``NaT`` is re-exported through Arrow so its\n ``INT64_MIN`` null sentinel is preserved (this needs pyarrow).\n The *designated* timestamp column (``at=``) must be non-null\n and at or after the epoch.\n - **Decimal**: Arrow-backed ``pa.decimal{32,64,128,256}`` columns\n (``pa.decimal32``/``pa.decimal64`` require pyarrow >= 18), or\n object-dtype columns of ``decimal.Decimal`` (re-exported through\n Arrow; the decimal width and scale are inferred from the values).\n - **Array**: Arrow ``pa.list_`` / ``pa.large_list`` /\n ``pa.fixed_size_list`` columns with a ``float64`` leaf (nested for\n multi-dimensional), and object-dtype columns of ``float64``\n ``numpy.ndarray`` cells (any rank; requires pyarrow). Both land as\n QuestDB ``ARRAY(DOUBLE)``. Null rows are allowed; null *elements*\n inside an array are not.\n - **UUID**: ``pa.fixed_size_binary(16)`` and the ``arrow.uuid``\n extension type. Bytes are forwarded verbatim as **QuestDB's\n UUID wire layout** (\"bytes 0..8 lo half LE, bytes 8..16 hi\n half LE\"), matching the convention shared across the\n c-qu""estdb-client family (Rust direct, Polars). Round-trip is\n byte-identity at this layout; users who want\n ``uuid.UUID.bytes`` (RFC 4122 big-endian) round-trip must\n convert at their boundary.\n\n Server-side coercion handles cross-type writes (e.g. ``pa.string()``\n UUIDs landing in a UUID column are parsed server-side; narrow ints\n landing in a wider column are widened). Failures surface as\n ``QuestDBError`` from the ``flush()``.\n\n ``schema_overrides`` reclassifies columns by name, mapping each to\n ``'symbol'``, ``'ipv4'``, ``'char'``, or ``'geohash'`` (e.g.\n ``{'venue': 'symbol', 'src_ip': 'ipv4'}``). Unknown column names are\n rejected. It requires the Arrow columnar path (fully Arrow-backed\n input without ``table_name_col``); on input that falls back to the\n NumPy planner it raises :class:`UnsupportedDataFrameShapeError`.\n ``max_rows_per_batch`` sets the pipelining granularity, not a\n safety limit: any batch exceeding the negotiated per-batch byte\n cap is split regardless of it, and a single row is never bounded\n by it. Each batch is one unit of client memory and server-side\n apply, and a commit checkpoint fires every ~100 batches, so\n ``max_rows_per_batch * 100`` rows is the replay window on a\n transient failover. Raise it for narrow numeric rows; lower it\n for very wide rows or tight memory. Streaming Arrow input\n (``pa.RecordBatchReader``) is not re-batched \342\200\224 the producer's\n batch size governs.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_7QuestDB_9dataframe = {"dataframe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_7QuestDB_9dataframe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_7QuestDB_8dataframe}; static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_9dataframe(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_df = 0; PyObject *__pyx_v_table_name = 0; PyObject *__pyx_v_table_name_col = 0; PyObject *__pyx_v_symbols = 0; PyObject *__pyx_v_at = 0; PyObject *__pyx_v_max_rows_per_batch = 0; PyObject *__pyx_v_schema_overrides = 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("dataframe (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_df,&__pyx_mstate_global->__pyx_n_u_at,&__pyx_mstate_global->__pyx_n_u_table_name,&__pyx_mstate_global->__pyx_n_u_table_name_col,&__pyx_mstate_global->__pyx_n_u_symbols,&__pyx_mstate_global->__pyx_n_u_max_rows_per_batch,&__pyx_mstate_global->__pyx_n_u_schema_overrides_2,0}; PyObject* values[7] = {0,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(0, 6295, __pyx_L3_error) if (likely(__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(0, 6295, __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, "dataframe", 0) < (0)) __PYX_ERR(0, 6295, __pyx_L3_error) /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_7QuestDB_8dataframe(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self, PyObject *__pyx_v_df, PyObject *__pyx_v_table_name, PyObject *__pyx_v_table_name_col, PyObject *__pyx_v_symbols, PyObject *__pyx_v_at, PyObject *__pyx_v_max_rows_per_batch, PyObject *__pyx_v_schema_overrides) { struct qdb_pystr_buf *__pyx_v_b; struct __pyx_t_7questdb_7_client_dataframe_plan_t __pyx_v_plan; struct questdb_db *__pyx_v_db; int __pyx_v_db_use; struct __pyx_t_7questdb_7_client_direct_conn_source_t __pyx_v_src; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("questdb._client.QuestDB.dataframe", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 6295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_table_name, __pyx_mstate_global->__pyx_kp_u_Optional_str) < (0)) __PYX_ERR(0, 6295, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_table_name_col, __pyx_mstate_global->__pyx_kp_u_Union_None_int_str) < (0)) __PYX_ERR(0, 6295, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_symbols, __pyx_mstate_global->__pyx_kp_u_Union_str_bool_List_int_List_str) < (0)) __PYX_ERR(0, 6295, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_at, __pyx_mstate_global->__pyx_kp_u_Union_ServerTimestampType_int_st) < (0)) __PYX_ERR(0, 6295, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_max_rows_per_batch, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 6295, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_schema_overrides_2, __pyx_mstate_global->__pyx_kp_u_Optional_Dict_str_object) < (0)) __PYX_ERR(0, 6295, __pyx_L1_error) __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_7QuestDB_9dataframe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_QuestDB_dataframe, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[85])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 6295, __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_17); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_18, __pyx_t_13); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_QuestDB, __pyx_mstate_global->__pyx_n_u_dataframe, __pyx_t_18) < (0)) __PYX_ERR(0, 6295, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
6296: self,
6297: df,
6298: *,
+6299: table_name: Optional[str] = None,
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_table_name, Py_None) < (0)) __PYX_ERR(0, 6295, __pyx_L1_error)
+6300: table_name_col: Union[None, int, str] = None,
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_auto)); if (!values[5]) values[5] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__28); /* … */ if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_table_name_col, Py_None) < (0)) __PYX_ERR(0, 6295, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_symbols, __pyx_mstate_global->__pyx_n_u_auto) < (0)) __PYX_ERR(0, 6295, __pyx_L1_error)
6301: symbols: Union[str, bool, List[int], List[str]] = 'auto',
6302: at: Union[ServerTimestampType, int, str, TimestampNanos, datetime.datetime],
+6303: max_rows_per_batch: int = DEFAULT_MAX_CHUNK_ROWS,
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_DEFAULT_MAX_CHUNK_ROWS); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 6303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (__Pyx_PyInt_FromNumber(&__pyx_t_17, NULL, 1) < (0)) __PYX_ERR(0, 6303, __pyx_L1_error) __pyx_mstate_global->__pyx_k__28 = ((PyObject*)__pyx_t_17); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = 0; /* … */ __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_DEFAULT_MAX_CHUNK_ROWS); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (__Pyx_PyInt_FromNumber(&__pyx_t_13, NULL, 1) < (0)) __PYX_ERR(0, 6303, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_max_rows_per_batch, __pyx_t_13) < (0)) __PYX_ERR(0, 6295, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+6304: schema_overrides: Optional[Dict[str, object]] = None):
if (!values[6]) values[6] = __Pyx_NewRef(((PyObject*)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("dataframe", 1, 1, 1, i); __PYX_ERR(0, 6295, __pyx_L3_error) } } for (Py_ssize_t i = 1; i < 2; i++) { if (unlikely(!values[i])) { __Pyx_RaiseKeywordRequired("dataframe", *(__pyx_pyargnames[i - 0])); __PYX_ERR(0, 6295, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { __Pyx_RaiseKeywordRequired("dataframe", __pyx_mstate_global->__pyx_n_u_at); __PYX_ERR(0, 6295, __pyx_L3_error) } __pyx_v_df = values[0]; __pyx_v_at = values[1]; __pyx_v_table_name = ((PyObject*)values[2]); __pyx_v_table_name_col = values[3]; __pyx_v_symbols = values[4]; if (__Pyx_PyInt_FromNumber(&values[5], "max_rows_per_batch", 0) < (0)) __PYX_ERR(0, 6303, __pyx_L3_error) __pyx_v_max_rows_per_batch = ((PyObject*)values[5]); __pyx_v_schema_overrides = ((PyObject*)values[6]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("dataframe", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 6295, __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.QuestDB.dataframe", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_table_name), (&PyUnicode_Type), 1, "table_name", 2))) __PYX_ERR(0, 6299, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_max_rows_per_batch), (&PyLong_Type), 0, "max_rows_per_batch", 2))) __PYX_ERR(0, 6303, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema_overrides), (&PyDict_Type), 1, "schema_overrides", 2))) __PYX_ERR(0, 6304, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_7QuestDB_8dataframe(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self), __pyx_v_df, __pyx_v_table_name, __pyx_v_table_name_col, __pyx_v_symbols, __pyx_v_at, __pyx_v_max_rows_per_batch, __pyx_v_schema_overrides); /* … */ if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_schema_overrides_2, Py_None) < (0)) __PYX_ERR(0, 6295, __pyx_L1_error)
6305: """
6306: Ingest a dataframe through the pooled columnar QWP path.
6307:
6308: Ingestion always uses the direct (non-store-and-forward) column
6309: sender, independent of ``sf_dir``, and returns once the whole frame
6310: is committed (``AckLevel::Ok``). On a transient connection failure
6311: the frame is re-sent from the caller's DataFrame within the pool's
6312: reconnect budget — unless the native client reports delivery as in
6313: doubt, or an intermediate commit checkpoint (emitted every ~100 batches
6314: on large frames) has already landed. In either case the error is raised
6315: immediately and a committed prefix may remain in the table, since a
6316: blind re-send would duplicate it. Delivery is
6317: at-least-once: a re-sent frame can duplicate already-committed rows
6318: (including the first chunk, which commits eagerly on a fresh
6319: connection) unless the table has ``DEDUP UPSERT KEYS``. Server-side
6320: rejections (e.g. a schema mismatch) surface as a plain
6321: :class:`QuestDBError`; the structured ``sender_error`` diagnostic
6322: is attached only by the store-and-forward senders.
6323:
6324: ``df`` accepts any of:
6325:
6326: - **pandas** ``pandas.DataFrame``. NumPy-backed columns route
6327: through the legacy planner; pyarrow-backed columns route
6328: through the Arrow C Stream capsule path below.
6329: - **polars** ``polars.DataFrame`` and ``polars.LazyFrame``.
6330: ``LazyFrame`` is materialised via
6331: ``.collect(engine='streaming')`` (eager ``.collect()`` on
6332: polars < 1.0).
6333: - **pyarrow** ``pa.Table``, ``pa.RecordBatch``, and
6334: ``pa.RecordBatchReader``.
6335: - Any object exposing the Arrow C Data Interface — i.e. with
6336: ``__arrow_c_stream__`` (duckdb / cudf / modin / pyarrow-backed
6337: pandas 2.2+) or ``__arrow_c_array__`` (single Arrow array
6338: exporters, wrapped into a one-batch ``pa.Table``).
6339:
6340: ``at`` names the designated timestamp column (by name or index).
6341: Alternatively pass a fixed ``TimestampNanos`` / ``datetime``
6342: shared by every row (encoded as a repeated constant; resubmission
6343: stays idempotent under ``DEDUP UPSERT KEYS``), or the explicit
6344: :data:`ServerTimestamp` sentinel to let the server assign each
6345: row's timestamp on arrival — an opt-in mirroring the row API,
6346: since server-assigned timestamps defeat ``DEDUP UPSERT KEYS`` on
6347: resubmission.
6348:
6349: The columnar path loads one table per call: name it via
6350: ``table_name`` — or, for NumPy-backed pandas input, the
6351: dataframe's index name (``df.index.name``); Arrow-native input
6352: (polars, pyarrow, pyarrow-backed pandas) requires an explicit
6353: ``table_name``. ``table_name_col`` raises
6354: :class:`UnsupportedDataFrameShapeError` — split multi-table
6355: frames (e.g. ``df.groupby(col)``) and load each group.
6356:
6357: Supports a column-QWP v1 subset: a single per-call table name,
6358: non-null designated timestamp column, and the following
6359: per-column dtypes:
6360:
6361: - **Numeric**: NumPy ``bool/int{8,16,32,64}/uint{8..64}/float{32,64}``.
6362: Arrow ``pa.int{8,16,32,64}``, ``pa.float{16,32,64}``, and
6363: ``pa.uint{8,16,32,64}`` are accepted by the Rust Arrow batch route
6364: when the frame uses a fixed table name and a designated timestamp
6365: column name. Unsigned Arrow values follow the
6366: Rust Arrow policy: ``UInt8`` and ``UInt16`` widen to ``INT``,
6367: ``UInt32`` to ``LONG``, and ``UInt64`` values up to
6368: ``i64::MAX`` are accepted as ``LONG``. Larger ``UInt64`` values are
6369: rejected because QuestDB QWP-WS encodes integers as signed ``i64``.
6370: Signed ``int8``/``int16`` land as QuestDB ``INT``; the row-oriented
6371: :meth:`Sender.dataframe` instead widens every integer to ``LONG``.
6372: Likewise ``float32`` lands here as ``FLOAT`` but is widened to
6373: ``DOUBLE`` by the row path — ingest a given table through a single
6374: path to avoid a first-write column-type mismatch.
6375: - **String / Symbol**: object-dtype ``str``, ``pa.string()``,
6376: ``pa.large_string()``, ``pd.CategoricalDtype`` of strings.
6377: - **Timestamp**: NumPy ``datetime64`` units accepted by pandas and
6378: ``pa.timestamp`` with unit ``s``, ``ms``, ``us``, or ``ns``
6379: (tz-aware accepted on Arrow-backed columns in the Rust Arrow route).
6380: Timestamp *field* columns accept null timestamps (``NaT`` /
6381: ``None``) and values before the Unix epoch; a ``datetime64[ns]``
6382: field carrying ``NaT`` is re-exported through Arrow so its
6383: ``INT64_MIN`` null sentinel is preserved (this needs pyarrow).
6384: The *designated* timestamp column (``at=``) must be non-null
6385: and at or after the epoch.
6386: - **Decimal**: Arrow-backed ``pa.decimal{32,64,128,256}`` columns
6387: (``pa.decimal32``/``pa.decimal64`` require pyarrow >= 18), or
6388: object-dtype columns of ``decimal.Decimal`` (re-exported through
6389: Arrow; the decimal width and scale are inferred from the values).
6390: - **Array**: Arrow ``pa.list_`` / ``pa.large_list`` /
6391: ``pa.fixed_size_list`` columns with a ``float64`` leaf (nested for
6392: multi-dimensional), and object-dtype columns of ``float64``
6393: ``numpy.ndarray`` cells (any rank; requires pyarrow). Both land as
6394: QuestDB ``ARRAY(DOUBLE)``. Null rows are allowed; null *elements*
6395: inside an array are not.
6396: - **UUID**: ``pa.fixed_size_binary(16)`` and the ``arrow.uuid``
6397: extension type. Bytes are forwarded verbatim as **QuestDB's
6398: UUID wire layout** ("bytes 0..8 lo half LE, bytes 8..16 hi
6399: half LE"), matching the convention shared across the
6400: c-questdb-client family (Rust direct, Polars). Round-trip is
6401: byte-identity at this layout; users who want
6402: ``uuid.UUID.bytes`` (RFC 4122 big-endian) round-trip must
6403: convert at their boundary.
6404:
6405: Server-side coercion handles cross-type writes (e.g. ``pa.string()``
6406: UUIDs landing in a UUID column are parsed server-side; narrow ints
6407: landing in a wider column are widened). Failures surface as
6408: ``QuestDBError`` from the ``flush()``.
6409:
6410: ``schema_overrides`` reclassifies columns by name, mapping each to
6411: ``'symbol'``, ``'ipv4'``, ``'char'``, or ``'geohash'`` (e.g.
6412: ``{'venue': 'symbol', 'src_ip': 'ipv4'}``). Unknown column names are
6413: rejected. It requires the Arrow columnar path (fully Arrow-backed
6414: input without ``table_name_col``); on input that falls back to the
6415: NumPy planner it raises :class:`UnsupportedDataFrameShapeError`.
6416: ``max_rows_per_batch`` sets the pipelining granularity, not a
6417: safety limit: any batch exceeding the negotiated per-batch byte
6418: cap is split regardless of it, and a single row is never bounded
6419: by it. Each batch is one unit of client memory and server-side
6420: apply, and a commit checkpoint fires every ~100 batches, so
6421: ``max_rows_per_batch * 100`` rows is the replay window on a
6422: transient failover. Raise it for narrow numeric rows; lower it
6423: for very wide rows or tight memory. Streaming Arrow input
6424: (``pa.RecordBatchReader``) is not re-batched — the producer's
6425: batch size governs.
6426: """
+6427: cdef qdb_pystr_buf* b = qdb_pystr_buf_new()
__pyx_v_b = qdb_pystr_buf_new();
+6428: cdef dataframe_plan_t plan = dataframe_plan_blank()
__pyx_v_plan = __pyx_f_7questdb_7_client_dataframe_plan_blank();
+6429: cdef questdb_db* db = NULL
__pyx_v_db = NULL;
+6430: cdef bint db_use = False
__pyx_v_db_use = 0;
6431: cdef direct_conn_source_t src
+6432: db = self._begin_db_use('dataframe')
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_begin_db_use(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dataframe); if (unlikely(__pyx_t_1 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 6432, __pyx_L1_error) __pyx_v_db = __pyx_t_1;
+6433: db_use = True
__pyx_v_db_use = 1;
+6434: try:
/*try:*/ {
+6435: src.db = db
__pyx_v_src.db = __pyx_v_db;
+6436: src.opts = NULL
__pyx_v_src.opts = NULL;
+6437: _direct_dataframe_run(
__pyx_t_3 = __pyx_f_7questdb_7_client__direct_dataframe_run((&__pyx_v_src), (((double)questdb_db_reconnect_max_duration_ms(__pyx_v_db)) / 1000.0), __pyx_v_b, (&__pyx_v_plan), __pyx_v_df, __pyx_v_table_name, __pyx_v_table_name_col, __pyx_v_symbols, __pyx_v_at, __pyx_t_2, __pyx_v_schema_overrides); if (unlikely(__pyx_t_3 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 6437, __pyx_L4_error)
6438: &src,
6439: questdb_db_reconnect_max_duration_ms(db) / 1000.0,
6440: b,
6441: &plan,
6442: df,
6443: table_name,
6444: table_name_col,
6445: symbols,
6446: at,
+6447: max_rows_per_batch,
__pyx_t_2 = __Pyx_PyLong_As_size_t(__pyx_v_max_rows_per_batch); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 6447, __pyx_L4_error)
6448: schema_overrides)
+6449: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L3_return; }
6450: finally:
+6451: qdb_pystr_buf_free(b)
/*finally:*/ {
__pyx_L4_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
__Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
if ( unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
__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_XGOTREF(__pyx_t_12);
__pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
{
qdb_pystr_buf_free(__pyx_v_b);
/* … */
qdb_pystr_buf_free(__pyx_v_b);
+6452: if db_use:
if (__pyx_v_db_use) {
/* … */
}
}
__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_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
__pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
__pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
goto __pyx_L1_error;
__pyx_L7_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);
__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_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
goto __pyx_L1_error;
}
__pyx_L3_return: {
__pyx_t_12 = __pyx_r;
__pyx_r = 0;
/* … */
if (__pyx_v_db_use) {
/* … */
}
__pyx_r = __pyx_t_12;
__pyx_t_12 = 0;
goto __pyx_L0;
}
}
+6453: self._end_db_use()
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6453, __pyx_L7_error) /* … */ ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6453, __pyx_L1_error)
6454:
+6455: def execute(self, str sql, object binds=None):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_11execute(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_7QuestDB_10execute, "\n Run a statement and discard whatever it returns.\n\n Executes ``sql`` like :meth:`query`, drains the result to its\n clean end and returns the pooled connection \342\200\224 the pattern DDL\n and DML otherwise need spelled out as\n ``with db.query(sql) as r: r.to_pandas()``. Statement output\n (a ``COPY`` status row, admin-function rows, a stray\n ``SELECT``) is discarded; use :meth:`query` when you want the\n result. The connection's SYMBOL dictionary is left untouched.\n\n ``binds`` behaves exactly as on :meth:`query`. Returns\n ``None``: the protocol carries no rows-affected count.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_7QuestDB_11execute = {"execute", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_7QuestDB_11execute, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_7QuestDB_10execute}; static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_11execute(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_sql = 0; PyObject *__pyx_v_binds = 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("execute (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_sql,&__pyx_mstate_global->__pyx_n_u_binds,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(0, 6455, __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(0, 6455, __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(0, 6455, __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, "execute", 0) < (0)) __PYX_ERR(0, 6455, __pyx_L3_error) if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("execute", 0, 1, 2, i); __PYX_ERR(0, 6455, __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(0, 6455, __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(0, 6455, __pyx_L3_error) break; default: goto __pyx_L5_argtuple_error; } if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_sql = ((PyObject*)values[0]); __pyx_v_binds = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("execute", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 6455, __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.QuestDB.execute", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sql), (&PyUnicode_Type), 1, "sql", 1))) __PYX_ERR(0, 6455, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_7QuestDB_10execute(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self), __pyx_v_sql, __pyx_v_binds); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_7QuestDB_10execute(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self, PyObject *__pyx_v_sql, PyObject *__pyx_v_binds) { PyObject *__pyx_v_result = 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_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("questdb._client.QuestDB.execute", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_7QuestDB_11execute, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_QuestDB_execute, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[86])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 6455, __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[7]); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_QuestDB, __pyx_mstate_global->__pyx_n_u_execute, __pyx_t_18) < (0)) __PYX_ERR(0, 6455, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
6456: """
6457: Run a statement and discard whatever it returns.
6458:
6459: Executes ``sql`` like :meth:`query`, drains the result to its
6460: clean end and returns the pooled connection — the pattern DDL
6461: and DML otherwise need spelled out as
6462: ``with db.query(sql) as r: r.to_pandas()``. Statement output
6463: (a ``COPY`` status row, admin-function rows, a stray
6464: ``SELECT``) is discarded; use :meth:`query` when you want the
6465: result. The connection's SYMBOL dictionary is left untouched.
6466:
6467: ``binds`` behaves exactly as on :meth:`query`. Returns
6468: ``None``: the protocol carries no rows-affected count.
6469: """
+6470: self._begin_db_use('execute')
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_begin_db_use(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_execute); if (unlikely(__pyx_t_1 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 6470, __pyx_L1_error)
+6471: try:
/*try:*/ {
+6472: result = self.query(sql, binds, reset_symbol_dict=False)
__pyx_t_3 = ((PyObject *)__pyx_v_self);
__Pyx_INCREF(__pyx_t_3);
__pyx_t_4 = 0;
{
PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_v_sql, __pyx_v_binds};
__pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6472, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_5);
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_reset_symbol_dict, Py_False, __pyx_t_5, __pyx_callargs+3, 0) < (0)) __PYX_ERR(0, 6472, __pyx_L4_error)
__pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_query, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6472, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_v_result = __pyx_t_2;
__pyx_t_2 = 0;
+6473: try:
/*try:*/ {
+6474: result._drain()
__pyx_t_5 = __pyx_v_result;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_4 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_drain, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6474, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
6475: finally:
+6476: result.close()
/*finally:*/ {
/*normal exit:*/{
__pyx_t_5 = __pyx_v_result;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_4 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6476, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
goto __pyx_L8;
}
__pyx_L7_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
if ( unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_10);
__Pyx_XGOTREF(__pyx_t_11);
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_14);
__pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename;
{
__pyx_t_5 = __pyx_v_result;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_4 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6476, __pyx_L10_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
__pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
__pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8;
goto __pyx_L4_error;
__pyx_L10_error:;
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
__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;
__pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
goto __pyx_L4_error;
}
__pyx_L8:;
}
}
6477: finally:
+6478: self._end_db_use()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6478, __pyx_L1_error)
goto __pyx_L5;
}
__pyx_L4_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
if ( unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_13, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_13, &__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_11);
__Pyx_XGOTREF(__pyx_t_10);
__Pyx_XGOTREF(__pyx_t_9);
__pyx_t_7 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
{
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6478, __pyx_L12_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);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_ErrRestore(__pyx_t_14, __pyx_t_13, __pyx_t_12);
__pyx_t_14 = 0; __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_9 = 0;
__pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_15;
goto __pyx_L1_error;
__pyx_L12_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);
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_t_11 = 0; __pyx_t_10 = 0; __pyx_t_9 = 0;
goto __pyx_L1_error;
}
__pyx_L5:;
}
6479:
+6480: def query(
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_13query(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_7QuestDB_12query, "\n Execute a SQL query and return a :class:`QueryResult`.\n\n Egress goes through the QuestDB Wire Protocol (QWP/WebSocket)\n ``/read/v1`` endpoint. The reader is borrowed from the same\n connection pool that hosts the ingress writers and is returned to\n the pool when the returned :class:`QueryResult` is consumed or\n closed (a poisoned connection is dropped instead). Auth / TLS\n settings apply to both directions.\n\n To run several queries on one pooled connection, lease a\n :class:`PooledReader` with :meth:`reader` instead.\n\n :param sql: SQL text to execute. Forwarded verbatim to QuestDB.\n\n :param binds: Positional bind parameters matching the ``$1``..``$N``\n placeholders in ``sql``, as a list or tuple. Always prefer binds\n over interpolating values into the SQL text \342\200\224 they take no\n escaping and keep types exact. Supported Python types and their\n QuestDB bind types:\n\n - ``None`` \342\206\222 SQL NULL (bound as a VARCHAR null)\n - ``bool`` \342\206\222 BOOLEAN\n - ``int`` \342\206\222 LONG (must fit signed 64-bit)\n - ``float`` \342\206\222 DOUBLE\n - ``str`` \342\206\222 VARCHAR\n - ``datetime.datetime`` \342\206\222 TIMESTAMP (microseconds; a naive\n value is interpreted as UTC, the same rule as everywhere else\n in the API)\n - :class:`TimestampMicros` \342\206\222 TIMESTAMP\n - :class:`TimestampNanos` \342\206\222 TIMESTAMP_NS\n - ``uuid.UUID`` \342\206\222 UUID\n\n Any other type raises :class:`TypeError` naming the placeholder.\n\n .. code-block:: python\n\n res = db.query(\n 'SELECT * FROM trades WHERE ts > $1 AND sym = $2',\n [datetime.datetime(2026, 7, 1), 'BTC-USD'])\n\n :param reset_symbol_dict: When ``True`` ""(the default), the server\n resets the connection's SYMBOL dictionary before this query so it\n never inherits symbols from earlier queries on the pooled\n connection (query-scoped dict), avoiding cross-query dictionary\n bloat in ``to_polars()`` / ``to_pandas()``. Set ``False`` to keep\n the dictionary warm across repeated identical queries. No-op\n against servers that predate the capability.\n\n :return: A :class:`QueryResult`. Materialise it via\n ``to_pandas()``, ``to_arrow()``, ``iter_arrow()``,\n ``iter_pandas()``, or the ``__arrow_c_stream__`` PyCapsule\n protocol.\n\n Sentinel-value collisions in the result frame round-trip QuestDB's\n contract: ``INT64_MIN`` in a LONG column, NaN in DOUBLE / FLOAT,\n and the sentinel values for INT / DATE / TIMESTAMP /\n TIMESTAMP_NS / CHAR / UUID / LONG256 / IPV4 / GEOHASH are all\n interpreted as NULL by QuestDB and cannot be distinguished from\n legitimate occurrences of those values.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_7QuestDB_13query = {"query", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_7QuestDB_13query, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_7QuestDB_12query}; static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_13query(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_sql = 0; PyObject *__pyx_v_binds = 0; int __pyx_v_reset_symbol_dict; #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("query (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_sql,&__pyx_mstate_global->__pyx_n_u_binds,&__pyx_mstate_global->__pyx_n_u_reset_symbol_dict,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(0, 6480, __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(0, 6480, __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(0, 6480, __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, "query", 0) < (0)) __PYX_ERR(0, 6480, __pyx_L3_error) /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_7QuestDB_12query(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self, PyObject *__pyx_v_sql, PyObject *__pyx_v_binds, int __pyx_v_reset_symbol_dict) { struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_v_reader_handle = 0; struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_cursor_handle = 0; struct questdb_db *__pyx_v_db; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("questdb._client.QuestDB.query", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_reader_handle); __Pyx_XDECREF((PyObject *)__pyx_v_cursor_handle); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 6480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_7QuestDB_13query, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_QuestDB_query, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[87])); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_13, __pyx_mstate_global->__pyx_tuple[7]); __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_13, __pyx_t_18); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_QuestDB, __pyx_mstate_global->__pyx_n_u_query, __pyx_t_13) < (0)) __PYX_ERR(0, 6480, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
6481: self,
6482: str sql,
+6483: object binds=None,
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("query", 0, 1, 2, i); __PYX_ERR(0, 6480, __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(0, 6480, __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(0, 6480, __pyx_L3_error) break; default: goto __pyx_L5_argtuple_error; } if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_sql = ((PyObject*)values[0]); __pyx_v_binds = values[1]; if (values[2]) { __pyx_v_reset_symbol_dict = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_reset_symbol_dict == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6485, __pyx_L3_error) } else {
6484: *,
+6485: bint reset_symbol_dict=True):
__pyx_v_reset_symbol_dict = ((int)1);
}
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("query", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 6480, __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.QuestDB.query", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sql), (&PyUnicode_Type), 1, "sql", 1))) __PYX_ERR(0, 6482, __pyx_L1_error)
__pyx_r = __pyx_pf_7questdb_7_client_7QuestDB_12query(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self), __pyx_v_sql, __pyx_v_binds, __pyx_v_reset_symbol_dict);
/* … */
if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_reset_symbol_dict, Py_True) < (0)) __PYX_ERR(0, 6480, __pyx_L1_error)
6486: """
6487: Execute a SQL query and return a :class:`QueryResult`.
6488:
6489: Egress goes through the QuestDB Wire Protocol (QWP/WebSocket)
6490: ``/read/v1`` endpoint. The reader is borrowed from the same
6491: connection pool that hosts the ingress writers and is returned to
6492: the pool when the returned :class:`QueryResult` is consumed or
6493: closed (a poisoned connection is dropped instead). Auth / TLS
6494: settings apply to both directions.
6495:
6496: To run several queries on one pooled connection, lease a
6497: :class:`PooledReader` with :meth:`reader` instead.
6498:
6499: :param sql: SQL text to execute. Forwarded verbatim to QuestDB.
6500:
6501: :param binds: Positional bind parameters matching the ``$1``..``$N``
6502: placeholders in ``sql``, as a list or tuple. Always prefer binds
6503: over interpolating values into the SQL text — they take no
6504: escaping and keep types exact. Supported Python types and their
6505: QuestDB bind types:
6506:
6507: - ``None`` → SQL NULL (bound as a VARCHAR null)
6508: - ``bool`` → BOOLEAN
6509: - ``int`` → LONG (must fit signed 64-bit)
6510: - ``float`` → DOUBLE
6511: - ``str`` → VARCHAR
6512: - ``datetime.datetime`` → TIMESTAMP (microseconds; a naive
6513: value is interpreted as UTC, the same rule as everywhere else
6514: in the API)
6515: - :class:`TimestampMicros` → TIMESTAMP
6516: - :class:`TimestampNanos` → TIMESTAMP_NS
6517: - ``uuid.UUID`` → UUID
6518:
6519: Any other type raises :class:`TypeError` naming the placeholder.
6520:
6521: .. code-block:: python
6522:
6523: res = db.query(
6524: 'SELECT * FROM trades WHERE ts > $1 AND sym = $2',
6525: [datetime.datetime(2026, 7, 1), 'BTC-USD'])
6526:
6527: :param reset_symbol_dict: When ``True`` (the default), the server
6528: resets the connection's SYMBOL dictionary before this query so it
6529: never inherits symbols from earlier queries on the pooled
6530: connection (query-scoped dict), avoiding cross-query dictionary
6531: bloat in ``to_polars()`` / ``to_pandas()``. Set ``False`` to keep
6532: the dictionary warm across repeated identical queries. No-op
6533: against servers that predate the capability.
6534:
6535: :return: A :class:`QueryResult`. Materialise it via
6536: ``to_pandas()``, ``to_arrow()``, ``iter_arrow()``,
6537: ``iter_pandas()``, or the ``__arrow_c_stream__`` PyCapsule
6538: protocol.
6539:
6540: Sentinel-value collisions in the result frame round-trip QuestDB's
6541: contract: ``INT64_MIN`` in a LONG column, NaN in DOUBLE / FLOAT,
6542: and the sentinel values for INT / DATE / TIMESTAMP /
6543: TIMESTAMP_NS / CHAR / UUID / LONG256 / IPV4 / GEOHASH are all
6544: interpreted as NULL by QuestDB and cannot be distinguished from
6545: legitimate occurrences of those values.
6546: """
6547: # Borrow a reader from the same `questdb_db` pool that hosts
6548: # the ingress writers. The pool amortises TCP+TLS handshake
6549: # cost across many `QuestDB.query()` calls: the first call
6550: # opens a connection, subsequent calls hit the idle-list
6551: # cache. See `c-questdb-client/questdb-rs/src/ingress/
6552: # column_sender/db.rs` for the pool's structure.
6553: cdef _ReaderHandle reader_handle
6554: cdef _CursorHandle cursor_handle
6555: cdef questdb_db* db
+6556: if sql is None:
__pyx_t_1 = (__pyx_v_sql == ((PyObject*)Py_None));
if (unlikely(__pyx_t_1)) {
/* … */
}
+6557: raise TypeError(
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_query_requires_a_sql_string_to_r};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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_2)) __PYX_ERR(0, 6557, __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(0, 6557, __pyx_L1_error)
6558: 'query() requires a sql string; to run several queries '
6559: 'on one pooled connection, lease a PooledReader with '
6560: 'reader() instead.')
+6561: if binds is not None and not isinstance(binds, (list, tuple)):
__pyx_t_5 = (__pyx_v_binds != Py_None);
if (__pyx_t_5) {
} else {
__pyx_t_1 = __pyx_t_5;
goto __pyx_L5_bool_binop_done;
}
__pyx_t_6 = PyList_Check(__pyx_v_binds);
if (!__pyx_t_6) {
} else {
__pyx_t_5 = __pyx_t_6;
goto __pyx_L7_bool_binop_done;
}
__pyx_t_6 = PyTuple_Check(__pyx_v_binds);
__pyx_t_5 = __pyx_t_6;
__pyx_L7_bool_binop_done:;
__pyx_t_6 = (!__pyx_t_5);
__pyx_t_1 = __pyx_t_6;
__pyx_L5_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
/* … */
}
+6562: raise TypeError(
__pyx_t_3 = NULL;
+6563: '"binds" must be a list or tuple of positional bind '
__pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_binds_must_be_a_list_or_tuple_o, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_4 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_7}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6562, __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(0, 6562, __pyx_L1_error)
+6564: f'parameters (or None), not {_fqn(type(binds))}')
__pyx_t_7 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_binds)))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyUnicode_Unicode(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+6565: db = self._begin_db_use('query')
__pyx_t_9 = ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_begin_db_use(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_query); if (unlikely(__pyx_t_9 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 6565, __pyx_L1_error) __pyx_v_db = __pyx_t_9;
+6566: try:
/*try:*/ {
+6567: reader_handle = _borrow_reader_from_pool(db)
__pyx_t_2 = ((PyObject *)__pyx_f_7questdb_7_client__borrow_reader_from_pool(__pyx_v_db)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6567, __pyx_L10_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_reader_handle = ((struct __pyx_obj_7questdb_7_client__ReaderHandle *)__pyx_t_2); __pyx_t_2 = 0;
+6568: cursor_handle = _execute_query(
__pyx_t_10.__pyx_n = 1;
__pyx_t_10.reset_symbol_dict = __pyx_v_reset_symbol_dict;
__pyx_t_2 = ((PyObject *)__pyx_f_7questdb_7_client__execute_query(__pyx_v_reader_handle, __pyx_v_sql, __pyx_v_binds, &__pyx_t_10)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6568, __pyx_L10_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_cursor_handle = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_2);
__pyx_t_2 = 0;
}
6569: reader_handle, sql, binds, reset_symbol_dict)
6570: finally:
+6571: self._end_db_use()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6571, __pyx_L1_error)
goto __pyx_L11;
}
__pyx_L10_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
if ( unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_17);
__Pyx_XGOTREF(__pyx_t_18);
__Pyx_XGOTREF(__pyx_t_19);
__pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
{
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6571, __pyx_L13_error)
}
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
__pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
__pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
goto __pyx_L1_error;
__pyx_L13_error:;
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
goto __pyx_L1_error;
}
__pyx_L11:;
}
+6572: return QueryResult(cursor_handle)
__Pyx_XDECREF(__pyx_r); __pyx_t_7 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QueryResult); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = 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_4 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_7, ((PyObject *)__pyx_v_cursor_handle)}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__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_2)) __PYX_ERR(0, 6572, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
6573:
+6574: def reader(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_15reader(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_7QuestDB_14reader, "\n Borrow a context-managed :class:`PooledReader` lease from the pool.\n\n The read-side twin of :meth:`sender`: the lease holds one pooled\n reader connection for its lifetime and runs queries on it\n sequentially via :meth:`PooledReader.query`.\n\n .. code-block:: python\n\n with db.reader() as r:\n r1 = r.query('SELECT * FROM t1').to_pandas()\n r2 = r.query(\n 'SELECT * FROM t2',\n reset_symbol_dict=False).to_pandas()\n\n The lease participates in the handle's active-use count until it\n is closed. :meth:`QuestDB.close` therefore waits for outstanding\n leases.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_7QuestDB_15reader = {"reader", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_7QuestDB_15reader, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_7QuestDB_14reader}; static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_15reader(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("reader (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("reader", 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("reader", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_7QuestDB_14reader(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_7QuestDB_14reader(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self) { struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_v_reader_handle = 0; struct __pyx_obj_7questdb_7_client_PooledReader *__pyx_v_lease = 0; struct questdb_db *__pyx_v_db; int __pyx_v_db_use; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("questdb._client.QuestDB.reader", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_reader_handle); __Pyx_XDECREF((PyObject *)__pyx_v_lease); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_7QuestDB_15reader, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_QuestDB_reader, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[88])); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_QuestDB, __pyx_mstate_global->__pyx_n_u_reader, __pyx_t_13) < (0)) __PYX_ERR(0, 6574, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
6575: """
6576: Borrow a context-managed :class:`PooledReader` lease from the pool.
6577:
6578: The read-side twin of :meth:`sender`: the lease holds one pooled
6579: reader connection for its lifetime and runs queries on it
6580: sequentially via :meth:`PooledReader.query`.
6581:
6582: .. code-block:: python
6583:
6584: with db.reader() as r:
6585: r1 = r.query('SELECT * FROM t1').to_pandas()
6586: r2 = r.query(
6587: 'SELECT * FROM t2',
6588: reset_symbol_dict=False).to_pandas()
6589:
6590: The lease participates in the handle's active-use count until it
6591: is closed. :meth:`QuestDB.close` therefore waits for outstanding
6592: leases.
6593: """
6594: cdef _ReaderHandle reader_handle
6595: cdef PooledReader lease
6596: cdef questdb_db* db
+6597: cdef bint db_use = False
__pyx_v_db_use = 0;
+6598: db = self._begin_db_use('reader')
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_begin_db_use(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_reader); if (unlikely(__pyx_t_1 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 6598, __pyx_L1_error) __pyx_v_db = __pyx_t_1;
+6599: db_use = True
__pyx_v_db_use = 1;
+6600: try:
/*try:*/ {
+6601: reader_handle = _borrow_reader_from_pool(db)
__pyx_t_2 = ((PyObject *)__pyx_f_7questdb_7_client__borrow_reader_from_pool(__pyx_v_db)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6601, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_reader_handle = ((struct __pyx_obj_7questdb_7_client__ReaderHandle *)__pyx_t_2); __pyx_t_2 = 0;
+6602: lease = PooledReader.__new__(PooledReader)
__pyx_t_2 = ((PyObject *)__pyx_tp_new_7questdb_7_client_PooledReader(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledReader), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6602, __pyx_L4_error) __Pyx_GOTREF((PyObject *)__pyx_t_2); __pyx_v_lease = ((struct __pyx_obj_7questdb_7_client_PooledReader *)__pyx_t_2); __pyx_t_2 = 0;
+6603: lease._attach(self, reader_handle)
((struct __pyx_vtabstruct_7questdb_7_client_PooledReader *)__pyx_v_lease->__pyx_vtab)->_attach(__pyx_v_lease, __pyx_v_self, __pyx_v_reader_handle);
+6604: db_use = False
__pyx_v_db_use = 0;
+6605: return lease
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_lease); __pyx_r = ((PyObject *)__pyx_v_lease); goto __pyx_L3_return; }
6606: finally:
+6607: if db_use:
/*finally:*/ {
__pyx_L4_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;
{
if (__pyx_v_db_use) {
/* … */
}
}
__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_L7_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);
__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_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
goto __pyx_L1_error;
}
__pyx_L3_return: {
__pyx_t_11 = __pyx_r;
__pyx_r = 0;
if (__pyx_v_db_use) {
/* … */
}
__pyx_r = __pyx_t_11;
__pyx_t_11 = 0;
goto __pyx_L0;
}
}
+6608: self._end_db_use()
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6608, __pyx_L7_error) /* … */ ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6608, __pyx_L1_error)
6609:
+6610: def server_info(self) -> ServerInfo:
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_17server_info(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_7QuestDB_16server_info, "\n Return a :class:`ServerInfo` snapshot of the server's\n ``SERVER_INFO`` handshake: cluster role, failover epoch,\n negotiated capabilities, handshake wall-clock, and cluster/node\n identifiers.\n\n A reader is borrowed from the connection pool (opening one on\n first use, exactly like :meth:`query`), sampled, and returned to\n the pool. The snapshot describes that connection at its last\n handshake; a later failover is reflected only in snapshots taken\n after it.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_7QuestDB_17server_info = {"server_info", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_7QuestDB_17server_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_7QuestDB_16server_info}; static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_17server_info(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("server_info (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("server_info", 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("server_info", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_7QuestDB_16server_info(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_7QuestDB_16server_info(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self) { struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_v_reader_handle = 0; struct questdb_db *__pyx_v_db; PyObject *__pyx_v_info = NULL; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("questdb._client.QuestDB.server_info", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_reader_handle); __Pyx_XDECREF(__pyx_v_info); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6610, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_ServerInfo) < (0)) __PYX_ERR(0, 6610, __pyx_L1_error) __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_7QuestDB_17server_info, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_QuestDB_server_info, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[89])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 6610, __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_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_QuestDB, __pyx_mstate_global->__pyx_n_u_server_info, __pyx_t_18) < (0)) __PYX_ERR(0, 6610, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
6611: """
6612: Return a :class:`ServerInfo` snapshot of the server's
6613: ``SERVER_INFO`` handshake: cluster role, failover epoch,
6614: negotiated capabilities, handshake wall-clock, and cluster/node
6615: identifiers.
6616:
6617: A reader is borrowed from the connection pool (opening one on
6618: first use, exactly like :meth:`query`), sampled, and returned to
6619: the pool. The snapshot describes that connection at its last
6620: handshake; a later failover is reflected only in snapshots taken
6621: after it.
6622: """
6623: cdef _ReaderHandle reader_handle
6624: cdef questdb_db* db
+6625: db = self._begin_db_use('server_info')
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_begin_db_use(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_server_info); if (unlikely(__pyx_t_1 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 6625, __pyx_L1_error) __pyx_v_db = __pyx_t_1;
+6626: try:
/*try:*/ {
+6627: reader_handle = _borrow_reader_from_pool(db)
__pyx_t_2 = ((PyObject *)__pyx_f_7questdb_7_client__borrow_reader_from_pool(__pyx_v_db)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6627, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_reader_handle = ((struct __pyx_obj_7questdb_7_client__ReaderHandle *)__pyx_t_2); __pyx_t_2 = 0;
+6628: info = _snapshot_server_info(reader_handle)
__pyx_t_2 = __pyx_f_7questdb_7_client__snapshot_server_info(__pyx_v_reader_handle); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6628, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_info = __pyx_t_2; __pyx_t_2 = 0;
+6629: reader_handle._close()
((struct __pyx_vtabstruct_7questdb_7_client__ReaderHandle *)__pyx_v_reader_handle->__pyx_vtab)->_close(__pyx_v_reader_handle); }
6630: finally:
+6631: self._end_db_use()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6631, __pyx_L1_error)
goto __pyx_L5;
}
__pyx_L4_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;
{
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6631, __pyx_L7_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);
__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_L7_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);
__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_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
goto __pyx_L1_error;
}
__pyx_L5:;
}
+6632: return info
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_info); __pyx_r = __pyx_v_info; goto __pyx_L0;
6633:
+6634: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_25connection_events_dropped_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_25connection_events_dropped_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_7QuestDB_25connection_events_dropped___get__(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_7QuestDB_25connection_events_dropped___get__(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self) {
struct questdb_db *__pyx_v_db;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.QuestDB.connection_events_dropped.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
6635: def connection_events_dropped(self) -> int:
6636: """
6637: Total connection events discarded by the listener inbox's
6638: drop-oldest policy. ``0`` when no listener is registered.
6639: """
+6640: cdef questdb_db* db = self._begin_db_use('connection_events_dropped')
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_begin_db_use(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_connection_events_dropped); if (unlikely(__pyx_t_1 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 6640, __pyx_L1_error) __pyx_v_db = __pyx_t_1;
+6641: try:
/*try:*/ {
+6642: return questdb_db_connection_events_dropped(db)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyLong_From_uint64_t(questdb_db_connection_events_dropped(__pyx_v_db)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6642, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L3_return; }
6643: finally:
+6644: self._end_db_use()
/*finally:*/ {
__pyx_L4_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;
{
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6644, __pyx_L7_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);
__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_L7_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);
__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_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
goto __pyx_L1_error;
}
__pyx_L3_return: {
__pyx_t_11 = __pyx_r;
__pyx_r = 0;
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6644, __pyx_L1_error)
__pyx_r = __pyx_t_11;
__pyx_t_11 = 0;
goto __pyx_L0;
}
}
6645:
+6646: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_27connection_events_delivered_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_27connection_events_delivered_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_7QuestDB_27connection_events_delivered___get__(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_7QuestDB_27connection_events_delivered___get__(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self) {
struct questdb_db *__pyx_v_db;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.QuestDB.connection_events_delivered.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
6647: def connection_events_delivered(self) -> int:
6648: """
6649: Total connection events delivered to the listener. ``0`` when no
6650: listener is registered.
6651: """
+6652: cdef questdb_db* db = self._begin_db_use('connection_events_delivered')
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_begin_db_use(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_connection_events_delivered); if (unlikely(__pyx_t_1 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 6652, __pyx_L1_error) __pyx_v_db = __pyx_t_1;
+6653: try:
/*try:*/ {
+6654: return questdb_db_connection_events_delivered(db)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyLong_From_uint64_t(questdb_db_connection_events_delivered(__pyx_v_db)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6654, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L3_return; }
6655: finally:
+6656: self._end_db_use()
/*finally:*/ {
__pyx_L4_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;
{
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6656, __pyx_L7_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);
__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_L7_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);
__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_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
goto __pyx_L1_error;
}
__pyx_L3_return: {
__pyx_t_11 = __pyx_r;
__pyx_r = 0;
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6656, __pyx_L1_error)
__pyx_r = __pyx_t_11;
__pyx_t_11 = 0;
goto __pyx_L0;
}
}
6657:
+6658: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_22error_events_delivered_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_22error_events_delivered_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_7QuestDB_22error_events_delivered___get__(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_7QuestDB_22error_events_delivered___get__(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self) {
struct questdb_db *__pyx_v_db;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.QuestDB.error_events_delivered.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
6659: def error_events_delivered(self) -> int:
6660: """
6661: Total server rejections delivered to the ``error_handler``
6662: (or to the default logging handler when none was registered).
6663: """
+6664: cdef questdb_db* db = self._begin_db_use('error_events_delivered')
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_begin_db_use(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_error_events_delivered); if (unlikely(__pyx_t_1 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 6664, __pyx_L1_error) __pyx_v_db = __pyx_t_1;
+6665: try:
/*try:*/ {
+6666: return questdb_db_rejection_events_delivered(db)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyLong_From_uint64_t(questdb_db_rejection_events_delivered(__pyx_v_db)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6666, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L3_return; }
6667: finally:
+6668: self._end_db_use()
/*finally:*/ {
__pyx_L4_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;
{
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6668, __pyx_L7_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);
__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_L7_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);
__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_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
goto __pyx_L1_error;
}
__pyx_L3_return: {
__pyx_t_11 = __pyx_r;
__pyx_r = 0;
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6668, __pyx_L1_error)
__pyx_r = __pyx_t_11;
__pyx_t_11 = 0;
goto __pyx_L0;
}
}
6669:
+6670: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_20error_events_dropped_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_20error_events_dropped_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_7QuestDB_20error_events_dropped___get__(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_7QuestDB_20error_events_dropped___get__(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self) {
struct questdb_db *__pyx_v_db;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.QuestDB.error_events_dropped.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
6671: def error_events_dropped(self) -> int:
6672: """
6673: Total server rejections discarded by the handler inbox's
6674: drop-oldest policy.
6675: """
+6676: cdef questdb_db* db = self._begin_db_use('error_events_dropped')
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_begin_db_use(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_error_events_dropped); if (unlikely(__pyx_t_1 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 6676, __pyx_L1_error) __pyx_v_db = __pyx_t_1;
+6677: try:
/*try:*/ {
+6678: return questdb_db_rejection_events_dropped(db)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyLong_From_uint64_t(questdb_db_rejection_events_dropped(__pyx_v_db)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6678, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L3_return; }
6679: finally:
+6680: self._end_db_use()
/*finally:*/ {
__pyx_L4_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;
{
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6680, __pyx_L7_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);
__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_L7_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);
__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_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
goto __pyx_L1_error;
}
__pyx_L3_return: {
__pyx_t_11 = __pyx_r;
__pyx_r = 0;
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6680, __pyx_L1_error)
__pyx_r = __pyx_t_11;
__pyx_t_11 = 0;
goto __pyx_L0;
}
}
6681:
+6682: def reap_idle(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_19reap_idle(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_7QuestDB_18reap_idle, "\n Manually reap idle above-pool-size connections.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_7QuestDB_19reap_idle = {"reap_idle", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_7QuestDB_19reap_idle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_7QuestDB_18reap_idle}; static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_19reap_idle(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("reap_idle (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("reap_idle", 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("reap_idle", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_7QuestDB_18reap_idle(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_7QuestDB_18reap_idle(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self) { size_t __pyx_v_closed; PyThreadState *__pyx_v_gs; struct questdb_db *__pyx_v_db; int __pyx_v_db_use; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("questdb._client.QuestDB.reap_idle", __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_7QuestDB_19reap_idle, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_QuestDB_reap_idle, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[90])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 6682, __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_QuestDB, __pyx_mstate_global->__pyx_n_u_reap_idle, __pyx_t_18) < (0)) __PYX_ERR(0, 6682, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
6683: """
6684: Manually reap idle above-pool-size connections.
6685: """
6686: cdef size_t closed
+6687: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+6688: cdef questdb_db* db = NULL
__pyx_v_db = NULL;
+6689: cdef bint db_use = False
__pyx_v_db_use = 0;
+6690: db = self._begin_db_use('reap_idle')
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_begin_db_use(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_reap_idle); if (unlikely(__pyx_t_1 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 6690, __pyx_L1_error) __pyx_v_db = __pyx_t_1;
+6691: db_use = True
__pyx_v_db_use = 1;
+6692: try:
/*try:*/ {
+6693: _ensure_doesnt_have_gil(&gs)
__pyx_t_2 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6693, __pyx_L4_error)
+6694: closed = questdb_db_reap_idle(db)
__pyx_v_closed = questdb_db_reap_idle(__pyx_v_db);
+6695: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6695, __pyx_L4_error)
+6696: return closed
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyLong_FromSize_t(__pyx_v_closed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6696, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L3_return; }
6697: finally:
+6698: _ensure_has_gil(&gs)
/*finally:*/ {
__pyx_L4_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
if ( unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
__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_XGOTREF(__pyx_t_12);
__pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
{
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6698, __pyx_L7_error)
/* … */
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6698, __pyx_L1_error)
+6699: if db_use:
if (__pyx_v_db_use) {
/* … */
}
}
__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_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
__pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
__pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
goto __pyx_L1_error;
__pyx_L7_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);
__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_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
goto __pyx_L1_error;
}
__pyx_L3_return: {
__pyx_t_12 = __pyx_r;
__pyx_r = 0;
/* … */
if (__pyx_v_db_use) {
/* … */
}
__pyx_r = __pyx_t_12;
__pyx_t_12 = 0;
goto __pyx_L0;
}
}
+6700: self._end_db_use()
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6700, __pyx_L7_error) /* … */ ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->_end_db_use(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6700, __pyx_L1_error)
6701:
+6702: cpdef close(self):
static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_21close(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 PyObject *__pyx_f_7questdb_7_client_7QuestDB_close(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self, int __pyx_skip_dispatch) {
struct questdb_db *__pyx_v_db;
PyThreadState *__pyx_v_gs;
int __pyx_v_closed;
PyObject *__pyx_r = NULL;
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (
#if !CYTHON_USE_TYPE_SLOTS
unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7questdb_7_client_QuestDB &&
__Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
#else
unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
#endif
) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6702, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7questdb_7_client_7QuestDB_21close)) {
__Pyx_XDECREF(__pyx_r);
__pyx_t_3 = NULL;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = __pyx_t_1;
__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, 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(0, 6702, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
__pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
__pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
__pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
}
#endif
}
/* … */
/* 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_16);
__Pyx_AddTraceback("questdb._client.QuestDB.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_21close(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_7QuestDB_20close, "\n Close the client and its connection pool.\n\n This method is idempotent. When called from inside one of this\n handle's own ``error_handler`` / ``connection_listener``\n callbacks, it does not wait for a concurrent ``close()`` on\n another thread to finish; the in-flight callback completes after\n that close returns.\n ");
static PyMethodDef __pyx_mdef_7questdb_7_client_7QuestDB_21close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_7QuestDB_21close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_7QuestDB_20close};
static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_21close(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("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);
if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("close", 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("close", __pyx_kwds); return NULL;}
__pyx_r = __pyx_pf_7questdb_7_client_7QuestDB_20close(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_7QuestDB_20close(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __pyx_f_7questdb_7_client_7QuestDB_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6702, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.QuestDB.close", __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_7QuestDB_21close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_QuestDB_close, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[91])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 6702, __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_QuestDB, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_18) < (0)) __PYX_ERR(0, 6702, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
6703: """
6704: Close the client and its connection pool.
6705:
6706: This method is idempotent. When called from inside one of this
6707: handle's own ``error_handler`` / ``connection_listener``
6708: callbacks, it does not wait for a concurrent ``close()`` on
6709: another thread to finish; the in-flight callback completes after
6710: that close returns.
6711: """
+6712: cdef questdb_db* db = NULL
__pyx_v_db = NULL;
+6713: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+6714: cdef bint closed = False
__pyx_v_closed = 0;
+6715: with self._state_cond:
/*with:*/ {
__pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state_cond, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6715, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_2 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state_cond, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6715, __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_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(0, 6715, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__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;
goto __pyx_L12_try_end;
__pyx_L7_error:;
__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;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client.QuestDB.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2) < 0) __PYX_ERR(0, 6715, __pyx_L9_except_error)
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_2);
__pyx_t_1 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6715, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 6715, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_14);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (__pyx_t_12 < (0)) __PYX_ERR(0, 6715, __pyx_L9_except_error)
__pyx_t_13 = (!__pyx_t_12);
if (unlikely(__pyx_t_13)) {
__Pyx_GIVEREF(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_3, __pyx_t_2);
__pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0;
__PYX_ERR(0, 6715, __pyx_L9_except_error)
}
__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;
goto __pyx_L8_exception_handled;
}
__pyx_L9_except_error:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L1_error;
__pyx_L11_try_return:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L4_return;
__pyx_L8_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
__pyx_L12_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_6) {
__pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_mstate_global->__pyx_tuple[2], NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6715, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
goto __pyx_L6;
}
__pyx_L4_return: {
__pyx_t_9 = __pyx_r;
__pyx_r = 0;
if (__pyx_t_6) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_mstate_global->__pyx_tuple[2], NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6715, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_r = __pyx_t_9;
__pyx_t_9 = 0;
goto __pyx_L0;
}
__pyx_L6:;
}
goto __pyx_L23;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L1_error;
__pyx_L23:;
}
+6716: db = self._db
__pyx_t_10 = __pyx_v_self->_db;
__pyx_v_db = __pyx_t_10;
+6717: if db == NULL:
__pyx_t_11 = (__pyx_v_db == NULL);
if (__pyx_t_11) {
/* … */
}
6718: # A caller dispatching for this handle must not wait here:
6719: # the in-flight closer joins this very thread.
+6720: if not _on_dispatch_thread_for(
__pyx_t_11 = __pyx_f_7questdb_7_client__on_dispatch_thread_for(__pyx_t_1, __pyx_t_4); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6720, __pyx_L7_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_12 = (!__pyx_t_11); if (__pyx_t_12) { /* … */ }
+6721: self._error_handler, self._connection_listener):
__pyx_t_1 = __pyx_v_self->_error_handler;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = __pyx_v_self->_connection_listener;
__Pyx_INCREF(__pyx_t_4);
+6722: while self._closing:
while (1) {
if (!__pyx_v_self->_closing) break;
+6723: if (not self._state_cond.wait(timeout=5.0)
__pyx_t_1 = __pyx_v_self->_state_cond;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL};
__pyx_t_2 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6723, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_timeout, __pyx_mstate_global->__pyx_float_5_0, __pyx_t_2, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 6723, __pyx_L7_error)
__pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_wait, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_2);
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6723, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 6723, __pyx_L7_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_13 = (!__pyx_t_11);
if (__pyx_t_13) {
} else {
__pyx_t_12 = __pyx_t_13;
goto __pyx_L18_bool_binop_done;
}
/* … */
if (__pyx_t_12) {
/* … */
}
}
+6724: and self._closing):
__pyx_t_12 = __pyx_v_self->_closing;
__pyx_L18_bool_binop_done:;
+6725: warnings.warn(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6725, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6725, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6726: 'QuestDB.close() is still waiting for a '
6727: 'concurrent close() on another thread to '
6728: 'finish.',
+6729: UserWarning)
__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[3] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_QuestDB_close_is_still_waiting_f, ((PyObject *)(((PyTypeObject*)PyExc_UserWarning)))};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __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_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6725, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+6730: return
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L11_try_return;
+6731: self._db = NULL
__pyx_v_self->_db = NULL;
+6732: self._closing = True
__pyx_v_self->_closing = 1;
+6733: try:
/*try:*/ {
+6734: with self._state_cond:
/*with:*/ {
__pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state_cond, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6734, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state_cond, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6734, __pyx_L27_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(0, 6734, __pyx_L27_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L36_try_end;
__pyx_L31_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 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;
/*except:*/ {
__Pyx_AddTraceback("questdb._client.QuestDB.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_16) < 0) __PYX_ERR(0, 6734, __pyx_L33_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_t_16);
__pyx_t_3 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_1, __pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6734, __pyx_L33_except_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 6734, __pyx_L33_except_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_14);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (__pyx_t_13 < (0)) __PYX_ERR(0, 6734, __pyx_L33_except_error)
__pyx_t_11 = (!__pyx_t_13);
if (unlikely(__pyx_t_11)) {
__Pyx_GIVEREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_16);
__pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_16 = 0;
__PYX_ERR(0, 6734, __pyx_L33_except_error)
}
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
goto __pyx_L32_exception_handled;
}
__pyx_L33_except_error:;
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7);
goto __pyx_L25_error;
__pyx_L32_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7);
__pyx_L36_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_6) {
__pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_mstate_global->__pyx_tuple[2], NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6734, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
goto __pyx_L30;
}
__pyx_L30:;
}
goto __pyx_L45;
__pyx_L27_error:;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L25_error;
__pyx_L45:;
}
+6735: while self._active_uses != 0:
while (1) {
__pyx_t_13 = (__pyx_v_self->_active_uses != 0);
if (!__pyx_t_13) break;
+6736: if (not self._state_cond.wait(timeout=5.0)
__pyx_t_4 = __pyx_v_self->_state_cond;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_4, NULL};
__pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6736, __pyx_L31_error)
__Pyx_GOTREF(__pyx_t_3);
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_timeout, __pyx_mstate_global->__pyx_float_5_0, __pyx_t_3, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 6736, __pyx_L31_error)
__pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_wait, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6736, __pyx_L31_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 6736, __pyx_L31_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_11 = (!__pyx_t_12);
if (__pyx_t_11) {
} else {
__pyx_t_13 = __pyx_t_11;
goto __pyx_L40_bool_binop_done;
}
/* … */
if (__pyx_t_13) {
/* … */
}
}
+6737: and self._active_uses != 0):
__pyx_t_11 = (__pyx_v_self->_active_uses != 0);
__pyx_t_13 = __pyx_t_11;
__pyx_L40_bool_binop_done:;
+6738: warnings.warn(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6738, __pyx_L31_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6738, __pyx_L31_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+6739: 'QuestDB.close() is waiting for '
__pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_15, 3, 31 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 37, 127); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 6739, __pyx_L31_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+6740: f'{self._active_uses} outstanding lease(s) to be '
__pyx_t_4 = __Pyx_PyUnicode_From_size_t(__pyx_v_self->_active_uses, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6740, __pyx_L31_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_15[0] = __pyx_mstate_global->__pyx_kp_u_QuestDB_close_is_waiting_for; __pyx_t_15[1] = __pyx_t_4; __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u_outstanding_lease_s_to_be_relea;
6741: 'released.',
+6742: UserWarning)
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_1))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_16, ((PyObject *)(((PyTypeObject*)PyExc_UserWarning)))};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6738, __pyx_L31_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+6743: _ensure_doesnt_have_gil(&gs)
__pyx_t_11 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6743, __pyx_L25_error)
6744: # `questdb_db_close` drains both the writer and reader free
6745: # lists in one shot (see `db.rs::DbInner::Drop`).
+6746: questdb_db_close(db)
questdb_db_close(__pyx_v_db);
+6747: closed = True
__pyx_v_closed = 1; }
6748: finally:
+6749: _ensure_has_gil(&gs)
/*finally:*/ {
/*normal exit:*/{
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6749, __pyx_L1_error)
/* … */
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6749, __pyx_L63_error)
+6750: if closed:
if (__pyx_v_closed) {
/* … */
}
/* … */
if (__pyx_v_closed) {
/* … */
}
+6751: _release_callback_refs(self._cb_refs_key)
__pyx_t_16 = __pyx_f_7questdb_7_client__release_callback_refs(__pyx_v_self->_cb_refs_key); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 6751, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; /* … */ __pyx_t_1 = __pyx_f_7questdb_7_client__release_callback_refs(__pyx_v_self->_cb_refs_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6751, __pyx_L63_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+6752: self._cb_refs_key = 0
__pyx_v_self->_cb_refs_key = 0;
/* … */
__pyx_v_self->_cb_refs_key = 0;
+6753: with self._state_cond:
/*with:*/ {
__pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state_cond, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6753, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_1 = NULL;
__pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state_cond, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6753, __pyx_L47_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(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_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
__pyx_t_16 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 6753, __pyx_L47_error)
__Pyx_GOTREF(__pyx_t_16);
}
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__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;
goto __pyx_L56_try_end;
__pyx_L51_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 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;
/*except:*/ {
__Pyx_AddTraceback("questdb._client.QuestDB.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_16, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 6753, __pyx_L53_except_error)
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_1);
__pyx_t_3 = PyTuple_Pack(3, __pyx_t_16, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6753, __pyx_L53_except_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 6753, __pyx_L53_except_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_14);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (__pyx_t_11 < (0)) __PYX_ERR(0, 6753, __pyx_L53_except_error)
__pyx_t_13 = (!__pyx_t_11);
if (unlikely(__pyx_t_13)) {
__Pyx_GIVEREF(__pyx_t_16);
__Pyx_GIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_ErrRestoreWithState(__pyx_t_16, __pyx_t_2, __pyx_t_1);
__pyx_t_16 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0;
__PYX_ERR(0, 6753, __pyx_L53_except_error)
}
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L52_exception_handled;
}
__pyx_L53_except_error:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L1_error;
__pyx_L52_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
__pyx_L56_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_6) {
__pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_mstate_global->__pyx_tuple[2], NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6753, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
goto __pyx_L50;
}
__pyx_L50:;
}
goto __pyx_L61;
__pyx_L47_error:;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L1_error;
__pyx_L61:;
}
goto __pyx_L26;
}
__pyx_L25_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_6 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_14 = 0; __pyx_t_20 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 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_ExceptionSwap(&__pyx_t_7, &__pyx_t_14, &__pyx_t_20);
if ( unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_9, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_9, &__pyx_t_8);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_8);
__Pyx_XGOTREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_20);
__pyx_t_17 = __pyx_lineno; __pyx_t_18 = __pyx_clineno; __pyx_t_19 = __pyx_filename;
{
/* … */
/*with:*/ {
__pyx_t_21 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state_cond, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 6753, __pyx_L63_error)
__Pyx_GOTREF(__pyx_t_21);
__pyx_t_2 = NULL;
__pyx_t_16 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state_cond, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 6753, __pyx_L65_error)
__Pyx_GOTREF(__pyx_t_16);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_16))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_16);
assert(__pyx_t_2);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_16);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_16, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_16, __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_16); __pyx_t_16 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6753, __pyx_L65_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
__Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
__Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
goto __pyx_L74_try_end;
__pyx_L69_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 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;
/*except:*/ {
__Pyx_AddTraceback("questdb._client.QuestDB.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_16, &__pyx_t_2) < 0) __PYX_ERR(0, 6753, __pyx_L71_except_error)
__Pyx_XGOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_2);
__pyx_t_3 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_16, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6753, __pyx_L71_except_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_25 = __Pyx_PyObject_Call(__pyx_t_21, __pyx_t_3, NULL);
__Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 6753, __pyx_L71_except_error)
__Pyx_GOTREF(__pyx_t_25);
__pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_25);
__Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
if (__pyx_t_13 < (0)) __PYX_ERR(0, 6753, __pyx_L71_except_error)
__pyx_t_11 = (!__pyx_t_13);
if (unlikely(__pyx_t_11)) {
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_16, __pyx_t_2);
__pyx_t_1 = 0; __pyx_t_16 = 0; __pyx_t_2 = 0;
__PYX_ERR(0, 6753, __pyx_L71_except_error)
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
goto __pyx_L70_exception_handled;
}
__pyx_L71_except_error:;
__Pyx_XGIVEREF(__pyx_t_22);
__Pyx_XGIVEREF(__pyx_t_23);
__Pyx_XGIVEREF(__pyx_t_24);
__Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24);
goto __pyx_L63_error;
__pyx_L70_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_22);
__Pyx_XGIVEREF(__pyx_t_23);
__Pyx_XGIVEREF(__pyx_t_24);
__Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24);
__pyx_L74_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_21) {
__pyx_t_24 = __Pyx_PyObject_Call(__pyx_t_21, __pyx_mstate_global->__pyx_tuple[2], NULL);
__Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 6753, __pyx_L63_error)
__Pyx_GOTREF(__pyx_t_24);
__Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
}
goto __pyx_L68;
}
__pyx_L68:;
}
goto __pyx_L79;
__pyx_L65_error:;
__Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
goto __pyx_L63_error;
__pyx_L79:;
}
}
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_14, __pyx_t_20);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ErrRestore(__pyx_t_6, __pyx_t_9, __pyx_t_8);
__pyx_t_6 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_14 = 0; __pyx_t_20 = 0;
__pyx_lineno = __pyx_t_17; __pyx_clineno = __pyx_t_18; __pyx_filename = __pyx_t_19;
goto __pyx_L1_error;
__pyx_L63_error:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_14, __pyx_t_20);
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_7 = 0; __pyx_t_14 = 0; __pyx_t_20 = 0;
goto __pyx_L1_error;
}
__pyx_L26:;
}
+6754: if closed:
if (__pyx_v_closed) {
/* … */
goto __pyx_L57;
}
/* … */
if (__pyx_v_closed) {
/* … */
goto __pyx_L75;
}
+6755: self._conf_str = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_conf_str); __Pyx_DECREF(__pyx_v_self->_conf_str); __pyx_v_self->_conf_str = Py_None; /* … */ __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_conf_str); __Pyx_DECREF(__pyx_v_self->_conf_str); __pyx_v_self->_conf_str = Py_None;
6756: else:
+6757: self._db = db
/*else*/ {
__pyx_v_self->_db = __pyx_v_db;
}
__pyx_L57:;
/* … */
/*else*/ {
__pyx_v_self->_db = __pyx_v_db;
}
__pyx_L75:;
+6758: self._closing = False
__pyx_v_self->_closing = 0;
/* … */
__pyx_v_self->_closing = 0;
+6759: self._state_cond.notify_all()
__pyx_t_2 = __pyx_v_self->_state_cond;
__Pyx_INCREF(__pyx_t_2);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
__pyx_t_16 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_notify_all, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 6759, __pyx_L51_error)
__Pyx_GOTREF(__pyx_t_16);
}
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
/* … */
__pyx_t_16 = __pyx_v_self->_state_cond;
__Pyx_INCREF(__pyx_t_16);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_16, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_notify_all, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6759, __pyx_L69_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6760:
+6761: def __exit__(self, exc_type, _exc_val, _exc_tb):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_23__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_7QuestDB_23__exit__ = {"__exit__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_7QuestDB_23__exit__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_7QuestDB_23__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_val = 0;
CYTHON_UNUSED PyObject *__pyx_v__exc_tb = 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_val_2,&__pyx_mstate_global->__pyx_n_u_exc_tb_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(0, 6761, __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(0, 6761, __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(0, 6761, __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(0, 6761, __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(0, 6761, __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(0, 6761, __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(0, 6761, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 6761, __pyx_L3_error)
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 6761, __pyx_L3_error)
}
__pyx_v_exc_type = values[0];
__pyx_v__exc_val = values[1];
__pyx_v__exc_tb = values[2];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 6761, __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.QuestDB.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_7QuestDB_22__exit__(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self), __pyx_v_exc_type, __pyx_v__exc_val, __pyx_v__exc_tb);
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_7QuestDB_22__exit__(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exc_type, CYTHON_UNUSED PyObject *__pyx_v__exc_val, CYTHON_UNUSED PyObject *__pyx_v__exc_tb) {
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.QuestDB.__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_7QuestDB_23__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_QuestDB___exit, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[92])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 6761, __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_QuestDB, __pyx_mstate_global->__pyx_n_u_exit, __pyx_t_18) < (0)) __PYX_ERR(0, 6761, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+6762: self.close()
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6763:
+6764: def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_7questdb_7_client_7QuestDB_25__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7questdb_7_client_7QuestDB_25__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_7QuestDB_24__dealloc__(((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
}
static void __pyx_pf_7questdb_7_client_7QuestDB_24__dealloc__(struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_self) {
struct questdb_db *__pyx_v_db;
PyThreadState *__pyx_v_gs;
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_WriteUnraisable("questdb._client.QuestDB.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_RefNannyFinishContext();
}
6765: cdef questdb_db* db
+6766: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+6767: if self._db != NULL:
__pyx_t_1 = (__pyx_v_self->_db != NULL);
if (__pyx_t_1) {
/* … */
}
+6768: db = self._db
__pyx_t_2 = __pyx_v_self->_db;
__pyx_v_db = __pyx_t_2;
+6769: self._db = NULL
__pyx_v_self->_db = NULL;
+6770: _ensure_doesnt_have_gil(&gs)
__pyx_t_1 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6770, __pyx_L1_error)
+6771: questdb_db_close(db)
questdb_db_close(__pyx_v_db);
+6772: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6772, __pyx_L1_error)
+6773: _release_callback_refs(self._cb_refs_key)
__pyx_t_3 = __pyx_f_7questdb_7_client__release_callback_refs(__pyx_v_self->_cb_refs_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+6774: self._cb_refs_key = 0
__pyx_v_self->_cb_refs_key = 0;
6775:
6776:
+6777: @cython.no_gc_clear
struct __pyx_vtabstruct_7questdb_7_client_Sender {
__pyx_t_7questdb_7_client_void_int (*_set_sender_fields)(struct __pyx_obj_7questdb_7_client_Sender *, struct qdb_pystr_buf *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *);
PyObject *(*_new_buffer_for_sender)(struct __pyx_obj_7questdb_7_client_Sender *);
PyObject *(*flush)(struct __pyx_obj_7questdb_7_client_Sender *, int __pyx_skip_dispatch, struct __pyx_opt_args_7questdb_7_client_6Sender_flush *__pyx_optional_args);
__pyx_t_7questdb_7_client_void_int (*_check_not_in_own_callback)(struct __pyx_obj_7questdb_7_client_Sender *, PyObject *);
__pyx_t_7questdb_7_client_void_int (*_check_qwp_ws)(struct __pyx_obj_7questdb_7_client_Sender *, PyObject *);
__pyx_t_7questdb_7_client_void_int (*_check_buffer_protocol)(struct __pyx_obj_7questdb_7_client_Sender *, struct __pyx_obj_7questdb_7_client_Buffer *);
PyObject *(*_close)(struct __pyx_obj_7questdb_7_client_Sender *);
PyObject *(*close)(struct __pyx_obj_7questdb_7_client_Sender *, int __pyx_skip_dispatch, struct __pyx_opt_args_7questdb_7_client_6Sender_close *__pyx_optional_args);
};
static struct __pyx_vtabstruct_7questdb_7_client_Sender *__pyx_vtabptr_7questdb_7_client_Sender;
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client_6Sender__new_buffer_for_sender(struct __pyx_obj_7questdb_7_client_Sender *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Sender__check_not_in_own_callback(struct __pyx_obj_7questdb_7_client_Sender *, PyObject *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Sender__check_qwp_ws(struct __pyx_obj_7questdb_7_client_Sender *, PyObject *);
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Sender__check_buffer_protocol(struct __pyx_obj_7questdb_7_client_Sender *, struct __pyx_obj_7questdb_7_client_Buffer *);
6778: cdef class Sender:
6779: """
6780: Ingest data into QuestDB over a single connection.
6781:
6782: This is the connection-level API: one sender drives exactly one
6783: connection (ILP/HTTP, ILP/TCP, QWP/UDP, or a single QWP/WebSocket
6784: connection) and carries the point-to-point capabilities the
6785: deployment-level handle does not: HTTP transactions, UDP datagrams,
6786: and manual ws progress and buffer control. For pooled ingestion and
6787: queries, prefer :func:`questdb.connect`.
6788:
6789: See the :ref:`sender` documentation for more information.
6790: """
6791:
6792: # We need the Buffer held by a Sender can hold a weakref to its Sender.
6793: # This avoids a circular reference that requires the GC to clean up.
6794: cdef object __weakref__
6795:
6796: cdef line_sender_protocol _c_protocol
6797: cdef line_sender_opts* _opts
6798: cdef line_sender* _impl
6799: cdef Buffer _buffer
6800: cdef object _error_handler
6801: cdef object _connection_listener
6802: cdef auto_flush_mode_t _auto_flush_mode
6803: cdef int64_t* _last_flush_ms
6804: cdef size_t _init_buf_size
6805: cdef bint _in_txn
6806: cdef int64_t _slot_id
6807: # A clone of the fully-configured opts for QWP/WebSocket senders, retained
6808: # so dataframe() can open a poolless direct columnar connection per call
6809: # (carrying auth/TLS). NULL for other protocols.
6810: cdef line_sender_opts* _qwp_ws_opts
6811: cdef size_t _cb_refs_key
6812:
+6813: cdef void_int _set_sender_fields(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Sender__set_sender_fields(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, struct qdb_pystr_buf *__pyx_v_b, PyObject *__pyx_v_protocol, PyObject *__pyx_v_bind_interface, PyObject *__pyx_v_username, PyObject *__pyx_v_password, PyObject *__pyx_v_token, PyObject *__pyx_v_token_x, PyObject *__pyx_v_token_y, PyObject *__pyx_v_auth_timeout, PyObject *__pyx_v_tls_verify, PyObject *__pyx_v_tls_ca, PyObject *__pyx_v_tls_roots, PyObject *__pyx_v_tls_roots_password, PyObject *__pyx_v_max_buf_size, PyObject *__pyx_v_retry_timeout, PyObject *__pyx_v_retry_max_backoff, PyObject *__pyx_v_request_min_throughput, PyObject *__pyx_v_request_timeout, PyObject *__pyx_v_auto_flush, PyObject *__pyx_v_auto_flush_rows, PyObject *__pyx_v_auto_flush_bytes, PyObject *__pyx_v_auto_flush_interval, PyObject *__pyx_v_max_datagram_size, PyObject *__pyx_v_multicast_ttl, PyObject *__pyx_v_protocol_version, PyObject *__pyx_v_qwp_ws_progress, PyObject *__pyx_v_error_handler, PyObject *__pyx_v_connection_listener, PyObject *__pyx_v_connection_event_inbox_capacity, PyObject *__pyx_v_init_buf_size, PyObject *__pyx_v_max_name_len) {
struct line_sender_error *__pyx_v_err;
PyObject *__pyx_v_user_agent = 0;
struct line_sender_utf8 __pyx_v_c_user_agent;
struct line_sender_utf8 __pyx_v_c_bind_interface;
struct line_sender_utf8 __pyx_v_c_username;
struct line_sender_utf8 __pyx_v_c_password;
struct line_sender_utf8 __pyx_v_c_token;
struct line_sender_utf8 __pyx_v_c_token_x;
struct line_sender_utf8 __pyx_v_c_token_y;
uint64_t __pyx_v_c_auth_timeout;
int __pyx_v_c_tls_verify;
enum line_sender_ca __pyx_v_c_tls_ca;
struct line_sender_utf8 __pyx_v_c_tls_roots;
struct line_sender_utf8 __pyx_v_c_tls_roots_password;
uint64_t __pyx_v_c_max_buf_size;
uint64_t __pyx_v_c_retry_timeout;
uint64_t __pyx_v_c_retry_max_backoff;
uint64_t __pyx_v_c_request_min_throughput;
uint64_t __pyx_v_c_request_timeout;
size_t __pyx_v_c_max_name_len;
size_t __pyx_v_c_max_datagram_size;
uint32_t __pyx_v_c_multicast_ttl;
enum line_sender_qwpws_progress __pyx_v_c_qwp_ws_progress;
__pyx_t_7questdb_7_client_void_int __pyx_r;
__Pyx_INCREF(__pyx_v_tls_roots);
__Pyx_INCREF(__pyx_v_error_handler);
/* … */
/* 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_XDECREF(__pyx_t_18);
__Pyx_XDECREF(__pyx_t_19);
__Pyx_XDECREF(__pyx_t_20);
__Pyx_XDECREF(__pyx_t_21);
__Pyx_AddTraceback("questdb._client.Sender._set_sender_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_user_agent);
__Pyx_XDECREF(__pyx_v_tls_roots);
__Pyx_XDECREF(__pyx_v_error_handler);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
6814: self,
6815: qdb_pystr_buf* b,
6816: object protocol,
6817: str bind_interface,
6818: str username,
6819: str password,
6820: str token,
6821: str token_x,
6822: str token_y,
6823: object auth_timeout,
6824: object tls_verify,
6825: object tls_ca,
6826: object tls_roots,
6827: object tls_roots_password,
6828: object max_buf_size,
6829: object retry_timeout,
6830: object retry_max_backoff,
6831: object request_min_throughput,
6832: object request_timeout,
6833: object auto_flush,
6834: object auto_flush_rows,
6835: object auto_flush_bytes,
6836: object auto_flush_interval,
6837: object max_datagram_size,
6838: object multicast_ttl,
6839: object protocol_version,
6840: object qwp_ws_progress,
6841: object error_handler,
6842: object connection_listener,
6843: object connection_event_inbox_capacity,
6844: object init_buf_size,
6845: object max_name_len) except -1:
6846: """
6847: Set optional parameters for the sender.
6848: """
+6849: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+6850: cdef str user_agent = 'questdb/python/' + VERSION
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_VERSION); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_questdb_python, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6850, __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(0, 6850, __pyx_L1_error) __pyx_v_user_agent = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
6851: cdef line_sender_utf8 c_user_agent
6852: cdef line_sender_utf8 c_bind_interface
6853: cdef line_sender_utf8 c_username
6854: cdef line_sender_utf8 c_password
6855: cdef line_sender_utf8 c_token
6856: cdef line_sender_utf8 c_token_x
6857: cdef line_sender_utf8 c_token_y
6858: cdef uint64_t c_auth_timeout
6859: cdef bint c_tls_verify
6860: cdef line_sender_ca c_tls_ca
6861: cdef line_sender_utf8 c_tls_roots
6862: cdef line_sender_utf8 c_tls_roots_password
6863: cdef uint64_t c_max_buf_size
6864: cdef uint64_t c_retry_timeout
6865: cdef uint64_t c_retry_max_backoff
6866: cdef uint64_t c_request_min_throughput
6867: cdef uint64_t c_request_timeout
6868: cdef size_t c_max_name_len
+6869: cdef size_t c_max_datagram_size = 0
__pyx_v_c_max_datagram_size = 0;
+6870: cdef uint32_t c_multicast_ttl = 0
__pyx_v_c_multicast_ttl = 0;
6871: cdef line_sender_qwpws_progress c_qwp_ws_progress
6872:
+6873: self._c_protocol = protocol.c_value
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_protocol, __pyx_mstate_global->__pyx_n_u_c_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = ((enum line_sender_protocol)__Pyx_PyLong_As_enum__line_sender_protocol(__pyx_t_2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6873, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_self->_c_protocol = __pyx_t_3;
6874:
6875: # It's OK to override this setting.
+6876: str_to_utf8(b, <PyObject*>user_agent, &c_user_agent)
__pyx_t_4 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, ((PyObject *)__pyx_v_user_agent), (&__pyx_v_c_user_agent)); if (unlikely(__pyx_t_4 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 6876, __pyx_L1_error)
+6877: if not line_sender_opts_user_agent(self._opts, c_user_agent, &err):
__pyx_t_5 = (!line_sender_opts_user_agent(__pyx_v_self->_opts, __pyx_v_c_user_agent, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
+6878: raise 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(0, 6878, __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(0, 6878, __pyx_L1_error)
6879:
+6880: if bind_interface is not None:
__pyx_t_5 = (__pyx_v_bind_interface != ((PyObject*)Py_None));
if (__pyx_t_5) {
/* … */
}
+6881: str_to_utf8(b, <PyObject*>bind_interface, &c_bind_interface)
__pyx_t_4 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, ((PyObject *)__pyx_v_bind_interface), (&__pyx_v_c_bind_interface)); if (unlikely(__pyx_t_4 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 6881, __pyx_L1_error)
+6882: if not line_sender_opts_bind_interface(
__pyx_t_5 = (!line_sender_opts_bind_interface(__pyx_v_self->_opts, __pyx_v_c_bind_interface, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
6883: self._opts, c_bind_interface, &err):
+6884: raise 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(0, 6884, __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(0, 6884, __pyx_L1_error)
6885:
+6886: if max_datagram_size is not None:
__pyx_t_5 = (__pyx_v_max_datagram_size != Py_None);
if (__pyx_t_5) {
/* … */
}
+6887: if not _is_qwp_udp_protocol(self._c_protocol):
__pyx_t_5 = __pyx_f_7questdb_7_client__is_qwp_udp_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_5 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6887, __pyx_L1_error) __pyx_t_6 = (!__pyx_t_5); if (unlikely(__pyx_t_6)) { /* … */ }
+6888: raise QuestDBError(
__pyx_t_1 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6888, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+6889: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7); assert(__pyx_t_1); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_9, __pyx_mstate_global->__pyx_kp_u_max_datagram_size_is_only_suppo}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6888, __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(0, 6888, __pyx_L1_error)
6890: '"max_datagram_size" is only supported for QWP/UDP senders.')
+6891: if not isinstance(max_datagram_size, int) or isinstance(max_datagram_size, bool):
__pyx_t_5 = PyLong_Check(__pyx_v_max_datagram_size); __pyx_t_11 = (!__pyx_t_5); if (!__pyx_t_11) { } else { __pyx_t_6 = __pyx_t_11; goto __pyx_L9_bool_binop_done; } __pyx_t_11 = __Pyx_TypeCheck(__pyx_v_max_datagram_size, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool); __pyx_t_6 = __pyx_t_11; __pyx_L9_bool_binop_done:; if (unlikely(__pyx_t_6)) { /* … */ }
+6892: raise TypeError(
__pyx_t_7 = NULL;
+6893: '"max_datagram_size" must be a positive int, '
__pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_max_datagram_size_must_be_a_pos, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_9}; __pyx_t_2 = __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_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6892, __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(0, 6892, __pyx_L1_error)
+6894: f'not {_fqn(type(max_datagram_size))}')
__pyx_t_9 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_max_datagram_size)))); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+6895: if max_datagram_size <= 0 or max_datagram_size > 65507:
__pyx_t_2 = PyObject_RichCompare(__pyx_v_max_datagram_size, __pyx_mstate_global->__pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6895, __pyx_L1_error) __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 6895, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!__pyx_t_11) { } else { __pyx_t_6 = __pyx_t_11; goto __pyx_L12_bool_binop_done; } __pyx_t_2 = PyObject_RichCompare(__pyx_v_max_datagram_size, __pyx_mstate_global->__pyx_int_65507, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6895, __pyx_L1_error) __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 6895, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = __pyx_t_11; __pyx_L12_bool_binop_done:; if (unlikely(__pyx_t_6)) { /* … */ }
+6896: raise ValueError(
__pyx_t_9 = NULL;
+6897: '"max_datagram_size" must be an int between 1 and 65507, '
__pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_max_datagram_size_must_be_an_in, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_10 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_1}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6896, __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(0, 6896, __pyx_L1_error)
+6898: f'not {max_datagram_size!r}')
__pyx_t_7 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_max_datagram_size), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7);
+6899: c_max_datagram_size = max_datagram_size
__pyx_t_10 = __Pyx_PyLong_As_size_t(__pyx_v_max_datagram_size); if (unlikely((__pyx_t_10 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 6899, __pyx_L1_error) __pyx_v_c_max_datagram_size = __pyx_t_10;
+6900: if not line_sender_opts_max_datagram_size(
__pyx_t_6 = (!line_sender_opts_max_datagram_size(__pyx_v_self->_opts, __pyx_v_c_max_datagram_size, (&__pyx_v_err)));
if (unlikely(__pyx_t_6)) {
/* … */
}
6901: self._opts, c_max_datagram_size, &err):
+6902: raise 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(0, 6902, __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(0, 6902, __pyx_L1_error)
6903:
+6904: if multicast_ttl is not None:
__pyx_t_6 = (__pyx_v_multicast_ttl != Py_None);
if (__pyx_t_6) {
/* … */
}
+6905: if not _is_qwp_udp_protocol(self._c_protocol):
__pyx_t_6 = __pyx_f_7questdb_7_client__is_qwp_udp_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_6 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6905, __pyx_L1_error) __pyx_t_11 = (!__pyx_t_6); if (unlikely(__pyx_t_11)) { /* … */ }
+6906: raise QuestDBError(
__pyx_t_1 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6906, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
+6907: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6907, __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(0, 6907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_9); assert(__pyx_t_1); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_9, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_8, __pyx_mstate_global->__pyx_kp_u_multicast_ttl_is_only_supported}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6906, __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(0, 6906, __pyx_L1_error)
6908: '"multicast_ttl" is only supported for QWP/UDP senders.')
+6909: if not isinstance(multicast_ttl, int) or isinstance(multicast_ttl, bool):
__pyx_t_6 = PyLong_Check(__pyx_v_multicast_ttl); __pyx_t_5 = (!__pyx_t_6); if (!__pyx_t_5) { } else { __pyx_t_11 = __pyx_t_5; goto __pyx_L18_bool_binop_done; } __pyx_t_5 = __Pyx_TypeCheck(__pyx_v_multicast_ttl, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool); __pyx_t_11 = __pyx_t_5; __pyx_L18_bool_binop_done:; if (unlikely(__pyx_t_11)) { /* … */ }
+6910: raise TypeError(
__pyx_t_9 = NULL;
+6911: '"multicast_ttl" must be an int (0-255), '
__pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_multicast_ttl_must_be_an_int_0, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_8}; __pyx_t_2 = __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_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6910, __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(0, 6910, __pyx_L1_error)
+6912: f'not {_fqn(type(multicast_ttl))}')
__pyx_t_8 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_multicast_ttl)))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6912, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6912, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+6913: if multicast_ttl < 0 or multicast_ttl > 255:
__pyx_t_2 = PyObject_RichCompare(__pyx_v_multicast_ttl, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6913, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6913, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!__pyx_t_5) { } else { __pyx_t_11 = __pyx_t_5; goto __pyx_L21_bool_binop_done; } __pyx_t_2 = PyObject_RichCompare(__pyx_v_multicast_ttl, __pyx_mstate_global->__pyx_int_255, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6913, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6913, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = __pyx_t_5; __pyx_L21_bool_binop_done:; if (unlikely(__pyx_t_11)) { /* … */ }
+6914: raise ValueError(
__pyx_t_8 = NULL;
+6915: '"multicast_ttl" must be an int (0-255), '
__pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_multicast_ttl_must_be_an_int_0, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_10 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_1}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __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_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6914, __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(0, 6914, __pyx_L1_error)
+6916: f'not {multicast_ttl!r}')
__pyx_t_9 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_multicast_ttl), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9);
+6917: c_multicast_ttl = multicast_ttl
__pyx_t_12 = __Pyx_PyLong_As_uint32_t(__pyx_v_multicast_ttl); if (unlikely((__pyx_t_12 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6917, __pyx_L1_error) __pyx_v_c_multicast_ttl = __pyx_t_12;
+6918: if not line_sender_opts_multicast_ttl(
__pyx_t_11 = (!line_sender_opts_multicast_ttl(__pyx_v_self->_opts, __pyx_v_c_multicast_ttl, (&__pyx_v_err)));
if (unlikely(__pyx_t_11)) {
/* … */
}
6919: self._opts, c_multicast_ttl, &err):
+6920: raise 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(0, 6920, __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(0, 6920, __pyx_L1_error)
6921:
+6922: if qwp_ws_progress is not None:
__pyx_t_11 = (__pyx_v_qwp_ws_progress != Py_None);
if (__pyx_t_11) {
/* … */
}
+6923: if not _is_qwp_ws_protocol(self._c_protocol):
__pyx_t_11 = __pyx_f_7questdb_7_client__is_qwp_ws_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6923, __pyx_L1_error) __pyx_t_5 = (!__pyx_t_11); if (unlikely(__pyx_t_5)) { /* … */ }
+6924: raise QuestDBError(
__pyx_t_1 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6924, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
+6925: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6925, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6925, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8); assert(__pyx_t_1); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_8, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_7, __pyx_mstate_global->__pyx_kp_u_qwp_ws_progress_is_only_support}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__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_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6924, __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(0, 6924, __pyx_L1_error)
6926: '"qwp_ws_progress" is only supported for QWP/WebSocket senders.')
+6927: 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_L31_try_end;
__pyx_L26_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 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_L28_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_L31_try_end:;
}
+6928: c_qwp_ws_progress = QwpWsProgress.parse(qwp_ws_progress).c_value
__pyx_t_8 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QwpWsProgress); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6928, __pyx_L26_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_parse); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6928, __pyx_L26_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_10 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_1))) {
__pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
assert(__pyx_t_8);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
__pyx_t_10 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_qwp_ws_progress};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __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_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6928, __pyx_L26_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_c_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6928, __pyx_L26_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_16 = ((enum line_sender_qwpws_progress)__Pyx_PyLong_As_enum__line_sender_qwpws_progress(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 6928, __pyx_L26_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_c_qwp_ws_progress = __pyx_t_16;
+6929: except ValueError:
__pyx_t_17 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError)))); if (__pyx_t_17) { __Pyx_AddTraceback("questdb._client.Sender._set_sender_fields", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_8) < 0) __PYX_ERR(0, 6929, __pyx_L28_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_8);
+6930: raise QuestDBError(
__pyx_t_9 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 6930, __pyx_L28_except_error)
__Pyx_GOTREF(__pyx_t_18);
+6931: QuestDBErrorCode.ConfigError,
__Pyx_GetModuleGlobalName(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 6931, __pyx_L28_except_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 6931, __pyx_L28_except_error) __Pyx_GOTREF(__pyx_t_20); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+6932: f'"qwp_ws_progress" has invalid value: {qwp_ws_progress!r}')
__pyx_t_19 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_qwp_ws_progress), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 6932, __pyx_L28_except_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_21 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_qwp_ws_progress_has_invalid_val, __pyx_t_19); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 6932, __pyx_L28_except_error) __Pyx_GOTREF(__pyx_t_21); __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_18))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_18); assert(__pyx_t_9); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_18); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_18, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_20, __pyx_t_21}; __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_18, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6930, __pyx_L28_except_error) __Pyx_GOTREF(__pyx_t_7); } __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_ERR(0, 6930, __pyx_L28_except_error) } goto __pyx_L28_except_error;
+6933: if not line_sender_opts_qwpws_progress(
__pyx_t_5 = (!line_sender_opts_qwpws_progress(__pyx_v_self->_opts, __pyx_v_c_qwp_ws_progress, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
6934: self._opts, c_qwp_ws_progress, &err):
+6935: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6935, __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(0, 6935, __pyx_L1_error)
6936:
+6937: if error_handler is not None and not callable(error_handler):
__pyx_t_11 = (__pyx_v_error_handler != Py_None);
if (__pyx_t_11) {
} else {
__pyx_t_5 = __pyx_t_11;
goto __pyx_L36_bool_binop_done;
}
__pyx_t_11 = __Pyx_PyCallable_Check(__pyx_v_error_handler); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 6937, __pyx_L1_error)
__pyx_t_6 = (!__pyx_t_11);
__pyx_t_5 = __pyx_t_6;
__pyx_L36_bool_binop_done:;
if (unlikely(__pyx_t_5)) {
/* … */
}
+6938: raise TypeError(
__pyx_t_2 = NULL;
+6939: '"error_handler" must be callable or None, '
__pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_error_handler_must_be_callable, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6939, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_10 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_1}; __pyx_t_8 = __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_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6938, __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(0, 6938, __pyx_L1_error)
+6940: f'not {_fqn(type(error_handler))}')
__pyx_t_1 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_error_handler)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6940, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyUnicode_Unicode(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6940, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+6941: if error_handler is not None and not _is_qwp_ws_protocol(self._c_protocol):
__pyx_t_6 = (__pyx_v_error_handler != Py_None);
if (__pyx_t_6) {
} else {
__pyx_t_5 = __pyx_t_6;
goto __pyx_L39_bool_binop_done;
}
__pyx_t_6 = __pyx_f_7questdb_7_client__is_qwp_ws_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_6 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6941, __pyx_L1_error)
__pyx_t_11 = (!__pyx_t_6);
__pyx_t_5 = __pyx_t_11;
__pyx_L39_bool_binop_done:;
if (unlikely(__pyx_t_5)) {
/* … */
}
+6942: raise QuestDBError(
__pyx_t_1 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6942, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+6943: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6943, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 6943, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_10 = 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_10 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_18, __pyx_mstate_global->__pyx_kp_u_error_handler_is_only_supported}; __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6942, __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(0, 6942, __pyx_L1_error)
6944: 'error_handler is only supported for QWP/WebSocket senders.')
+6945: if _is_qwp_ws_protocol(self._c_protocol):
__pyx_t_5 = __pyx_f_7questdb_7_client__is_qwp_ws_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_5 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6945, __pyx_L1_error) if (__pyx_t_5) { /* … */ }
+6946: if error_handler is None:
__pyx_t_5 = (__pyx_v_error_handler == Py_None);
if (__pyx_t_5) {
/* … */
}
+6947: error_handler = _default_error_handler
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_default_error_handler); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6947, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF_SET(__pyx_v_error_handler, __pyx_t_8); __pyx_t_8 = 0;
+6948: self._error_handler = error_handler
__Pyx_INCREF(__pyx_v_error_handler); __Pyx_GIVEREF(__pyx_v_error_handler); __Pyx_GOTREF(__pyx_v_self->_error_handler); __Pyx_DECREF(__pyx_v_self->_error_handler); __pyx_v_self->_error_handler = __pyx_v_error_handler;
+6949: if not line_sender_opts_qwpws_error_handler(
__pyx_t_5 = (!line_sender_opts_qwpws_error_handler(__pyx_v_self->_opts, __pyx_f_7questdb_7_client__sender_error_trampoline, ((void *)__pyx_v_self->_error_handler), (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
6950: self._opts,
6951: _sender_error_trampoline,
6952: <void*>self._error_handler,
6953: &err):
+6954: self._error_handler = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_error_handler); __Pyx_DECREF(__pyx_v_self->_error_handler); __pyx_v_self->_error_handler = Py_None;
+6955: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6955, __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(0, 6955, __pyx_L1_error)
6956:
+6957: if connection_listener is not None and not callable(
__pyx_t_11 = (__pyx_v_connection_listener != Py_None);
if (__pyx_t_11) {
} else {
__pyx_t_5 = __pyx_t_11;
goto __pyx_L45_bool_binop_done;
}
/* … */
__pyx_t_11 = __Pyx_PyCallable_Check(__pyx_v_connection_listener); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 6957, __pyx_L1_error)
/* … */
__pyx_t_6 = (!__pyx_t_11);
__pyx_t_5 = __pyx_t_6;
__pyx_L45_bool_binop_done:;
if (unlikely(__pyx_t_5)) {
/* … */
}
6958: connection_listener):
+6959: raise TypeError(
__pyx_t_2 = NULL;
+6960: '"connection_listener" must be callable or None, '
__pyx_t_18 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_connection_listener_must_be_cal, __pyx_t_1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 6960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_18}; __pyx_t_8 = __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_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6959, __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(0, 6959, __pyx_L1_error)
+6961: f'not {_fqn(type(connection_listener))}')
__pyx_t_18 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_connection_listener)))); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 6961, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_t_18); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6961, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+6962: if connection_listener is not None and not _is_qwp_ws_protocol(
__pyx_t_6 = (__pyx_v_connection_listener != Py_None);
if (__pyx_t_6) {
} else {
__pyx_t_5 = __pyx_t_6;
goto __pyx_L48_bool_binop_done;
}
/* … */
__pyx_t_6 = __pyx_f_7questdb_7_client__is_qwp_ws_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_6 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 6962, __pyx_L1_error)
/* … */
__pyx_t_11 = (!__pyx_t_6);
__pyx_t_5 = __pyx_t_11;
__pyx_L48_bool_binop_done:;
if (unlikely(__pyx_t_5)) {
/* … */
}
6963: self._c_protocol):
+6964: raise QuestDBError(
__pyx_t_18 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6964, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+6965: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_18 = PyMethod_GET_SELF(__pyx_t_2); assert(__pyx_t_18); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_18); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_2, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_18, __pyx_t_7, __pyx_mstate_global->__pyx_kp_u_connection_listener_is_only_supp}; __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6964, __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(0, 6964, __pyx_L1_error)
6966: 'connection_listener is only supported for QWP/WebSocket '
6967: 'senders.')
+6968: if connection_listener is not None:
__pyx_t_5 = (__pyx_v_connection_listener != Py_None);
if (__pyx_t_5) {
/* … */
}
6969: # The Sender owns the only strong reference the trampoline
6970: # relies on; the dispatcher joins its thread when the sender
6971: # closes, so no delivery outlives this reference.
+6972: self._connection_listener = connection_listener
__Pyx_INCREF(__pyx_v_connection_listener); __Pyx_GIVEREF(__pyx_v_connection_listener); __Pyx_GOTREF(__pyx_v_self->_connection_listener); __Pyx_DECREF(__pyx_v_self->_connection_listener); __pyx_v_self->_connection_listener = __pyx_v_connection_listener;
+6973: if not line_sender_opts_connection_event_handler(
__pyx_t_5 = (!line_sender_opts_connection_event_handler(__pyx_v_self->_opts, __pyx_f_7questdb_7_client__connection_event_trampoline, ((void *)__pyx_v_self->_connection_listener), ((size_t)__pyx_t_10), (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
6974: self._opts,
6975: _connection_event_trampoline,
6976: <void*>self._connection_listener,
+6977: <size_t>(connection_event_inbox_capacity or 0),
__pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_connection_event_inbox_capacity); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6977, __pyx_L1_error) if (!__pyx_t_5) { } else { __pyx_t_22 = __Pyx_PyLong_As_size_t(__pyx_v_connection_event_inbox_capacity); if (unlikely((__pyx_t_22 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 6977, __pyx_L1_error) __pyx_t_10 = __pyx_t_22; goto __pyx_L52_bool_binop_done; } __pyx_t_10 = 0; __pyx_L52_bool_binop_done:;
6978: &err):
+6979: self._connection_listener = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_connection_listener); __Pyx_DECREF(__pyx_v_self->_connection_listener); __pyx_v_self->_connection_listener = Py_None;
+6980: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6980, __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(0, 6980, __pyx_L1_error)
6981:
+6982: if username is not None:
__pyx_t_5 = (__pyx_v_username != ((PyObject*)Py_None));
if (__pyx_t_5) {
/* … */
}
+6983: str_to_utf8(b, <PyObject*>username, &c_username)
__pyx_t_4 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, ((PyObject *)__pyx_v_username), (&__pyx_v_c_username)); if (unlikely(__pyx_t_4 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 6983, __pyx_L1_error)
+6984: if not line_sender_opts_username(self._opts, c_username, &err):
__pyx_t_5 = (!line_sender_opts_username(__pyx_v_self->_opts, __pyx_v_c_username, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
+6985: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6985, __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(0, 6985, __pyx_L1_error)
6986:
+6987: if password is not None:
__pyx_t_5 = (__pyx_v_password != ((PyObject*)Py_None));
if (__pyx_t_5) {
/* … */
}
+6988: str_to_utf8(b, <PyObject*>password, &c_password)
__pyx_t_4 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, ((PyObject *)__pyx_v_password), (&__pyx_v_c_password)); if (unlikely(__pyx_t_4 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 6988, __pyx_L1_error)
+6989: if not line_sender_opts_password(self._opts, c_password, &err):
__pyx_t_5 = (!line_sender_opts_password(__pyx_v_self->_opts, __pyx_v_c_password, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
+6990: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6990, __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(0, 6990, __pyx_L1_error)
6991:
+6992: if token is not None:
__pyx_t_5 = (__pyx_v_token != ((PyObject*)Py_None));
if (__pyx_t_5) {
/* … */
}
+6993: str_to_utf8(b, <PyObject*>token, &c_token)
__pyx_t_4 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, ((PyObject *)__pyx_v_token), (&__pyx_v_c_token)); if (unlikely(__pyx_t_4 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 6993, __pyx_L1_error)
+6994: if not line_sender_opts_token(self._opts, c_token, &err):
__pyx_t_5 = (!line_sender_opts_token(__pyx_v_self->_opts, __pyx_v_c_token, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
+6995: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6995, __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(0, 6995, __pyx_L1_error)
6996:
+6997: if token_x is not None:
__pyx_t_5 = (__pyx_v_token_x != ((PyObject*)Py_None));
if (__pyx_t_5) {
/* … */
}
+6998: str_to_utf8(b, <PyObject*>token_x, &c_token_x)
__pyx_t_4 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, ((PyObject *)__pyx_v_token_x), (&__pyx_v_c_token_x)); if (unlikely(__pyx_t_4 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 6998, __pyx_L1_error)
+6999: if not line_sender_opts_token_x(self._opts, c_token_x, &err):
__pyx_t_5 = (!line_sender_opts_token_x(__pyx_v_self->_opts, __pyx_v_c_token_x, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
+7000: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7000, __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(0, 7000, __pyx_L1_error)
7001:
+7002: if token_y is not None:
__pyx_t_5 = (__pyx_v_token_y != ((PyObject*)Py_None));
if (__pyx_t_5) {
/* … */
}
+7003: str_to_utf8(b, <PyObject*>token_y, &c_token_y)
__pyx_t_4 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, ((PyObject *)__pyx_v_token_y), (&__pyx_v_c_token_y)); if (unlikely(__pyx_t_4 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 7003, __pyx_L1_error)
+7004: if not line_sender_opts_token_y(self._opts, c_token_y, &err):
__pyx_t_5 = (!line_sender_opts_token_y(__pyx_v_self->_opts, __pyx_v_c_token_y, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
+7005: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7005, __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(0, 7005, __pyx_L1_error)
7006:
+7007: if protocol_version is not None:
__pyx_t_5 = (__pyx_v_protocol_version != Py_None);
if (__pyx_t_5) {
/* … */
}
+7008: if protocol_version == 'auto':
__pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_v_protocol_version, __pyx_mstate_global->__pyx_n_u_auto, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 7008, __pyx_L1_error) if (__pyx_t_5) { goto __pyx_L65; }
7009: pass
+7010: elif (protocol_version == 1) or (protocol_version == '1'):
__pyx_t_11 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_protocol_version, __pyx_mstate_global->__pyx_int_1, 1, 0)); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7010, __pyx_L1_error) if (!__pyx_t_11) { } else { __pyx_t_5 = __pyx_t_11; goto __pyx_L66_bool_binop_done; } __pyx_t_11 = (__Pyx_PyUnicode_Equals(__pyx_v_protocol_version, __pyx_mstate_global->__pyx_kp_u_1, Py_EQ)); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7010, __pyx_L1_error) __pyx_t_5 = __pyx_t_11; __pyx_L66_bool_binop_done:; if (__pyx_t_5) { /* … */ goto __pyx_L65; }
+7011: if not line_sender_opts_protocol_version(
__pyx_t_5 = (!line_sender_opts_protocol_version(__pyx_v_self->_opts, line_sender_protocol_version_1, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
7012: self._opts, line_sender_protocol_version_1, &err):
+7013: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7013, __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(0, 7013, __pyx_L1_error)
+7014: elif (protocol_version == 2) or (protocol_version == '2'):
__pyx_t_11 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_protocol_version, __pyx_mstate_global->__pyx_int_2, 2, 0)); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7014, __pyx_L1_error) if (!__pyx_t_11) { } else { __pyx_t_5 = __pyx_t_11; goto __pyx_L69_bool_binop_done; } __pyx_t_11 = (__Pyx_PyUnicode_Equals(__pyx_v_protocol_version, __pyx_mstate_global->__pyx_kp_u_2, Py_EQ)); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7014, __pyx_L1_error) __pyx_t_5 = __pyx_t_11; __pyx_L69_bool_binop_done:; if (__pyx_t_5) { /* … */ goto __pyx_L65; }
+7015: if not line_sender_opts_protocol_version(
__pyx_t_5 = (!line_sender_opts_protocol_version(__pyx_v_self->_opts, line_sender_protocol_version_2, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
7016: self._opts, line_sender_protocol_version_2, &err):
+7017: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7017, __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(0, 7017, __pyx_L1_error)
+7018: elif (protocol_version == 3) or (protocol_version == '3'):
__pyx_t_11 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_protocol_version, __pyx_mstate_global->__pyx_int_3, 3, 0)); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7018, __pyx_L1_error) if (!__pyx_t_11) { } else { __pyx_t_5 = __pyx_t_11; goto __pyx_L72_bool_binop_done; } __pyx_t_11 = (__Pyx_PyUnicode_Equals(__pyx_v_protocol_version, __pyx_mstate_global->__pyx_kp_u_3, Py_EQ)); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7018, __pyx_L1_error) __pyx_t_5 = __pyx_t_11; __pyx_L72_bool_binop_done:; if (likely(__pyx_t_5)) { /* … */ goto __pyx_L65; }
+7019: if not line_sender_opts_protocol_version(
__pyx_t_5 = (!line_sender_opts_protocol_version(__pyx_v_self->_opts, line_sender_protocol_version_3, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
7020: self._opts, line_sender_protocol_version_3, &err):
+7021: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7021, __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(0, 7021, __pyx_L1_error)
7022: else:
+7023: raise QuestDBError(
/*else*/ {
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7023, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+7024: QuestDBErrorCode.ConfigError,
__Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7024, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7024, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+7025: '"protocol_version" must be None, "auto", 1-3' +
__pyx_t_18 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_protocol_version_must_be_None_a, __pyx_t_21); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; __pyx_t_10 = 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_10 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_1, __pyx_t_18}; __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7023, __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(0, 7023, __pyx_L1_error) } __pyx_L65:;
+7026: f' not {protocol_version!r}')
__pyx_t_18 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_protocol_version), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_21 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_not_2, __pyx_t_18); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 7026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_21); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
7027:
+7028: if auth_timeout is not None:
__pyx_t_5 = (__pyx_v_auth_timeout != Py_None);
if (__pyx_t_5) {
/* … */
}
+7029: if _is_int_not_bool(auth_timeout):
__pyx_t_5 = __pyx_f_7questdb_7_client__is_int_not_bool(__pyx_v_auth_timeout); if (unlikely(__pyx_t_5 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7029, __pyx_L1_error) if (__pyx_t_5) { /* … */ goto __pyx_L76; }
+7030: c_auth_timeout = auth_timeout
__pyx_t_23 = __Pyx_PyLong_As_uint64_t(__pyx_v_auth_timeout); if (unlikely((__pyx_t_23 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7030, __pyx_L1_error) __pyx_v_c_auth_timeout = __pyx_t_23;
+7031: elif isinstance(auth_timeout, cp_timedelta):
__pyx_t_5 = __Pyx_TypeCheck(__pyx_v_auth_timeout, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta);
if (likely(__pyx_t_5)) {
/* … */
goto __pyx_L76;
}
+7032: c_auth_timeout = _timedelta_to_millis(auth_timeout)
if (!(likely(((__pyx_v_auth_timeout) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_auth_timeout, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta))))) __PYX_ERR(0, 7032, __pyx_L1_error) __pyx_t_23 = __pyx_f_7questdb_7_client__timedelta_to_millis(((PyDateTime_Delta *)__pyx_v_auth_timeout)); if (unlikely(__pyx_t_23 == ((uint64_t)-1LL) && PyErr_Occurred())) __PYX_ERR(0, 7032, __pyx_L1_error) __pyx_v_c_auth_timeout = __pyx_t_23;
7033: else:
+7034: raise TypeError(
/*else*/ {
__pyx_t_7 = NULL;
+7035: '"auth_timeout" must be an int or a timedelta, '
__pyx_t_18 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_auth_timeout_must_be_an_int_or, __pyx_t_1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7035, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_18}; __pyx_t_8 = __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_18); __pyx_t_18 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7034, __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(0, 7034, __pyx_L1_error) } __pyx_L76:;
+7036: f'not {_fqn(type(auth_timeout))}')
__pyx_t_18 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_auth_timeout)))); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_t_18); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+7037: if not line_sender_opts_auth_timeout(self._opts, c_auth_timeout, &err):
__pyx_t_5 = (!line_sender_opts_auth_timeout(__pyx_v_self->_opts, __pyx_v_c_auth_timeout, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
+7038: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7038, __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(0, 7038, __pyx_L1_error)
7039:
+7040: if tls_verify is not None:
__pyx_t_5 = (__pyx_v_tls_verify != Py_None);
if (__pyx_t_5) {
/* … */
}
+7041: if (tls_verify is True) or (tls_verify == 'on'):
__pyx_t_11 = (__pyx_v_tls_verify == Py_True);
if (!__pyx_t_11) {
} else {
__pyx_t_5 = __pyx_t_11;
goto __pyx_L80_bool_binop_done;
}
__pyx_t_11 = (__Pyx_PyUnicode_Equals(__pyx_v_tls_verify, __pyx_mstate_global->__pyx_n_u_on, Py_EQ)); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7041, __pyx_L1_error)
__pyx_t_5 = __pyx_t_11;
__pyx_L80_bool_binop_done:;
if (__pyx_t_5) {
/* … */
goto __pyx_L79;
}
+7042: c_tls_verify = True
__pyx_v_c_tls_verify = 1;
+7043: elif (tls_verify is False) or (tls_verify == 'unsafe_off'):
__pyx_t_11 = (__pyx_v_tls_verify == Py_False);
if (!__pyx_t_11) {
} else {
__pyx_t_5 = __pyx_t_11;
goto __pyx_L82_bool_binop_done;
}
__pyx_t_11 = (__Pyx_PyUnicode_Equals(__pyx_v_tls_verify, __pyx_mstate_global->__pyx_n_u_unsafe_off, Py_EQ)); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7043, __pyx_L1_error)
__pyx_t_5 = __pyx_t_11;
__pyx_L82_bool_binop_done:;
if (likely(__pyx_t_5)) {
/* … */
goto __pyx_L79;
}
+7044: c_tls_verify = False
__pyx_v_c_tls_verify = 0;
7045: else:
+7046: raise ValueError(
/*else*/ {
__pyx_t_18 = NULL;
+7047: '"tls_verify" must be a bool, "on" or "unsafe_off", '
__pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_tls_verify_must_be_a_bool_on_or, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7047, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_10 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_18, __pyx_t_1}; __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7046, __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(0, 7046, __pyx_L1_error) } __pyx_L79:;
+7048: f'not {tls_verify!r}')
__pyx_t_7 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_tls_verify), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7);
+7049: if not line_sender_opts_tls_verify(self._opts, c_tls_verify, &err):
__pyx_t_5 = (!line_sender_opts_tls_verify(__pyx_v_self->_opts, __pyx_v_c_tls_verify, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
+7050: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7050, __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(0, 7050, __pyx_L1_error)
7051:
+7052: if tls_roots is not None:
__pyx_t_5 = (__pyx_v_tls_roots != Py_None);
if (__pyx_t_5) {
/* … */
}
+7053: tls_roots = str(tls_roots)
__pyx_t_8 = __Pyx_PyObject_Unicode(__pyx_v_tls_roots); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7053, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF_SET(__pyx_v_tls_roots, __pyx_t_8); __pyx_t_8 = 0;
+7054: str_to_utf8(b, <PyObject*>tls_roots, &c_tls_roots)
__pyx_t_4 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, ((PyObject *)__pyx_v_tls_roots), (&__pyx_v_c_tls_roots)); if (unlikely(__pyx_t_4 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 7054, __pyx_L1_error)
+7055: if not line_sender_opts_tls_roots(self._opts, c_tls_roots, &err):
__pyx_t_5 = (!line_sender_opts_tls_roots(__pyx_v_self->_opts, __pyx_v_c_tls_roots, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
+7056: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7056, __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(0, 7056, __pyx_L1_error)
7057:
+7058: if tls_roots_password is not None:
__pyx_t_5 = (__pyx_v_tls_roots_password != Py_None);
if (__pyx_t_5) {
/* … */
}
+7059: str_to_utf8(b, <PyObject*>tls_roots_password, &c_tls_roots_password)
__pyx_t_4 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, ((PyObject *)__pyx_v_tls_roots_password), (&__pyx_v_c_tls_roots_password)); if (unlikely(__pyx_t_4 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 7059, __pyx_L1_error)
+7060: if not line_sender_opts_tls_roots_password(
__pyx_t_5 = (!line_sender_opts_tls_roots_password(__pyx_v_self->_opts, __pyx_v_c_tls_roots_password, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
7061: self._opts, c_tls_roots_password, &err):
+7062: raise c_err_to_py(err)
__pyx_t_8 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7062, __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(0, 7062, __pyx_L1_error)
7063:
+7064: if tls_ca is not None:
__pyx_t_5 = (__pyx_v_tls_ca != Py_None);
if (__pyx_t_5) {
/* … */
goto __pyx_L89;
}
+7065: 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_L95_try_end;
__pyx_L90_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
__Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 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_L92_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_L95_try_end:;
}
+7066: c_tls_ca = TlsCa.parse(tls_ca).c_value
__pyx_t_1 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_TlsCa); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7066, __pyx_L90_error)
__Pyx_GOTREF(__pyx_t_18);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_parse); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7066, __pyx_L90_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
__pyx_t_10 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
assert(__pyx_t_1);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
__pyx_t_10 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_tls_ca};
__pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7066, __pyx_L90_error)
__Pyx_GOTREF(__pyx_t_8);
}
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_c_value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7066, __pyx_L90_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_24 = ((enum line_sender_ca)__Pyx_PyLong_As_enum__line_sender_ca(__pyx_t_7)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 7066, __pyx_L90_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_v_c_tls_ca = __pyx_t_24;
+7067: except ValueError:
__pyx_t_17 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError)))); if (__pyx_t_17) { __Pyx_AddTraceback("questdb._client.Sender._set_sender_fields", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_1) < 0) __PYX_ERR(0, 7067, __pyx_L92_except_error) __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_1);
+7068: raise QuestDBError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_21, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 7068, __pyx_L92_except_error)
__Pyx_GOTREF(__pyx_t_21);
+7069: QuestDBErrorCode.ConfigError,
__Pyx_GetModuleGlobalName(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 7069, __pyx_L92_except_error) __Pyx_GOTREF(__pyx_t_20); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7069, __pyx_L92_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
+7070: f'"tls_ca" has invalid value: {tls_ca!r}')
__pyx_t_20 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_tls_ca), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 7070, __pyx_L92_except_error) __Pyx_GOTREF(__pyx_t_20); __pyx_t_19 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_tls_ca_has_invalid_value, __pyx_t_20); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 7070, __pyx_L92_except_error) __Pyx_GOTREF(__pyx_t_19); __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_21))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_21); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_21); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_21, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_9, __pyx_t_19}; __pyx_t_18 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_21, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7068, __pyx_L92_except_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(0, 7068, __pyx_L92_except_error) } goto __pyx_L92_except_error;
+7071: if not line_sender_opts_tls_ca(self._opts, c_tls_ca, &err):
__pyx_t_5 = (!line_sender_opts_tls_ca(__pyx_v_self->_opts, __pyx_v_c_tls_ca, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
+7072: 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(0, 7072, __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(0, 7072, __pyx_L1_error)
+7073: elif protocol.tls_enabled and tls_roots is None:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_protocol, __pyx_mstate_global->__pyx_n_u_tls_enabled); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7073, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_11) { } else { __pyx_t_5 = __pyx_t_11; goto __pyx_L99_bool_binop_done; } __pyx_t_11 = (__pyx_v_tls_roots == Py_None); __pyx_t_5 = __pyx_t_11; __pyx_L99_bool_binop_done:; if (__pyx_t_5) { /* … */ } __pyx_L89:;
7074: # Set different default for Python than the the Rust default.
7075: # We don't set it if `tls_roots` is set, as it would override it.
+7076: c_tls_ca = line_sender_ca_webpki_and_os_roots
__pyx_v_c_tls_ca = line_sender_ca_webpki_and_os_roots;
+7077: if not line_sender_opts_tls_ca(self._opts, c_tls_ca, &err):
__pyx_t_5 = (!line_sender_opts_tls_ca(__pyx_v_self->_opts, __pyx_v_c_tls_ca, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
+7078: 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(0, 7078, __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(0, 7078, __pyx_L1_error)
7079:
+7080: if max_buf_size is not None:
__pyx_t_5 = (__pyx_v_max_buf_size != Py_None);
if (__pyx_t_5) {
/* … */
}
+7081: if not _is_int_not_bool(max_buf_size):
__pyx_t_5 = __pyx_f_7questdb_7_client__is_int_not_bool(__pyx_v_max_buf_size); if (unlikely(__pyx_t_5 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7081, __pyx_L1_error) __pyx_t_11 = (!__pyx_t_5); if (unlikely(__pyx_t_11)) { /* … */ }
+7082: raise TypeError(
__pyx_t_8 = NULL;
+7083: '"max_buf_size" must be an int, '
__pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_max_buf_size_must_be_an_int_not, __pyx_t_18); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 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(0, 7082, __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(0, 7082, __pyx_L1_error)
+7084: f'not {_fqn(type(max_buf_size))}')
__pyx_t_7 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_max_buf_size)))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7084, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_18 = __Pyx_PyUnicode_Unicode(__pyx_t_7); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7084, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+7085: c_max_buf_size = max_buf_size
__pyx_t_23 = __Pyx_PyLong_As_uint64_t(__pyx_v_max_buf_size); if (unlikely((__pyx_t_23 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7085, __pyx_L1_error) __pyx_v_c_max_buf_size = __pyx_t_23;
+7086: if not line_sender_opts_max_buf_size(self._opts, c_max_buf_size, &err):
__pyx_t_11 = (!line_sender_opts_max_buf_size(__pyx_v_self->_opts, __pyx_v_c_max_buf_size, (&__pyx_v_err)));
if (unlikely(__pyx_t_11)) {
/* … */
}
+7087: 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(0, 7087, __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(0, 7087, __pyx_L1_error)
7088:
+7089: if retry_timeout is not None:
__pyx_t_11 = (__pyx_v_retry_timeout != Py_None);
if (__pyx_t_11) {
/* … */
}
+7090: if _is_int_not_bool(retry_timeout):
__pyx_t_11 = __pyx_f_7questdb_7_client__is_int_not_bool(__pyx_v_retry_timeout); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7090, __pyx_L1_error) if (__pyx_t_11) { /* … */ goto __pyx_L106; }
+7091: c_retry_timeout = retry_timeout
__pyx_t_23 = __Pyx_PyLong_As_uint64_t(__pyx_v_retry_timeout); if (unlikely((__pyx_t_23 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7091, __pyx_L1_error) __pyx_v_c_retry_timeout = __pyx_t_23;
+7092: if not line_sender_opts_retry_timeout(self._opts, c_retry_timeout, &err):
__pyx_t_11 = (!line_sender_opts_retry_timeout(__pyx_v_self->_opts, __pyx_v_c_retry_timeout, (&__pyx_v_err)));
if (unlikely(__pyx_t_11)) {
/* … */
}
+7093: 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(0, 7093, __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(0, 7093, __pyx_L1_error)
+7094: elif isinstance(retry_timeout, cp_timedelta):
__pyx_t_11 = __Pyx_TypeCheck(__pyx_v_retry_timeout, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta);
if (likely(__pyx_t_11)) {
/* … */
goto __pyx_L106;
}
+7095: c_retry_timeout = _timedelta_to_millis(retry_timeout)
if (!(likely(((__pyx_v_retry_timeout) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_retry_timeout, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta))))) __PYX_ERR(0, 7095, __pyx_L1_error) __pyx_t_23 = __pyx_f_7questdb_7_client__timedelta_to_millis(((PyDateTime_Delta *)__pyx_v_retry_timeout)); if (unlikely(__pyx_t_23 == ((uint64_t)-1LL) && PyErr_Occurred())) __PYX_ERR(0, 7095, __pyx_L1_error) __pyx_v_c_retry_timeout = __pyx_t_23;
+7096: if not line_sender_opts_retry_timeout(self._opts, c_retry_timeout, &err):
__pyx_t_11 = (!line_sender_opts_retry_timeout(__pyx_v_self->_opts, __pyx_v_c_retry_timeout, (&__pyx_v_err)));
if (unlikely(__pyx_t_11)) {
/* … */
}
+7097: 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(0, 7097, __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(0, 7097, __pyx_L1_error)
7098: else:
+7099: raise TypeError(
/*else*/ {
__pyx_t_7 = NULL;
+7100: '"retry_timeout" must be an int or a timedelta, '
__pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_retry_timeout_must_be_an_int_or, __pyx_t_18); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 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(0, 7099, __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(0, 7099, __pyx_L1_error) } __pyx_L106:;
+7101: f'not {_fqn(type(retry_timeout))}')
__pyx_t_8 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_retry_timeout)))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_18 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
7102:
+7103: if retry_max_backoff is not None:
__pyx_t_11 = (__pyx_v_retry_max_backoff != Py_None);
if (__pyx_t_11) {
/* … */
}
+7104: if _is_int_not_bool(retry_max_backoff):
__pyx_t_11 = __pyx_f_7questdb_7_client__is_int_not_bool(__pyx_v_retry_max_backoff); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7104, __pyx_L1_error) if (__pyx_t_11) { /* … */ goto __pyx_L110; }
+7105: c_retry_max_backoff = retry_max_backoff
__pyx_t_23 = __Pyx_PyLong_As_uint64_t(__pyx_v_retry_max_backoff); if (unlikely((__pyx_t_23 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7105, __pyx_L1_error) __pyx_v_c_retry_max_backoff = __pyx_t_23;
+7106: if not line_sender_opts_retry_max_backoff(
__pyx_t_11 = (!line_sender_opts_retry_max_backoff(__pyx_v_self->_opts, __pyx_v_c_retry_max_backoff, (&__pyx_v_err)));
if (unlikely(__pyx_t_11)) {
/* … */
}
7107: self._opts, c_retry_max_backoff, &err):
+7108: 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(0, 7108, __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(0, 7108, __pyx_L1_error)
+7109: elif isinstance(retry_max_backoff, cp_timedelta):
__pyx_t_11 = __Pyx_TypeCheck(__pyx_v_retry_max_backoff, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta);
if (likely(__pyx_t_11)) {
/* … */
goto __pyx_L110;
}
+7110: c_retry_max_backoff = _timedelta_to_millis(retry_max_backoff)
if (!(likely(((__pyx_v_retry_max_backoff) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_retry_max_backoff, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta))))) __PYX_ERR(0, 7110, __pyx_L1_error) __pyx_t_23 = __pyx_f_7questdb_7_client__timedelta_to_millis(((PyDateTime_Delta *)__pyx_v_retry_max_backoff)); if (unlikely(__pyx_t_23 == ((uint64_t)-1LL) && PyErr_Occurred())) __PYX_ERR(0, 7110, __pyx_L1_error) __pyx_v_c_retry_max_backoff = __pyx_t_23;
+7111: if not line_sender_opts_retry_max_backoff(
__pyx_t_11 = (!line_sender_opts_retry_max_backoff(__pyx_v_self->_opts, __pyx_v_c_retry_max_backoff, (&__pyx_v_err)));
if (unlikely(__pyx_t_11)) {
/* … */
}
7112: self._opts, c_retry_max_backoff, &err):
+7113: 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(0, 7113, __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(0, 7113, __pyx_L1_error)
7114: else:
+7115: raise TypeError(
/*else*/ {
__pyx_t_8 = NULL;
+7116: '"retry_max_backoff" must be an int or a timedelta, '
__pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_retry_max_backoff_must_be_an_in, __pyx_t_18); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7116, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 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(0, 7115, __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(0, 7115, __pyx_L1_error) } __pyx_L110:;
+7117: f'not {_fqn(type(retry_max_backoff))}')
__pyx_t_7 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_retry_max_backoff)))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_18 = __Pyx_PyUnicode_Unicode(__pyx_t_7); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
7118:
+7119: if request_min_throughput is not None:
__pyx_t_11 = (__pyx_v_request_min_throughput != Py_None);
if (__pyx_t_11) {
/* … */
}
+7120: if not _is_int_not_bool(request_min_throughput):
__pyx_t_11 = __pyx_f_7questdb_7_client__is_int_not_bool(__pyx_v_request_min_throughput); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7120, __pyx_L1_error) __pyx_t_5 = (!__pyx_t_11); if (unlikely(__pyx_t_5)) { /* … */ }
+7121: raise TypeError(
__pyx_t_7 = NULL;
+7122: '"request_min_throughput" must be an int, '
__pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_request_min_throughput_must_be, __pyx_t_18); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 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(0, 7121, __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(0, 7121, __pyx_L1_error)
+7123: f'not {_fqn(type(request_min_throughput))}')
__pyx_t_8 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_request_min_throughput)))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_18 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+7124: c_request_min_throughput = request_min_throughput
__pyx_t_23 = __Pyx_PyLong_As_uint64_t(__pyx_v_request_min_throughput); if (unlikely((__pyx_t_23 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7124, __pyx_L1_error) __pyx_v_c_request_min_throughput = __pyx_t_23;
+7125: if not line_sender_opts_request_min_throughput(self._opts, c_request_min_throughput, &err):
__pyx_t_5 = (!line_sender_opts_request_min_throughput(__pyx_v_self->_opts, __pyx_v_c_request_min_throughput, (&__pyx_v_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
+7126: 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(0, 7126, __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(0, 7126, __pyx_L1_error)
7127:
+7128: if max_name_len is not None:
__pyx_t_5 = (__pyx_v_max_name_len != Py_None);
if (__pyx_t_5) {
/* … */
}
+7129: if not _is_int_not_bool(max_name_len):
__pyx_t_5 = __pyx_f_7questdb_7_client__is_int_not_bool(__pyx_v_max_name_len); if (unlikely(__pyx_t_5 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7129, __pyx_L1_error) __pyx_t_11 = (!__pyx_t_5); if (unlikely(__pyx_t_11)) { /* … */ }
+7130: raise TypeError(
__pyx_t_8 = NULL;
+7131: '"max_name_len" must be an int, '
__pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_max_name_len_must_be_an_int_not, __pyx_t_18); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 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(0, 7130, __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(0, 7130, __pyx_L1_error)
+7132: f'not {_fqn(type(max_name_len))}')
__pyx_t_7 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_max_name_len)))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_18 = __Pyx_PyUnicode_Unicode(__pyx_t_7); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+7133: c_max_name_len = max_name_len
__pyx_t_10 = __Pyx_PyLong_As_size_t(__pyx_v_max_name_len); if (unlikely((__pyx_t_10 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 7133, __pyx_L1_error) __pyx_v_c_max_name_len = __pyx_t_10;
+7134: if not line_sender_opts_max_name_len(self._opts, c_max_name_len, &err):
__pyx_t_11 = (!line_sender_opts_max_name_len(__pyx_v_self->_opts, __pyx_v_c_max_name_len, (&__pyx_v_err)));
if (unlikely(__pyx_t_11)) {
/* … */
}
+7135: 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(0, 7135, __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(0, 7135, __pyx_L1_error)
7136:
+7137: if request_timeout is not None:
__pyx_t_11 = (__pyx_v_request_timeout != Py_None);
if (__pyx_t_11) {
/* … */
}
+7138: if _is_int_not_bool(request_timeout):
__pyx_t_11 = __pyx_f_7questdb_7_client__is_int_not_bool(__pyx_v_request_timeout); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7138, __pyx_L1_error) if (__pyx_t_11) { /* … */ goto __pyx_L120; }
+7139: c_request_timeout = request_timeout
__pyx_t_23 = __Pyx_PyLong_As_uint64_t(__pyx_v_request_timeout); if (unlikely((__pyx_t_23 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7139, __pyx_L1_error) __pyx_v_c_request_timeout = __pyx_t_23;
+7140: if not line_sender_opts_request_timeout(self._opts, c_request_timeout, &err):
__pyx_t_11 = (!line_sender_opts_request_timeout(__pyx_v_self->_opts, __pyx_v_c_request_timeout, (&__pyx_v_err)));
if (unlikely(__pyx_t_11)) {
/* … */
}
+7141: 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(0, 7141, __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(0, 7141, __pyx_L1_error)
+7142: elif isinstance(request_timeout, cp_timedelta):
__pyx_t_11 = __Pyx_TypeCheck(__pyx_v_request_timeout, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta);
if (likely(__pyx_t_11)) {
/* … */
goto __pyx_L120;
}
+7143: c_request_timeout = _timedelta_to_millis(request_timeout)
if (!(likely(((__pyx_v_request_timeout) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_request_timeout, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta))))) __PYX_ERR(0, 7143, __pyx_L1_error) __pyx_t_23 = __pyx_f_7questdb_7_client__timedelta_to_millis(((PyDateTime_Delta *)__pyx_v_request_timeout)); if (unlikely(__pyx_t_23 == ((uint64_t)-1LL) && PyErr_Occurred())) __PYX_ERR(0, 7143, __pyx_L1_error) __pyx_v_c_request_timeout = __pyx_t_23;
+7144: if not line_sender_opts_request_timeout(self._opts, c_request_timeout, &err):
__pyx_t_11 = (!line_sender_opts_request_timeout(__pyx_v_self->_opts, __pyx_v_c_request_timeout, (&__pyx_v_err)));
if (unlikely(__pyx_t_11)) {
/* … */
}
+7145: 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(0, 7145, __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(0, 7145, __pyx_L1_error)
7146: else:
+7147: raise TypeError(
/*else*/ {
__pyx_t_7 = NULL;
+7148: '"request_timeout" must be an int or a timedelta, '
__pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_request_timeout_must_be_an_int, __pyx_t_18); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 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(0, 7147, __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(0, 7147, __pyx_L1_error) } __pyx_L120:;
+7149: f'not {_fqn(type(request_timeout))}')
__pyx_t_8 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_request_timeout)))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_18 = __Pyx_PyUnicode_Unicode(__pyx_t_8); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
7150:
+7151: _parse_auto_flush(
__pyx_t_4 = __pyx_f_7questdb_7_client__parse_auto_flush(__pyx_v_self->_c_protocol, __pyx_v_auto_flush, __pyx_v_auto_flush_rows, __pyx_v_auto_flush_bytes, __pyx_v_auto_flush_interval, (&__pyx_v_self->_auto_flush_mode), __pyx_v_c_max_datagram_size); if (unlikely(__pyx_t_4 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 7151, __pyx_L1_error)
7152: self._c_protocol,
7153: auto_flush,
7154: auto_flush_rows,
7155: auto_flush_bytes,
7156: auto_flush_interval,
7157: &self._auto_flush_mode,
7158: c_max_datagram_size)
7159:
+7160: self._init_buf_size = init_buf_size or 65536
__pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_init_buf_size); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(0, 7160, __pyx_L1_error) if (!__pyx_t_11) { } else { __pyx_t_22 = __Pyx_PyLong_As_size_t(__pyx_v_init_buf_size); if (unlikely((__pyx_t_22 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 7160, __pyx_L1_error) __pyx_t_10 = __pyx_t_22; goto __pyx_L123_bool_binop_done; } __pyx_t_10 = 0x10000; __pyx_L123_bool_binop_done:; __pyx_v_self->_init_buf_size = __pyx_t_10;
+7161: self._last_flush_ms = <int64_t*>calloc(1, sizeof(int64_t))
__pyx_v_self->_last_flush_ms = ((int64_t *)calloc(1, (sizeof(int64_t))));
+7162: if self._last_flush_ms == NULL:
__pyx_t_11 = (__pyx_v_self->_last_flush_ms == NULL);
if (unlikely(__pyx_t_11)) {
/* … */
}
+7163: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(0, 7163, __pyx_L1_error)
7164:
7165: # Retain a clone of the fully-configured opts (auth/TLS included) so a
7166: # ws sender's dataframe() can open a poolless direct columnar
7167: # connection per call, independent of how it was built.
+7168: if _is_qwp_ws_protocol(self._c_protocol) and self._opts != NULL:
__pyx_t_5 = __pyx_f_7questdb_7_client__is_qwp_ws_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_5 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7168, __pyx_L1_error) if (__pyx_t_5) { } else { __pyx_t_11 = __pyx_t_5; goto __pyx_L127_bool_binop_done; } __pyx_t_5 = (__pyx_v_self->_opts != NULL); __pyx_t_11 = __pyx_t_5; __pyx_L127_bool_binop_done:; if (__pyx_t_11) { /* … */ }
+7169: self._qwp_ws_opts = line_sender_opts_clone(self._opts)
__pyx_v_self->_qwp_ws_opts = line_sender_opts_clone(__pyx_v_self->_opts);
7170:
+7171: def __cinit__(self):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_6Sender_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7questdb_7_client_6Sender_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_6Sender___cinit__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_6Sender___cinit__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+7172: self._c_protocol = line_sender_protocol_tcp
__pyx_v_self->_c_protocol = line_sender_protocol_tcp;
+7173: self._opts = NULL
__pyx_v_self->_opts = NULL;
+7174: self._impl = NULL
__pyx_v_self->_impl = NULL;
+7175: self._buffer = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->_buffer); __Pyx_DECREF((PyObject *)__pyx_v_self->_buffer); __pyx_v_self->_buffer = ((struct __pyx_obj_7questdb_7_client_Buffer *)Py_None);
+7176: self._error_handler = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_error_handler); __Pyx_DECREF(__pyx_v_self->_error_handler); __pyx_v_self->_error_handler = Py_None;
+7177: self._connection_listener = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_connection_listener); __Pyx_DECREF(__pyx_v_self->_connection_listener); __pyx_v_self->_connection_listener = Py_None;
+7178: self._auto_flush_mode.enabled = False
__pyx_v_self->_auto_flush_mode.enabled = 0;
+7179: self._last_flush_ms = NULL
__pyx_v_self->_last_flush_ms = NULL;
+7180: self._init_buf_size = 0
__pyx_v_self->_init_buf_size = 0;
+7181: self._in_txn = False
__pyx_v_self->_in_txn = 0;
+7182: self._slot_id = -1
__pyx_v_self->_slot_id = -1L;
+7183: self._qwp_ws_opts = NULL
__pyx_v_self->_qwp_ws_opts = NULL;
7184:
+7185: def __init__(
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_6Sender_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7questdb_7_client_6Sender_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_protocol = 0;
PyObject *__pyx_v_host = 0;
PyObject *__pyx_v_port = 0;
PyObject *__pyx_v_bind_interface = 0;
PyObject *__pyx_v_username = 0;
PyObject *__pyx_v_password = 0;
PyObject *__pyx_v_token = 0;
PyObject *__pyx_v_token_x = 0;
PyObject *__pyx_v_token_y = 0;
PyObject *__pyx_v_auth_timeout = 0;
PyObject *__pyx_v_tls_verify = 0;
PyObject *__pyx_v_tls_ca = 0;
PyObject *__pyx_v_tls_roots = 0;
PyObject *__pyx_v_tls_roots_password = 0;
PyObject *__pyx_v_max_buf_size = 0;
PyObject *__pyx_v_retry_timeout = 0;
PyObject *__pyx_v_retry_max_backoff = 0;
PyObject *__pyx_v_request_min_throughput = 0;
PyObject *__pyx_v_request_timeout = 0;
PyObject *__pyx_v_auto_flush = 0;
PyObject *__pyx_v_auto_flush_rows = 0;
PyObject *__pyx_v_auto_flush_bytes = 0;
PyObject *__pyx_v_auto_flush_interval = 0;
PyObject *__pyx_v_max_datagram_size = 0;
PyObject *__pyx_v_multicast_ttl = 0;
PyObject *__pyx_v_qwp_ws_progress = 0;
PyObject *__pyx_v_error_handler = 0;
PyObject *__pyx_v_connection_listener = 0;
PyObject *__pyx_v_connection_event_inbox_capacity = 0;
PyObject *__pyx_v_protocol_version = 0;
PyObject *__pyx_v_init_buf_size = 0;
PyObject *__pyx_v_max_name_len = 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_protocol,&__pyx_mstate_global->__pyx_n_u_host,&__pyx_mstate_global->__pyx_n_u_port,&__pyx_mstate_global->__pyx_n_u_bind_interface,&__pyx_mstate_global->__pyx_n_u_username,&__pyx_mstate_global->__pyx_n_u_password,&__pyx_mstate_global->__pyx_n_u_token,&__pyx_mstate_global->__pyx_n_u_token_x,&__pyx_mstate_global->__pyx_n_u_token_y,&__pyx_mstate_global->__pyx_n_u_auth_timeout,&__pyx_mstate_global->__pyx_n_u_tls_verify,&__pyx_mstate_global->__pyx_n_u_tls_ca,&__pyx_mstate_global->__pyx_n_u_tls_roots,&__pyx_mstate_global->__pyx_n_u_tls_roots_password,&__pyx_mstate_global->__pyx_n_u_max_buf_size,&__pyx_mstate_global->__pyx_n_u_retry_timeout,&__pyx_mstate_global->__pyx_n_u_retry_max_backoff,&__pyx_mstate_global->__pyx_n_u_request_min_throughput,&__pyx_mstate_global->__pyx_n_u_request_timeout,&__pyx_mstate_global->__pyx_n_u_auto_flush,&__pyx_mstate_global->__pyx_n_u_auto_flush_rows,&__pyx_mstate_global->__pyx_n_u_auto_flush_bytes,&__pyx_mstate_global->__pyx_n_u_auto_flush_interval,&__pyx_mstate_global->__pyx_n_u_max_datagram_size,&__pyx_mstate_global->__pyx_n_u_multicast_ttl,&__pyx_mstate_global->__pyx_n_u_qwp_ws_progress,&__pyx_mstate_global->__pyx_n_u_error_handler,&__pyx_mstate_global->__pyx_n_u_connection_listener,&__pyx_mstate_global->__pyx_n_u_connection_event_inbox_capacity,&__pyx_mstate_global->__pyx_n_u_protocol_version,&__pyx_mstate_global->__pyx_n_u_init_buf_size,&__pyx_mstate_global->__pyx_n_u_max_name_len,0};
PyObject* values[32] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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(0, 7185, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 3:
values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 7185, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 2:
values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7185, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7185, __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(0, 7185, __pyx_L3_error)
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = -1;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
goto __pyx_L7_cleaned_up;
__pyx_L0:;
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_L7_cleaned_up:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_6Sender_2__init__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, PyObject *__pyx_v_protocol, PyObject *__pyx_v_host, PyObject *__pyx_v_port, PyObject *__pyx_v_bind_interface, PyObject *__pyx_v_username, PyObject *__pyx_v_password, PyObject *__pyx_v_token, PyObject *__pyx_v_token_x, PyObject *__pyx_v_token_y, PyObject *__pyx_v_auth_timeout, PyObject *__pyx_v_tls_verify, PyObject *__pyx_v_tls_ca, PyObject *__pyx_v_tls_roots, PyObject *__pyx_v_tls_roots_password, PyObject *__pyx_v_max_buf_size, PyObject *__pyx_v_retry_timeout, PyObject *__pyx_v_retry_max_backoff, PyObject *__pyx_v_request_min_throughput, PyObject *__pyx_v_request_timeout, PyObject *__pyx_v_auto_flush, PyObject *__pyx_v_auto_flush_rows, PyObject *__pyx_v_auto_flush_bytes, PyObject *__pyx_v_auto_flush_interval, PyObject *__pyx_v_max_datagram_size, PyObject *__pyx_v_multicast_ttl, PyObject *__pyx_v_qwp_ws_progress, PyObject *__pyx_v_error_handler, PyObject *__pyx_v_connection_listener, PyObject *__pyx_v_connection_event_inbox_capacity, PyObject *__pyx_v_protocol_version, PyObject *__pyx_v_init_buf_size, PyObject *__pyx_v_max_name_len) {
struct line_sender_utf8 __pyx_v_c_host;
PyObject *__pyx_v_port_str = 0;
enum line_sender_protocol __pyx_v_c_protocol;
struct line_sender_utf8 __pyx_v_c_port;
struct qdb_pystr_buf *__pyx_v_b;
int __pyx_r;
__Pyx_INCREF(__pyx_v_protocol);
/* … */
/* function exit code */
__pyx_r = 0;
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.Sender.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_port_str);
__Pyx_XDECREF(__pyx_v_protocol);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
7186: self,
7187: object protocol,
7188: str host,
7189: object port,
7190: *,
+7191: str bind_interface=None,
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[3]) values[3] = __Pyx_NewRef(((PyObject*)Py_None));
+7192: str username=None,
if (!values[4]) values[4] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[4]) values[4] = __Pyx_NewRef(((PyObject*)Py_None));
+7193: str password=None,
if (!values[5]) values[5] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[5]) values[5] = __Pyx_NewRef(((PyObject*)Py_None));
+7194: str token=None,
if (!values[6]) values[6] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[6]) values[6] = __Pyx_NewRef(((PyObject*)Py_None));
+7195: str token_x=None,
if (!values[7]) values[7] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[7]) values[7] = __Pyx_NewRef(((PyObject*)Py_None));
+7196: str token_y=None,
if (!values[8]) values[8] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[8]) values[8] = __Pyx_NewRef(((PyObject*)Py_None));
+7197: object auth_timeout=None, # default: 15000 milliseconds
if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None));
+7198: object tls_verify=None, # default: True
if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None));
+7199: object tls_ca=None, # TLS default: TlsCa.WebpkiAndOsRoots
if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None));
+7200: object tls_roots=None,
if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None));
+7201: str tls_roots_password=None,
if (!values[13]) values[13] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[13]) values[13] = __Pyx_NewRef(((PyObject*)Py_None));
+7202: object max_buf_size=None, # 100 * 1024 * 1024 - 100MiB
if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)Py_None));
+7203: object retry_timeout=None, # default: 10000 milliseconds
if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_None));
+7204: object retry_max_backoff=None, # default: 1000 milliseconds
if (!values[16]) values[16] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[16]) values[16] = __Pyx_NewRef(((PyObject *)Py_None));
+7205: object request_min_throughput=None, # default: 100 * 1024 - 100KiB/s
if (!values[17]) values[17] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[17]) values[17] = __Pyx_NewRef(((PyObject *)Py_None));
+7206: object request_timeout=None,
if (!values[18]) values[18] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[18]) values[18] = __Pyx_NewRef(((PyObject *)Py_None));
+7207: object auto_flush=None, # Default True
if (!values[19]) values[19] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[19]) values[19] = __Pyx_NewRef(((PyObject *)Py_None));
+7208: object auto_flush_rows=None, # Default 75000 (HTTP) or 600 (TCP)
if (!values[20]) values[20] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[20]) values[20] = __Pyx_NewRef(((PyObject *)Py_None));
+7209: object auto_flush_bytes=None, # Default off
if (!values[21]) values[21] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[21]) values[21] = __Pyx_NewRef(((PyObject *)Py_None));
+7210: object auto_flush_interval=None, # Default 1000 milliseconds
if (!values[22]) values[22] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[22]) values[22] = __Pyx_NewRef(((PyObject *)Py_None));
+7211: object max_datagram_size=None, # Default 1400 for QWP/UDP
if (!values[23]) values[23] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[23]) values[23] = __Pyx_NewRef(((PyObject *)Py_None));
+7212: object multicast_ttl=None, # Default 1 for QWP/UDP
if (!values[24]) values[24] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[24]) values[24] = __Pyx_NewRef(((PyObject *)Py_None));
+7213: object qwp_ws_progress=None, # Default background for QWP/WebSocket
if (!values[25]) values[25] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[25]) values[25] = __Pyx_NewRef(((PyObject *)Py_None));
+7214: object error_handler=None,
if (!values[26]) values[26] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[26]) values[26] = __Pyx_NewRef(((PyObject *)Py_None));
+7215: object connection_listener=None,
if (!values[27]) values[27] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[28]) values[28] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0)); /* … */ if (!values[27]) values[27] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[28]) values[28] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
7216: object connection_event_inbox_capacity=0,
+7217: object protocol_version=None, # Default auto
if (!values[29]) values[29] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[29]) values[29] = __Pyx_NewRef(((PyObject *)Py_None));
+7218: object init_buf_size=None, # 64KiB
if (!values[30]) values[30] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[30]) values[30] = __Pyx_NewRef(((PyObject *)Py_None));
+7219: object max_name_len=None): # 127
if (!values[31]) values[31] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, i); __PYX_ERR(0, 7185, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7185, __pyx_L3_error) values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7185, __pyx_L3_error) values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 7185, __pyx_L3_error) /* … */ if (!values[31]) values[31] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_protocol = values[0]; __pyx_v_host = ((PyObject*)values[1]); __pyx_v_port = values[2]; __pyx_v_bind_interface = ((PyObject*)values[3]); __pyx_v_username = ((PyObject*)values[4]); __pyx_v_password = ((PyObject*)values[5]); __pyx_v_token = ((PyObject*)values[6]); __pyx_v_token_x = ((PyObject*)values[7]); __pyx_v_token_y = ((PyObject*)values[8]); __pyx_v_auth_timeout = values[9]; __pyx_v_tls_verify = values[10]; __pyx_v_tls_ca = values[11]; __pyx_v_tls_roots = values[12]; __pyx_v_tls_roots_password = ((PyObject*)values[13]); __pyx_v_max_buf_size = values[14]; __pyx_v_retry_timeout = values[15]; __pyx_v_retry_max_backoff = values[16]; __pyx_v_request_min_throughput = values[17]; __pyx_v_request_timeout = values[18]; __pyx_v_auto_flush = values[19]; __pyx_v_auto_flush_rows = values[20]; __pyx_v_auto_flush_bytes = values[21]; __pyx_v_auto_flush_interval = values[22]; __pyx_v_max_datagram_size = values[23]; __pyx_v_multicast_ttl = values[24]; __pyx_v_qwp_ws_progress = values[25]; __pyx_v_error_handler = values[26]; __pyx_v_connection_listener = values[27]; __pyx_v_connection_event_inbox_capacity = values[28]; __pyx_v_protocol_version = values[29]; __pyx_v_init_buf_size = values[30]; __pyx_v_max_name_len = values[31]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 7185, __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.Sender.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_host), (&PyUnicode_Type), 1, "host", 1))) __PYX_ERR(0, 7188, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bind_interface), (&PyUnicode_Type), 1, "bind_interface", 1))) __PYX_ERR(0, 7191, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_username), (&PyUnicode_Type), 1, "username", 1))) __PYX_ERR(0, 7192, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_password), (&PyUnicode_Type), 1, "password", 1))) __PYX_ERR(0, 7193, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_token), (&PyUnicode_Type), 1, "token", 1))) __PYX_ERR(0, 7194, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_token_x), (&PyUnicode_Type), 1, "token_x", 1))) __PYX_ERR(0, 7195, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_token_y), (&PyUnicode_Type), 1, "token_y", 1))) __PYX_ERR(0, 7196, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tls_roots_password), (&PyUnicode_Type), 1, "tls_roots_password", 1))) __PYX_ERR(0, 7201, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_6Sender_2__init__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self), __pyx_v_protocol, __pyx_v_host, __pyx_v_port, __pyx_v_bind_interface, __pyx_v_username, __pyx_v_password, __pyx_v_token, __pyx_v_token_x, __pyx_v_token_y, __pyx_v_auth_timeout, __pyx_v_tls_verify, __pyx_v_tls_ca, __pyx_v_tls_roots, __pyx_v_tls_roots_password, __pyx_v_max_buf_size, __pyx_v_retry_timeout, __pyx_v_retry_max_backoff, __pyx_v_request_min_throughput, __pyx_v_request_timeout, __pyx_v_auto_flush, __pyx_v_auto_flush_rows, __pyx_v_auto_flush_bytes, __pyx_v_auto_flush_interval, __pyx_v_max_datagram_size, __pyx_v_multicast_ttl, __pyx_v_qwp_ws_progress, __pyx_v_error_handler, __pyx_v_connection_listener, __pyx_v_connection_event_inbox_capacity, __pyx_v_protocol_version, __pyx_v_init_buf_size, __pyx_v_max_name_len);
7220:
7221: cdef line_sender_utf8 c_host
7222: cdef str port_str
7223: cdef line_sender_protocol c_protocol
7224: cdef line_sender_utf8 c_port
7225: cdef qdb_pystr_buf* b
+7226: if (self._opts != NULL or self._impl != NULL or
__pyx_t_2 = (__pyx_v_self->_opts != NULL);
if (!__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_self->_impl != NULL);
if (!__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
/* … */
if (unlikely(__pyx_t_1)) {
/* … */
}
+7227: self._last_flush_ms != NULL):
__pyx_t_2 = (__pyx_v_self->_last_flush_ms != NULL); __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:;
+7228: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7228, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+7229: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7229, __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_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[3] = {__pyx_t_4, __pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Sender_is_already_initialized}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__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_3)) __PYX_ERR(0, 7228, __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(0, 7228, __pyx_L1_error)
7230: 'Sender is already initialized.')
+7231: b = qdb_pystr_buf_new()
__pyx_v_b = qdb_pystr_buf_new();
+7232: try:
/*try:*/ {
+7233: protocol = Protocol.parse(protocol)
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_Protocol); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7233, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_parse); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7233, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 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_protocol};
__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(0, 7233, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_DECREF_SET(__pyx_v_protocol, __pyx_t_3);
__pyx_t_3 = 0;
+7234: if protocol is None:
__pyx_t_1 = (__pyx_v_protocol == Py_None);
if (unlikely(__pyx_t_1)) {
/* … */
}
+7235: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7235, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_5);
+7236: QuestDBErrorCode.ConfigError,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7236, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7236, __pyx_L8_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[3] = {__pyx_t_4, __pyx_t_6, __pyx_mstate_global->__pyx_kp_u_protocol_is_required_and_cannot}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_8, (3-__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(0, 7235, __pyx_L8_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(0, 7235, __pyx_L8_error)
7237: '"protocol" is required and cannot be None.')
+7238: c_protocol = protocol.c_value
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_protocol, __pyx_mstate_global->__pyx_n_u_c_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7238, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = ((enum line_sender_protocol)__Pyx_PyLong_As_enum__line_sender_protocol(__pyx_t_3)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 7238, __pyx_L8_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_c_protocol = __pyx_t_9;
+7239: if PyLong_CheckExact(<PyObject*>port):
__pyx_t_1 = PyLong_CheckExact(((PyObject *)__pyx_v_port));
if (__pyx_t_1) {
/* … */
goto __pyx_L11;
}
+7240: port_str = str(port)
__pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_v_port); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7240, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_port_str = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+7241: elif PyUnicode_CheckExact(<PyObject*>port):
__pyx_t_1 = PyUnicode_CheckExact(((PyObject *)__pyx_v_port));
if (likely(__pyx_t_1)) {
/* … */
goto __pyx_L11;
}
+7242: port_str = port
__pyx_t_3 = __pyx_v_port;
__Pyx_INCREF(__pyx_t_3);
if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(0, 7242, __pyx_L8_error)
__pyx_v_port_str = ((PyObject*)__pyx_t_3);
__pyx_t_3 = 0;
7243: else:
+7244: raise TypeError(
/*else*/ {
__pyx_t_5 = NULL;
+7245: f'port must be an int or a str, not {_fqn(type(port))}')
__pyx_t_6 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_port)))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7245, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7245, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_port_must_be_an_int_or_a_str_not, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7245, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7244, __pyx_L8_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(0, 7244, __pyx_L8_error) } __pyx_L11:;
+7246: str_to_utf8(b, <PyObject*>host, &c_host)
__pyx_t_10 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, ((PyObject *)__pyx_v_host), (&__pyx_v_c_host)); if (unlikely(__pyx_t_10 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 7246, __pyx_L8_error)
+7247: str_to_utf8(b, <PyObject*>port_str, &c_port)
__pyx_t_10 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, ((PyObject *)__pyx_v_port_str), (&__pyx_v_c_port)); if (unlikely(__pyx_t_10 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 7247, __pyx_L8_error)
+7248: self._opts = line_sender_opts_new_service(c_protocol, c_host, c_port)
__pyx_v_self->_opts = line_sender_opts_new_service(__pyx_v_c_protocol, __pyx_v_c_host, __pyx_v_c_port);
7249:
+7250: self._set_sender_fields(
__pyx_t_10 = ((struct __pyx_vtabstruct_7questdb_7_client_Sender *)__pyx_v_self->__pyx_vtab)->_set_sender_fields(__pyx_v_self, __pyx_v_b, __pyx_v_protocol, __pyx_v_bind_interface, __pyx_v_username, __pyx_v_password, __pyx_v_token, __pyx_v_token_x, __pyx_v_token_y, __pyx_v_auth_timeout, __pyx_v_tls_verify, __pyx_v_tls_ca, __pyx_v_tls_roots, __pyx_v_tls_roots_password, __pyx_v_max_buf_size, __pyx_v_retry_timeout, __pyx_v_retry_max_backoff, __pyx_v_request_min_throughput, __pyx_v_request_timeout, __pyx_v_auto_flush, __pyx_v_auto_flush_rows, __pyx_v_auto_flush_bytes, __pyx_v_auto_flush_interval, __pyx_v_max_datagram_size, __pyx_v_multicast_ttl, __pyx_v_protocol_version, __pyx_v_qwp_ws_progress, __pyx_v_error_handler, __pyx_v_connection_listener, __pyx_v_connection_event_inbox_capacity, __pyx_v_init_buf_size, __pyx_v_max_name_len); if (unlikely(__pyx_t_10 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 7250, __pyx_L8_error)
}
7251: b,
7252: protocol,
7253: bind_interface,
7254: username,
7255: password,
7256: token,
7257: token_x,
7258: token_y,
7259: auth_timeout,
7260: tls_verify,
7261: tls_ca,
7262: tls_roots,
7263: tls_roots_password,
7264: max_buf_size,
7265: retry_timeout,
7266: retry_max_backoff,
7267: request_min_throughput,
7268: request_timeout,
7269: auto_flush,
7270: auto_flush_rows,
7271: auto_flush_bytes,
7272: auto_flush_interval,
7273: max_datagram_size,
7274: multicast_ttl,
7275: protocol_version,
7276: qwp_ws_progress,
7277: error_handler,
7278: connection_listener,
7279: connection_event_inbox_capacity,
7280: init_buf_size,
7281: max_name_len)
7282: finally:
+7283: qdb_pystr_buf_free(b)
/*finally:*/ {
/*normal exit:*/{
qdb_pystr_buf_free(__pyx_v_b);
goto __pyx_L9;
}
__pyx_L8_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 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_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
if ( unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_17);
__Pyx_XGOTREF(__pyx_t_18);
__Pyx_XGOTREF(__pyx_t_19);
__pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
{
qdb_pystr_buf_free(__pyx_v_b);
}
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
__pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
__pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
goto __pyx_L1_error;
}
__pyx_L9:;
}
7284:
+7285: @staticmethod
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_5from_conf(CYTHON_UNUSED 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_6Sender_4from_conf, "\n Construct a sender from a :ref:`configuration string <sender_conf>`.\n\n The additional arguments are used to specify additional parameters\n which are not present in the configuration string.\n\n Note that any parameters already present in the configuration string\n cannot be overridden.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_5from_conf = {"from_conf", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_5from_conf, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_4from_conf}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_5from_conf(CYTHON_UNUSED 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_conf_str = 0; PyObject *__pyx_v_bind_interface = 0; PyObject *__pyx_v_username = 0; PyObject *__pyx_v_password = 0; PyObject *__pyx_v_token = 0; PyObject *__pyx_v_token_x = 0; PyObject *__pyx_v_token_y = 0; PyObject *__pyx_v_auth_timeout = 0; PyObject *__pyx_v_tls_verify = 0; PyObject *__pyx_v_tls_ca = 0; PyObject *__pyx_v_tls_roots = 0; PyObject *__pyx_v_tls_roots_password = 0; PyObject *__pyx_v_max_buf_size = 0; PyObject *__pyx_v_retry_timeout = 0; PyObject *__pyx_v_retry_max_backoff = 0; PyObject *__pyx_v_request_min_throughput = 0; PyObject *__pyx_v_request_timeout = 0; PyObject *__pyx_v_auto_flush = 0; PyObject *__pyx_v_auto_flush_rows = 0; PyObject *__pyx_v_auto_flush_bytes = 0; PyObject *__pyx_v_auto_flush_interval = 0; PyObject *__pyx_v_max_datagram_size = 0; PyObject *__pyx_v_multicast_ttl = 0; PyObject *__pyx_v_qwp_ws_progress = 0; PyObject *__pyx_v_error_handler = 0; PyObject *__pyx_v_connection_listener = 0; PyObject *__pyx_v_connection_event_inbox_capacity = 0; PyObject *__pyx_v_protocol_version = 0; PyObject *__pyx_v_init_buf_size = 0; PyObject *__pyx_v_max_name_len = 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("from_conf (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_conf_str,&__pyx_mstate_global->__pyx_n_u_bind_interface,&__pyx_mstate_global->__pyx_n_u_username,&__pyx_mstate_global->__pyx_n_u_password,&__pyx_mstate_global->__pyx_n_u_token,&__pyx_mstate_global->__pyx_n_u_token_x,&__pyx_mstate_global->__pyx_n_u_token_y,&__pyx_mstate_global->__pyx_n_u_auth_timeout,&__pyx_mstate_global->__pyx_n_u_tls_verify,&__pyx_mstate_global->__pyx_n_u_tls_ca,&__pyx_mstate_global->__pyx_n_u_tls_roots,&__pyx_mstate_global->__pyx_n_u_tls_roots_password,&__pyx_mstate_global->__pyx_n_u_max_buf_size,&__pyx_mstate_global->__pyx_n_u_retry_timeout,&__pyx_mstate_global->__pyx_n_u_retry_max_backoff,&__pyx_mstate_global->__pyx_n_u_request_min_throughput,&__pyx_mstate_global->__pyx_n_u_request_timeout,&__pyx_mstate_global->__pyx_n_u_auto_flush,&__pyx_mstate_global->__pyx_n_u_auto_flush_rows,&__pyx_mstate_global->__pyx_n_u_auto_flush_bytes,&__pyx_mstate_global->__pyx_n_u_auto_flush_interval,&__pyx_mstate_global->__pyx_n_u_max_datagram_size,&__pyx_mstate_global->__pyx_n_u_multicast_ttl,&__pyx_mstate_global->__pyx_n_u_qwp_ws_progress,&__pyx_mstate_global->__pyx_n_u_error_handler,&__pyx_mstate_global->__pyx_n_u_connection_listener,&__pyx_mstate_global->__pyx_n_u_connection_event_inbox_capacity,&__pyx_mstate_global->__pyx_n_u_protocol_version,&__pyx_mstate_global->__pyx_n_u_init_buf_size,&__pyx_mstate_global->__pyx_n_u_max_name_len,0}; PyObject* values[30] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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(0, 7285, __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(0, 7285, __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, "from_conf", 0) < (0)) __PYX_ERR(0, 7285, __pyx_L3_error) /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7questdb_7_client_6Sender_9from_conf_2generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ static PyObject *__pyx_pf_7questdb_7_client_6Sender_4from_conf(PyObject *__pyx_v_conf_str, PyObject *__pyx_v_bind_interface, PyObject *__pyx_v_username, PyObject *__pyx_v_password, PyObject *__pyx_v_token, PyObject *__pyx_v_token_x, PyObject *__pyx_v_token_y, PyObject *__pyx_v_auth_timeout, PyObject *__pyx_v_tls_verify, PyObject *__pyx_v_tls_ca, PyObject *__pyx_v_tls_roots, PyObject *__pyx_v_tls_roots_password, PyObject *__pyx_v_max_buf_size, PyObject *__pyx_v_retry_timeout, PyObject *__pyx_v_retry_max_backoff, PyObject *__pyx_v_request_min_throughput, PyObject *__pyx_v_request_timeout, PyObject *__pyx_v_auto_flush, PyObject *__pyx_v_auto_flush_rows, PyObject *__pyx_v_auto_flush_bytes, PyObject *__pyx_v_auto_flush_interval, PyObject *__pyx_v_max_datagram_size, PyObject *__pyx_v_multicast_ttl, PyObject *__pyx_v_qwp_ws_progress, PyObject *__pyx_v_error_handler, PyObject *__pyx_v_connection_listener, PyObject *__pyx_v_connection_event_inbox_capacity, PyObject *__pyx_v_protocol_version, PyObject *__pyx_v_init_buf_size, PyObject *__pyx_v_max_name_len) { struct line_sender_error *__pyx_v_err; PyObject *__pyx_v_protocol = 0; struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_sender = 0; PyObject *__pyx_v_synthetic_conf_str = 0; struct line_sender_utf8 __pyx_v_c_synthetic_conf_str; PyObject *__pyx_v_params = 0; struct qdb_pystr_buf *__pyx_v_b; PyObject *__pyx_v_addr = NULL; PyObject *__pyx_v_override_key = NULL; PyObject *__pyx_v_override_value = NULL; PyObject *__pyx_v_python_handled_keys = NULL; PyObject *__pyx_v_synthetic_params = NULL; PyObject *__pyx_v_key = NULL; PyObject *__pyx_v_value = NULL; PyObject *__pyx_gb_7questdb_7_client_6Sender_9from_conf_2generator6 = 0; 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_7); __Pyx_XDECREF(__pyx_t_16); __Pyx_XDECREF(__pyx_t_17); __Pyx_XDECREF(__pyx_t_18); __Pyx_XDECREF(__pyx_t_19); __Pyx_XDECREF(__pyx_t_20); __Pyx_XDECREF(__pyx_t_21); __Pyx_XDECREF(__pyx_t_22); __Pyx_XDECREF(__pyx_t_23); __Pyx_XDECREF(__pyx_t_24); __Pyx_XDECREF(__pyx_t_25); __Pyx_XDECREF(__pyx_t_26); __Pyx_XDECREF(__pyx_t_27); __Pyx_XDECREF(__pyx_t_28); __Pyx_XDECREF(__pyx_t_29); __Pyx_XDECREF(__pyx_t_30); __Pyx_XDECREF(__pyx_t_31); __Pyx_XDECREF(__pyx_t_32); __Pyx_XDECREF(__pyx_t_33); __Pyx_XDECREF(__pyx_t_34); __Pyx_XDECREF(__pyx_t_35); __Pyx_XDECREF(__pyx_t_36); __Pyx_AddTraceback("questdb._client.Sender.from_conf", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_protocol); __Pyx_XDECREF((PyObject *)__pyx_v_sender); __Pyx_XDECREF(__pyx_v_synthetic_conf_str); __Pyx_XDECREF(__pyx_v_params); __Pyx_XDECREF(__pyx_v_addr); __Pyx_XDECREF(__pyx_v_override_key); __Pyx_XDECREF(__pyx_v_override_value); __Pyx_XDECREF(__pyx_v_python_handled_keys); __Pyx_XDECREF(__pyx_v_synthetic_params); __Pyx_XDECREF(__pyx_v_key); __Pyx_XDECREF(__pyx_v_value); __Pyx_XDECREF(__pyx_gb_7questdb_7_client_6Sender_9from_conf_2generator6); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_PyDict_NewPresized(29); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7285, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_6Sender_5from_conf, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_from_conf, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[95])); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7285, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_13, __pyx_t_18); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_from_conf, __pyx_t_13) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_18 = NULL; __Pyx_GetNameInClass(__pyx_t_17, (PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_from_conf); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 7285, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_18, __pyx_t_17}; __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7285, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); } if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_from_conf, __pyx_t_13) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
7286: def from_conf(
7287: str conf_str,
7288: *,
+7289: str bind_interface=None,
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[1]) values[1] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_bind_interface, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7290: str username=None,
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_username, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7291: str password=None,
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[3]) values[3] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_password, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7292: str token=None,
if (!values[4]) values[4] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[4]) values[4] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_token, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7293: str token_x=None,
if (!values[5]) values[5] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[5]) values[5] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_token_x, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7294: str token_y=None,
if (!values[6]) values[6] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[6]) values[6] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_token_y, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7295: object auth_timeout=None, # default: 15000 milliseconds
if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_auth_timeout, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7296: object tls_verify=None, # default: True
if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_tls_verify, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7297: object tls_ca=None, # TLS default: TlsCa.WebpkiAndOsRoots
if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_tls_ca, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7298: object tls_roots=None,
if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_tls_roots, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7299: str tls_roots_password=None,
if (!values[11]) values[11] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[11]) values[11] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_tls_roots_password, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7300: object max_buf_size=None, # 100 * 1024 * 1024 - 100MiB
if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_max_buf_size, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7301: object retry_timeout=None, # default: 10000 milliseconds
if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_retry_timeout, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7302: object retry_max_backoff=None, # default: 1000 milliseconds
if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_retry_max_backoff, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7303: object request_min_throughput=None, # default: 100 * 1024 - 100KiB/s
if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_request_min_throughput, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7304: object request_timeout=None,
if (!values[16]) values[16] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[16]) values[16] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_request_timeout, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7305: object auto_flush=None, # Default True
if (!values[17]) values[17] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[17]) values[17] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_auto_flush, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7306: object auto_flush_rows=None, # Default 75000 (HTTP) or 600 (TCP)
if (!values[18]) values[18] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[18]) values[18] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_auto_flush_rows, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7307: object auto_flush_bytes=None, # Default off
if (!values[19]) values[19] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[19]) values[19] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_auto_flush_bytes, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7308: object auto_flush_interval=None, # Default 1000 milliseconds
if (!values[20]) values[20] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[20]) values[20] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_auto_flush_interval, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7309: object max_datagram_size=None, # Default 1400 for QWP/UDP
if (!values[21]) values[21] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[21]) values[21] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_max_datagram_size, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7310: object multicast_ttl=None, # Default 1 for QWP/UDP
if (!values[22]) values[22] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[22]) values[22] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_multicast_ttl, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7311: object qwp_ws_progress=None, # Default background for QWP/WebSocket
if (!values[23]) values[23] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[23]) values[23] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_qwp_ws_progress, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7312: object error_handler=None,
if (!values[24]) values[24] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[24]) values[24] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_error_handler, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7313: object connection_listener=None,
if (!values[25]) values[25] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[26]) values[26] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0)); /* … */ if (!values[25]) values[25] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[26]) values[26] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_connection_listener, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_connection_event_inbox_capacity, __pyx_mstate_global->__pyx_int_0) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
7314: object connection_event_inbox_capacity=0,
+7315: object protocol_version=None, # Default auto
if (!values[27]) values[27] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[27]) values[27] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_protocol_version, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7316: object init_buf_size=None, # 64KiB
if (!values[28]) values[28] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[28]) values[28] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_init_buf_size, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
+7317: object max_name_len=None): # 127
if (!values[29]) values[29] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("from_conf", 1, 1, 1, i); __PYX_ERR(0, 7285, __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(0, 7285, __pyx_L3_error) /* … */ if (!values[29]) values[29] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_conf_str = ((PyObject*)values[0]); __pyx_v_bind_interface = ((PyObject*)values[1]); __pyx_v_username = ((PyObject*)values[2]); __pyx_v_password = ((PyObject*)values[3]); __pyx_v_token = ((PyObject*)values[4]); __pyx_v_token_x = ((PyObject*)values[5]); __pyx_v_token_y = ((PyObject*)values[6]); __pyx_v_auth_timeout = values[7]; __pyx_v_tls_verify = values[8]; __pyx_v_tls_ca = values[9]; __pyx_v_tls_roots = values[10]; __pyx_v_tls_roots_password = ((PyObject*)values[11]); __pyx_v_max_buf_size = values[12]; __pyx_v_retry_timeout = values[13]; __pyx_v_retry_max_backoff = values[14]; __pyx_v_request_min_throughput = values[15]; __pyx_v_request_timeout = values[16]; __pyx_v_auto_flush = values[17]; __pyx_v_auto_flush_rows = values[18]; __pyx_v_auto_flush_bytes = values[19]; __pyx_v_auto_flush_interval = values[20]; __pyx_v_max_datagram_size = values[21]; __pyx_v_multicast_ttl = values[22]; __pyx_v_qwp_ws_progress = values[23]; __pyx_v_error_handler = values[24]; __pyx_v_connection_listener = values[25]; __pyx_v_connection_event_inbox_capacity = values[26]; __pyx_v_protocol_version = values[27]; __pyx_v_init_buf_size = values[28]; __pyx_v_max_name_len = values[29]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("from_conf", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7285, __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.Sender.from_conf", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_conf_str), (&PyUnicode_Type), 1, "conf_str", 1))) __PYX_ERR(0, 7287, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bind_interface), (&PyUnicode_Type), 1, "bind_interface", 1))) __PYX_ERR(0, 7289, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_username), (&PyUnicode_Type), 1, "username", 1))) __PYX_ERR(0, 7290, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_password), (&PyUnicode_Type), 1, "password", 1))) __PYX_ERR(0, 7291, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_token), (&PyUnicode_Type), 1, "token", 1))) __PYX_ERR(0, 7292, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_token_x), (&PyUnicode_Type), 1, "token_x", 1))) __PYX_ERR(0, 7293, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_token_y), (&PyUnicode_Type), 1, "token_y", 1))) __PYX_ERR(0, 7294, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tls_roots_password), (&PyUnicode_Type), 1, "tls_roots_password", 1))) __PYX_ERR(0, 7299, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_6Sender_4from_conf(__pyx_v_conf_str, __pyx_v_bind_interface, __pyx_v_username, __pyx_v_password, __pyx_v_token, __pyx_v_token_x, __pyx_v_token_y, __pyx_v_auth_timeout, __pyx_v_tls_verify, __pyx_v_tls_ca, __pyx_v_tls_roots, __pyx_v_tls_roots_password, __pyx_v_max_buf_size, __pyx_v_retry_timeout, __pyx_v_retry_max_backoff, __pyx_v_request_min_throughput, __pyx_v_request_timeout, __pyx_v_auto_flush, __pyx_v_auto_flush_rows, __pyx_v_auto_flush_bytes, __pyx_v_auto_flush_interval, __pyx_v_max_datagram_size, __pyx_v_multicast_ttl, __pyx_v_qwp_ws_progress, __pyx_v_error_handler, __pyx_v_connection_listener, __pyx_v_connection_event_inbox_capacity, __pyx_v_protocol_version, __pyx_v_init_buf_size, __pyx_v_max_name_len); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_max_name_len, Py_None) < (0)) __PYX_ERR(0, 7285, __pyx_L1_error)
7318: """
7319: Construct a sender from a :ref:`configuration string <sender_conf>`.
7320:
7321: The additional arguments are used to specify additional parameters
7322: which are not present in the configuration string.
7323:
7324: Note that any parameters already present in the configuration string
7325: cannot be overridden.
7326: """
7327:
+7328: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
7329: cdef object protocol
7330: cdef Sender sender
7331: cdef str synthetic_conf_str
7332: cdef line_sender_utf8 c_synthetic_conf_str
7333: cdef dict params
+7334: cdef qdb_pystr_buf* b = qdb_pystr_buf_new()
__pyx_v_b = qdb_pystr_buf_new();
+7335: try:
/*try:*/ {
+7336: protocol, params = parse_conf_str(b, conf_str)
__pyx_t_1 = __pyx_f_7questdb_7_client_parse_conf_str(__pyx_v_b, __pyx_v_conf_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7336, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 7336, __pyx_L4_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_3); } else { __pyx_t_2 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7336, __pyx_L4_error) __Pyx_XGOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7336, __pyx_L4_error) __Pyx_XGOTREF(__pyx_t_3); } #else __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7336, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7336, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7336, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < (0)) __PYX_ERR(0, 7336, __pyx_L4_error) __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L7_unpacking_done; __pyx_L6_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 7336, __pyx_L4_error) __pyx_L7_unpacking_done:; } if (!(likely(PyDict_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_3))) __PYX_ERR(0, 7336, __pyx_L4_error) __pyx_v_protocol = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_params = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
7337:
+7338: addr = params.get('addr')
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7338, __pyx_L4_error)
}
__pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_addr, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7338, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_addr = __pyx_t_1;
__pyx_t_1 = 0;
+7339: if addr is None:
__pyx_t_6 = (__pyx_v_addr == Py_None);
if (unlikely(__pyx_t_6)) {
/* … */
}
+7340: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7340, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
+7341: QuestDBErrorCode.ConfigError,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7341, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7341, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_2, __pyx__function); __pyx_t_8 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Missing_addr_parameter_in_config}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7340, __pyx_L4_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(0, 7340, __pyx_L4_error)
7342: 'Missing "addr" parameter in config string')
7343:
7344: # add fields to the dictionary, so long as they aren't already
7345: # present in the params dictionary
+7346: for override_key, override_value in {
__pyx_t_9 = 0;
/* … */
while (1) {
/* … */
__Pyx_XDECREF_SET(__pyx_v_override_key, __pyx_t_7);
__pyx_t_7 = 0;
__Pyx_XDECREF_SET(__pyx_v_override_value, __pyx_t_2);
__pyx_t_2 = 0;
+7347: 'bind_interface': bind_interface,
__pyx_t_2 = __Pyx_PyDict_NewPresized(26); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7347, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_bind_interface, __pyx_v_bind_interface) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error) /* … */ __pyx_t_7 = __Pyx_dict_iterator(__pyx_t_2, 1, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_10), (&__pyx_t_11)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7347, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_7; __pyx_t_7 = 0; /* … */ __pyx_t_12 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_10, &__pyx_t_9, &__pyx_t_7, &__pyx_t_2, NULL, __pyx_t_11); if (unlikely(__pyx_t_12 == 0)) break; if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 7347, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GOTREF(__pyx_t_2);
+7348: 'username': username,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_username, __pyx_v_username) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7349: 'password': password,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_password, __pyx_v_password) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7350: 'token': token,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_token, __pyx_v_token) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7351: 'token_x': token_x,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_token_x, __pyx_v_token_x) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7352: 'token_y': token_y,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_token_y, __pyx_v_token_y) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7353: 'auth_timeout': auth_timeout,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_auth_timeout, __pyx_v_auth_timeout) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7354: 'tls_verify': tls_verify,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_tls_verify, __pyx_v_tls_verify) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7355: 'tls_ca': tls_ca,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_tls_ca, __pyx_v_tls_ca) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7356: 'tls_roots': tls_roots,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_tls_roots, __pyx_v_tls_roots) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7357: 'tls_roots_password': tls_roots_password,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_tls_roots_password, __pyx_v_tls_roots_password) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7358: 'max_buf_size': max_buf_size,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_max_buf_size, __pyx_v_max_buf_size) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7359: 'retry_timeout': retry_timeout,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_retry_timeout, __pyx_v_retry_timeout) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7360: 'retry_max_backoff_millis': retry_max_backoff,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_retry_max_backoff_millis, __pyx_v_retry_max_backoff) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7361: 'request_min_throughput': request_min_throughput,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_request_min_throughput, __pyx_v_request_min_throughput) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7362: 'request_timeout': request_timeout,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_request_timeout, __pyx_v_request_timeout) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7363: 'auto_flush': auto_flush,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_auto_flush, __pyx_v_auto_flush) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7364: 'auto_flush_rows': auto_flush_rows,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_auto_flush_rows, __pyx_v_auto_flush_rows) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7365: 'auto_flush_bytes': auto_flush_bytes,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_auto_flush_bytes, __pyx_v_auto_flush_bytes) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7366: 'auto_flush_interval': auto_flush_interval,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_auto_flush_interval, __pyx_v_auto_flush_interval) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7367: 'max_datagram_size': max_datagram_size,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_max_datagram_size, __pyx_v_max_datagram_size) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7368: 'multicast_ttl': multicast_ttl,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_multicast_ttl, __pyx_v_multicast_ttl) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7369: 'qwp_ws_progress': qwp_ws_progress,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_qwp_ws_progress, __pyx_v_qwp_ws_progress) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7370: 'protocol_version': protocol_version,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_protocol_version, __pyx_v_protocol_version) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7371: 'init_buf_size': init_buf_size,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init_buf_size, __pyx_v_init_buf_size) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
+7372: 'max_name_len': max_name_len,
if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_max_name_len, __pyx_v_max_name_len) < (0)) __PYX_ERR(0, 7347, __pyx_L4_error)
7373: }.items():
+7374: if override_value is None:
__pyx_t_6 = (__pyx_v_override_value == Py_None);
if (__pyx_t_6) {
/* … */
}
+7375: continue
goto __pyx_L9_continue;
+7376: if override_key in params:
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
__PYX_ERR(0, 7376, __pyx_L4_error)
}
__pyx_t_6 = (__Pyx_PyDict_ContainsTF(__pyx_v_override_key, __pyx_v_params, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 7376, __pyx_L4_error)
if (unlikely(__pyx_t_6)) {
/* … */
}
+7377: raise ValueError(
__pyx_t_7 = NULL;
+7378: f'"{override_key}" is already present in the conf_str '
__pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_override_key, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7378, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u__29; __pyx_t_13[1] = __pyx_t_3; __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u_is_already_present_in_the_conf; __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_13, 3, 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 62, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7378, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __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_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7377, __pyx_L4_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(0, 7377, __pyx_L4_error)
7379: 'and cannot be overridden.')
+7380: params[override_key] = override_value
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 7380, __pyx_L4_error)
}
if (unlikely((PyDict_SetItem(__pyx_v_params, __pyx_v_override_key, __pyx_v_override_value) < 0))) __PYX_ERR(0, 7380, __pyx_L4_error)
__pyx_L9_continue:;
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7381:
+7382: sender = Sender.__new__(Sender)
__pyx_t_1 = ((PyObject *)__pyx_tp_new_7questdb_7_client_Sender(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7382, __pyx_L4_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); __pyx_v_sender = ((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_t_1); __pyx_t_1 = 0;
7383:
7384: python_handled_keys = {
+7385: 'addr',
__pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7385, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_addr) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_bind_interface) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_username) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_password) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_token) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_token_x) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_token_y) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_auth_timeout) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_tls_verify) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_tls_ca) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_tls_roots) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_tls_roots_password) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_max_buf_size) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_retry_timeout) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_retry_max_backoff_millis) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_request_min_throughput) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_request_timeout) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_auto_flush) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_auto_flush_rows) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_auto_flush_bytes) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_auto_flush_interval) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_max_datagram_size) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_multicast_ttl) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_qwp_ws_progress) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_protocol_version) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_init_buf_size) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) if (PySet_Add(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_max_name_len) < (0)) __PYX_ERR(0, 7385, __pyx_L4_error) __pyx_v_python_handled_keys = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
7386: 'bind_interface',
7387: 'username',
7388: 'password',
7389: 'token',
7390: 'token_x',
7391: 'token_y',
7392: 'auth_timeout',
7393: 'tls_verify',
7394: 'tls_ca',
7395: 'tls_roots',
7396: 'tls_roots_password',
7397: 'max_buf_size',
7398: 'retry_timeout',
7399: 'retry_max_backoff_millis',
7400: 'request_min_throughput',
7401: 'request_timeout',
7402: 'auto_flush',
7403: 'auto_flush_rows',
7404: 'auto_flush_bytes',
7405: 'auto_flush_interval',
7406: 'max_datagram_size',
7407: 'multicast_ttl',
7408: 'qwp_ws_progress',
7409: 'protocol_version',
7410: 'init_buf_size',
7411: 'max_name_len',
7412: }
+7413: synthetic_params = {'addr': addr}
__pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7413, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_addr, __pyx_v_addr) < (0)) __PYX_ERR(0, 7413, __pyx_L4_error) __pyx_v_synthetic_params = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+7414: if protocol in (Protocol.Ws, Protocol.Wss):
__Pyx_INCREF(__pyx_v_protocol); __pyx_t_1 = __pyx_v_protocol; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Protocol); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7414, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Ws); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7414, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7414, __pyx_L4_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 7414, __pyx_L4_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!__pyx_t_14) { } else { __pyx_t_6 = __pyx_t_14; goto __pyx_L14_bool_binop_done; } __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Protocol); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7414, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Wss); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7414, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7414, __pyx_L4_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 7414, __pyx_L4_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = __pyx_t_14; __pyx_L14_bool_binop_done:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_14 = __pyx_t_6; if (__pyx_t_14) { /* … */ }
+7415: for key, value in params.items():
__pyx_t_10 = 0;
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
__PYX_ERR(0, 7415, __pyx_L4_error)
}
__pyx_t_2 = __Pyx_dict_iterator(__pyx_v_params, 1, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_9), (&__pyx_t_11)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7415, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_1);
__pyx_t_1 = __pyx_t_2;
__pyx_t_2 = 0;
while (1) {
__pyx_t_12 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_9, &__pyx_t_10, &__pyx_t_2, &__pyx_t_4, NULL, __pyx_t_11);
if (unlikely(__pyx_t_12 == 0)) break;
if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(0, 7415, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_GOTREF(__pyx_t_4);
__Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_2);
__pyx_t_2 = 0;
__Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_4);
__pyx_t_4 = 0;
+7416: if key not in python_handled_keys:
__pyx_t_14 = (__Pyx_PySet_ContainsTF(__pyx_v_key, __pyx_v_python_handled_keys, Py_NE)); if (unlikely((__pyx_t_14 < 0))) __PYX_ERR(0, 7416, __pyx_L4_error) if (__pyx_t_14) { /* … */ } } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+7417: synthetic_params[key] = value
if (unlikely((PyDict_SetItem(__pyx_v_synthetic_params, __pyx_v_key, __pyx_v_value) < 0))) __PYX_ERR(0, 7417, __pyx_L4_error)
+7418: synthetic_conf_str = protocol.tag + '::' + ''.join(
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_protocol, __pyx_mstate_global->__pyx_n_u_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7418, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyNumber_Add(__pyx_t_1, __pyx_mstate_global->__pyx_kp_u__27); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7418, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_t_2 = __Pyx_Generator_GetInlinedResult(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7418, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__7, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7418, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7418, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __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(0, 7418, __pyx_L4_error) __pyx_v_synthetic_conf_str = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+7419: f'{key}={conf_str_value(value)};'
static PyObject *__pyx_pf_7questdb_7_client_6Sender_9from_conf_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_10_genexpr *__pyx_cur_scope;
PyObject *__pyx_r = NULL;
__pyx_cur_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct_10_genexpr *)__pyx_tp_new_7questdb_7_client___pyx_scope_struct_10_genexpr(__pyx_mstate_global->__pyx_ptype_7questdb_7_client___pyx_scope_struct_10_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_7questdb_7_client___pyx_scope_struct_10_genexpr *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 7419, __pyx_L1_error)
} else {
__Pyx_GOTREF((PyObject *)__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
__Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
{
__pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7questdb_7_client_6Sender_9from_conf_2generator6, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[6]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_from_conf_locals_genexpr, __pyx_mstate_global->__pyx_n_u_questdb__client); if (unlikely(!gen)) __PYX_ERR(0, 7419, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
}
/* function exit code */
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client.Sender.from_conf.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__Pyx_DECREF((PyObject *)__pyx_cur_scope);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_gb_7questdb_7_client_6Sender_9from_conf_2generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("genexpr", 0);
__pyx_L3_first_run:;
if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 7419, __pyx_L1_error)
__pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(0, 7419, __pyx_L1_error)
__Pyx_GOTREF(__pyx_r);
/* … */
__pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_key, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7419, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_5 = __pyx_f_7questdb_7_client_conf_str_value(__pyx_cur_scope->__pyx_v_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7419, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_8 = __Pyx_PyUnicode_Unicode(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7419, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_9[0] = __pyx_t_6;
__pyx_t_9[1] = __pyx_mstate_global->__pyx_kp_u__26;
__pyx_t_9[2] = __pyx_t_8;
__pyx_t_9[3] = __pyx_mstate_global->__pyx_kp_u__23;
__pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_9, 4, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8));
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7419, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 7419, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_r); __pyx_r = 0;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
if (__Pyx_PyErr_Occurred()) {
__Pyx_Generator_Replace_StopIteration(0);
__Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
#if !CYTHON_USE_EXC_INFO_STACK
__Pyx_Coroutine_ResetAndClearException(__pyx_generator);
#endif
__pyx_generator->resume_label = -1;
__Pyx_Coroutine_clear((PyObject*)__pyx_generator);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_1 = __pyx_pf_7questdb_7_client_6Sender_9from_conf_genexpr(NULL, __pyx_v_synthetic_params); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7419, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
/* … */
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_10_genexpr {
PyObject_HEAD
PyObject *__pyx_genexpr_arg_0;
PyObject *__pyx_v_key;
PyObject *__pyx_v_value;
};
+7420: for key, value in synthetic_params.items())
__pyx_t_2 = 0;
if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(0, 7420, __pyx_L1_error) }
__pyx_t_5 = __Pyx_dict_iterator(__pyx_cur_scope->__pyx_genexpr_arg_0, 1, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7420, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_1);
__pyx_t_1 = __pyx_t_5;
__pyx_t_5 = 0;
while (1) {
__pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4);
if (unlikely(__pyx_t_7 == 0)) break;
if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 7420, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_key);
__Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_key, __pyx_t_5);
__Pyx_GIVEREF(__pyx_t_5);
__pyx_t_5 = 0;
__Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_value);
__Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_value, __pyx_t_6);
__Pyx_GIVEREF(__pyx_t_6);
__pyx_t_6 = 0;
+7421: str_to_utf8(b, <PyObject*>synthetic_conf_str, &c_synthetic_conf_str)
__pyx_t_15 = __pyx_f_7questdb_7_client_str_to_utf8(__pyx_v_b, ((PyObject *)__pyx_v_synthetic_conf_str), (&__pyx_v_c_synthetic_conf_str)); if (unlikely(__pyx_t_15 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 7421, __pyx_L4_error)
+7422: sender._opts = line_sender_opts_from_conf(
__pyx_v_sender->_opts = line_sender_opts_from_conf(__pyx_v_c_synthetic_conf_str, (&__pyx_v_err));
7423: c_synthetic_conf_str, &err)
+7424: if sender._opts == NULL:
__pyx_t_14 = (__pyx_v_sender->_opts == NULL);
if (unlikely(__pyx_t_14)) {
/* … */
}
+7425: raise 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(0, 7425, __pyx_L4_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(0, 7425, __pyx_L4_error)
7426:
+7427: sender._set_sender_fields(
__pyx_t_15 = ((struct __pyx_vtabstruct_7questdb_7_client_Sender *)__pyx_v_sender->__pyx_vtab)->_set_sender_fields(__pyx_v_sender, __pyx_v_b, __pyx_v_protocol, ((PyObject*)__pyx_t_2), ((PyObject*)__pyx_t_1), ((PyObject*)__pyx_t_4), ((PyObject*)__pyx_t_7), ((PyObject*)__pyx_t_3), ((PyObject*)__pyx_t_16), __pyx_t_17, __pyx_t_18, __pyx_t_19, __pyx_t_20, __pyx_t_21, __pyx_t_22, __pyx_t_23, __pyx_t_24, __pyx_t_25, __pyx_t_26, __pyx_t_27, __pyx_t_28, __pyx_t_29, __pyx_t_30, __pyx_t_31, __pyx_t_32, __pyx_t_33, __pyx_t_34, __pyx_v_error_handler, __pyx_v_connection_listener, __pyx_v_connection_event_inbox_capacity, __pyx_t_35, __pyx_t_36); if (unlikely(__pyx_t_15 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 7427, __pyx_L4_error) __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; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0; __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0; __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0; __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0; __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0; __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0; __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0; __Pyx_DECREF(__pyx_t_28); __pyx_t_28 = 0; __Pyx_DECREF(__pyx_t_29); __pyx_t_29 = 0; __Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0; __Pyx_DECREF(__pyx_t_31); __pyx_t_31 = 0; __Pyx_DECREF(__pyx_t_32); __pyx_t_32 = 0; __Pyx_DECREF(__pyx_t_33); __pyx_t_33 = 0; __Pyx_DECREF(__pyx_t_34); __pyx_t_34 = 0; __Pyx_DECREF(__pyx_t_35); __pyx_t_35 = 0; __Pyx_DECREF(__pyx_t_36); __pyx_t_36 = 0;
7428: b,
7429: protocol,
+7430: params.get('bind_interface'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7430, __pyx_L4_error)
}
__pyx_t_2 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_bind_interface, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7430, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
if (!(likely(PyUnicode_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(0, 7430, __pyx_L4_error)
+7431: params.get('username'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7431, __pyx_L4_error)
}
__pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_username, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7431, __pyx_L4_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(0, 7431, __pyx_L4_error)
+7432: params.get('password'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7432, __pyx_L4_error)
}
__pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_password, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7432, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_4);
if (!(likely(PyUnicode_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(0, 7432, __pyx_L4_error)
+7433: params.get('token'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7433, __pyx_L4_error)
}
__pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_token, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7433, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_7);
if (!(likely(PyUnicode_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_7))) __PYX_ERR(0, 7433, __pyx_L4_error)
+7434: params.get('token_x'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7434, __pyx_L4_error)
}
__pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_token_x, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7434, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_3);
if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(0, 7434, __pyx_L4_error)
+7435: params.get('token_y'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7435, __pyx_L4_error)
}
__pyx_t_16 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_token_y, Py_None); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 7435, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_16);
if (!(likely(PyUnicode_CheckExact(__pyx_t_16))||((__pyx_t_16) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_16))) __PYX_ERR(0, 7435, __pyx_L4_error)
+7436: params.get('auth_timeout'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7436, __pyx_L4_error)
}
__pyx_t_17 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_auth_timeout, Py_None); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 7436, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_17);
+7437: params.get('tls_verify'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7437, __pyx_L4_error)
}
__pyx_t_18 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_tls_verify, Py_None); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7437, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_18);
+7438: params.get('tls_ca'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7438, __pyx_L4_error)
}
__pyx_t_19 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_tls_ca, Py_None); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 7438, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_19);
+7439: params.get('tls_roots'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7439, __pyx_L4_error)
}
__pyx_t_20 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_tls_roots, Py_None); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 7439, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_20);
+7440: params.get('tls_roots_password'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7440, __pyx_L4_error)
}
__pyx_t_21 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_tls_roots_password, Py_None); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 7440, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_21);
+7441: params.get('max_buf_size'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7441, __pyx_L4_error)
}
__pyx_t_22 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_max_buf_size, Py_None); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 7441, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_22);
+7442: params.get('retry_timeout'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7442, __pyx_L4_error)
}
__pyx_t_23 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_retry_timeout, Py_None); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 7442, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_23);
+7443: params.get('retry_max_backoff_millis'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7443, __pyx_L4_error)
}
__pyx_t_24 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_retry_max_backoff_millis, Py_None); if (unlikely(!__pyx_t_24)) __PYX_ERR(0, 7443, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_24);
+7444: params.get('request_min_throughput'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7444, __pyx_L4_error)
}
__pyx_t_25 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_request_min_throughput, Py_None); if (unlikely(!__pyx_t_25)) __PYX_ERR(0, 7444, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_25);
+7445: params.get('request_timeout'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7445, __pyx_L4_error)
}
__pyx_t_26 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_request_timeout, Py_None); if (unlikely(!__pyx_t_26)) __PYX_ERR(0, 7445, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_26);
+7446: params.get('auto_flush'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7446, __pyx_L4_error)
}
__pyx_t_27 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_auto_flush, Py_None); if (unlikely(!__pyx_t_27)) __PYX_ERR(0, 7446, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_27);
+7447: params.get('auto_flush_rows'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7447, __pyx_L4_error)
}
__pyx_t_28 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_auto_flush_rows, Py_None); if (unlikely(!__pyx_t_28)) __PYX_ERR(0, 7447, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_28);
+7448: params.get('auto_flush_bytes'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7448, __pyx_L4_error)
}
__pyx_t_29 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_auto_flush_bytes, Py_None); if (unlikely(!__pyx_t_29)) __PYX_ERR(0, 7448, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_29);
+7449: params.get('auto_flush_interval'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7449, __pyx_L4_error)
}
__pyx_t_30 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_auto_flush_interval, Py_None); if (unlikely(!__pyx_t_30)) __PYX_ERR(0, 7449, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_30);
+7450: params.get('max_datagram_size'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7450, __pyx_L4_error)
}
__pyx_t_31 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_max_datagram_size, Py_None); if (unlikely(!__pyx_t_31)) __PYX_ERR(0, 7450, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_31);
+7451: params.get('multicast_ttl'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7451, __pyx_L4_error)
}
__pyx_t_32 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_multicast_ttl, Py_None); if (unlikely(!__pyx_t_32)) __PYX_ERR(0, 7451, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_32);
+7452: params.get('protocol_version'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7452, __pyx_L4_error)
}
__pyx_t_33 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_protocol_version, Py_None); if (unlikely(!__pyx_t_33)) __PYX_ERR(0, 7452, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_33);
+7453: params.get('qwp_ws_progress'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7453, __pyx_L4_error)
}
__pyx_t_34 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_qwp_ws_progress, Py_None); if (unlikely(!__pyx_t_34)) __PYX_ERR(0, 7453, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_34);
7454: error_handler,
7455: connection_listener,
7456: connection_event_inbox_capacity,
+7457: params.get('init_buf_size'),
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7457, __pyx_L4_error)
}
__pyx_t_35 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_init_buf_size, Py_None); if (unlikely(!__pyx_t_35)) __PYX_ERR(0, 7457, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_35);
+7458: params.get('max_name_len'))
if (unlikely(__pyx_v_params == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
__PYX_ERR(0, 7458, __pyx_L4_error)
}
__pyx_t_36 = __Pyx_PyDict_GetItemDefault(__pyx_v_params, __pyx_mstate_global->__pyx_n_u_max_name_len, Py_None); if (unlikely(!__pyx_t_36)) __PYX_ERR(0, 7458, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_36);
7459:
+7460: return sender
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_sender); __pyx_r = ((PyObject *)__pyx_v_sender); goto __pyx_L3_return; }
7461: finally:
+7462: qdb_pystr_buf_free(b)
/*finally:*/ {
__pyx_L4_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_38 = 0; __pyx_t_39 = 0; __pyx_t_40 = 0; __pyx_t_41 = 0; __pyx_t_42 = 0; __pyx_t_43 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 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_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
__Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
__Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
__Pyx_XDECREF(__pyx_t_23); __pyx_t_23 = 0;
__Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
__Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
__Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0;
__Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
__Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
__Pyx_XDECREF(__pyx_t_29); __pyx_t_29 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
__Pyx_XDECREF(__pyx_t_31); __pyx_t_31 = 0;
__Pyx_XDECREF(__pyx_t_32); __pyx_t_32 = 0;
__Pyx_XDECREF(__pyx_t_33); __pyx_t_33 = 0;
__Pyx_XDECREF(__pyx_t_34); __pyx_t_34 = 0;
__Pyx_XDECREF(__pyx_t_35); __pyx_t_35 = 0;
__Pyx_XDECREF(__pyx_t_36); __pyx_t_36 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_ExceptionSwap(&__pyx_t_41, &__pyx_t_42, &__pyx_t_43);
if ( unlikely(__Pyx_GetException(&__pyx_t_38, &__pyx_t_39, &__pyx_t_40) < 0)) __Pyx_ErrFetch(&__pyx_t_38, &__pyx_t_39, &__pyx_t_40);
__Pyx_XGOTREF(__pyx_t_38);
__Pyx_XGOTREF(__pyx_t_39);
__Pyx_XGOTREF(__pyx_t_40);
__Pyx_XGOTREF(__pyx_t_41);
__Pyx_XGOTREF(__pyx_t_42);
__Pyx_XGOTREF(__pyx_t_43);
__pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_37 = __pyx_filename;
{
qdb_pystr_buf_free(__pyx_v_b);
}
__Pyx_XGIVEREF(__pyx_t_41);
__Pyx_XGIVEREF(__pyx_t_42);
__Pyx_XGIVEREF(__pyx_t_43);
__Pyx_ExceptionReset(__pyx_t_41, __pyx_t_42, __pyx_t_43);
__Pyx_XGIVEREF(__pyx_t_38);
__Pyx_XGIVEREF(__pyx_t_39);
__Pyx_XGIVEREF(__pyx_t_40);
__Pyx_ErrRestore(__pyx_t_38, __pyx_t_39, __pyx_t_40);
__pyx_t_38 = 0; __pyx_t_39 = 0; __pyx_t_40 = 0; __pyx_t_41 = 0; __pyx_t_42 = 0; __pyx_t_43 = 0;
__pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_37;
goto __pyx_L1_error;
}
__pyx_L3_return: {
__pyx_t_43 = __pyx_r;
__pyx_r = 0;
qdb_pystr_buf_free(__pyx_v_b);
__pyx_r = __pyx_t_43;
__pyx_t_43 = 0;
goto __pyx_L0;
}
}
7463:
+7464: @staticmethod
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_7from_env(CYTHON_UNUSED 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_6Sender_6from_env, "\n Construct a sender from the ``QDB_CLIENT_CONF`` environment variable.\n\n The environment variable must be set to a valid\n :ref:`configuration string <sender_conf>`.\n\n The additional arguments are used to specify additional parameters\n which are not present in the configuration string.\n\n Note that any parameters already present in the configuration string\n cannot be overridden.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_7from_env = {"from_env", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_7from_env, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_6from_env}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_7from_env(CYTHON_UNUSED 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_bind_interface = 0; PyObject *__pyx_v_username = 0; PyObject *__pyx_v_password = 0; PyObject *__pyx_v_token = 0; PyObject *__pyx_v_token_x = 0; PyObject *__pyx_v_token_y = 0; PyObject *__pyx_v_auth_timeout = 0; PyObject *__pyx_v_tls_verify = 0; PyObject *__pyx_v_tls_ca = 0; PyObject *__pyx_v_tls_roots = 0; PyObject *__pyx_v_tls_roots_password = 0; PyObject *__pyx_v_max_buf_size = 0; PyObject *__pyx_v_retry_timeout = 0; PyObject *__pyx_v_retry_max_backoff = 0; PyObject *__pyx_v_request_min_throughput = 0; PyObject *__pyx_v_request_timeout = 0; PyObject *__pyx_v_auto_flush = 0; PyObject *__pyx_v_auto_flush_rows = 0; PyObject *__pyx_v_auto_flush_bytes = 0; PyObject *__pyx_v_auto_flush_interval = 0; PyObject *__pyx_v_max_datagram_size = 0; PyObject *__pyx_v_multicast_ttl = 0; PyObject *__pyx_v_qwp_ws_progress = 0; PyObject *__pyx_v_error_handler = 0; PyObject *__pyx_v_connection_listener = 0; PyObject *__pyx_v_connection_event_inbox_capacity = 0; PyObject *__pyx_v_protocol_version = 0; PyObject *__pyx_v_init_buf_size = 0; PyObject *__pyx_v_max_name_len = 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("from_env (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_bind_interface,&__pyx_mstate_global->__pyx_n_u_username,&__pyx_mstate_global->__pyx_n_u_password,&__pyx_mstate_global->__pyx_n_u_token,&__pyx_mstate_global->__pyx_n_u_token_x,&__pyx_mstate_global->__pyx_n_u_token_y,&__pyx_mstate_global->__pyx_n_u_auth_timeout,&__pyx_mstate_global->__pyx_n_u_tls_verify,&__pyx_mstate_global->__pyx_n_u_tls_ca,&__pyx_mstate_global->__pyx_n_u_tls_roots,&__pyx_mstate_global->__pyx_n_u_tls_roots_password,&__pyx_mstate_global->__pyx_n_u_max_buf_size,&__pyx_mstate_global->__pyx_n_u_retry_timeout,&__pyx_mstate_global->__pyx_n_u_retry_max_backoff,&__pyx_mstate_global->__pyx_n_u_request_min_throughput,&__pyx_mstate_global->__pyx_n_u_request_timeout,&__pyx_mstate_global->__pyx_n_u_auto_flush,&__pyx_mstate_global->__pyx_n_u_auto_flush_rows,&__pyx_mstate_global->__pyx_n_u_auto_flush_bytes,&__pyx_mstate_global->__pyx_n_u_auto_flush_interval,&__pyx_mstate_global->__pyx_n_u_max_datagram_size,&__pyx_mstate_global->__pyx_n_u_multicast_ttl,&__pyx_mstate_global->__pyx_n_u_qwp_ws_progress,&__pyx_mstate_global->__pyx_n_u_error_handler,&__pyx_mstate_global->__pyx_n_u_connection_listener,&__pyx_mstate_global->__pyx_n_u_connection_event_inbox_capacity,&__pyx_mstate_global->__pyx_n_u_protocol_version,&__pyx_mstate_global->__pyx_n_u_init_buf_size,&__pyx_mstate_global->__pyx_n_u_max_name_len,0}; PyObject* values[29] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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(0, 7464, __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, "from_env", 0) < (0)) __PYX_ERR(0, 7464, __pyx_L3_error) /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Sender_6from_env(PyObject *__pyx_v_bind_interface, PyObject *__pyx_v_username, PyObject *__pyx_v_password, PyObject *__pyx_v_token, PyObject *__pyx_v_token_x, PyObject *__pyx_v_token_y, PyObject *__pyx_v_auth_timeout, PyObject *__pyx_v_tls_verify, PyObject *__pyx_v_tls_ca, PyObject *__pyx_v_tls_roots, PyObject *__pyx_v_tls_roots_password, PyObject *__pyx_v_max_buf_size, PyObject *__pyx_v_retry_timeout, PyObject *__pyx_v_retry_max_backoff, PyObject *__pyx_v_request_min_throughput, PyObject *__pyx_v_request_timeout, PyObject *__pyx_v_auto_flush, PyObject *__pyx_v_auto_flush_rows, PyObject *__pyx_v_auto_flush_bytes, PyObject *__pyx_v_auto_flush_interval, PyObject *__pyx_v_max_datagram_size, PyObject *__pyx_v_multicast_ttl, PyObject *__pyx_v_qwp_ws_progress, PyObject *__pyx_v_error_handler, PyObject *__pyx_v_connection_listener, PyObject *__pyx_v_connection_event_inbox_capacity, PyObject *__pyx_v_protocol_version, PyObject *__pyx_v_init_buf_size, PyObject *__pyx_v_max_name_len) { PyObject *__pyx_v_conf_str = 0; 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_7); __Pyx_AddTraceback("questdb._client.Sender.from_env", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_conf_str); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(29); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_6Sender_7from_env, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_from_env, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[96])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 7464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_17, __pyx_t_13); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_from_env, __pyx_t_17) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_13 = NULL; __Pyx_GetNameInClass(__pyx_t_18, (PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_from_env); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_18}; __pyx_t_17 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 7464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); } if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_from_env, __pyx_t_17) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
7465: def from_env(
7466: *,
+7467: str bind_interface=None,
if (!values[0]) values[0] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[0]) values[0] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_bind_interface, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7468: str username=None,
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[1]) values[1] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_username, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7469: str password=None,
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_password, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7470: str token=None,
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[3]) values[3] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_token, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7471: str token_x=None,
if (!values[4]) values[4] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[4]) values[4] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_token_x, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7472: str token_y=None,
if (!values[5]) values[5] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[5]) values[5] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_token_y, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7473: object auth_timeout=None, # default: 15000 milliseconds
if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_auth_timeout, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7474: object tls_verify=None, # default: True
if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_tls_verify, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7475: object tls_ca=None, # TLS default: TlsCa.WebpkiAndOsRoots
if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_tls_ca, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7476: object tls_roots=None,
if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_tls_roots, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7477: str tls_roots_password=None,
if (!values[10]) values[10] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (!values[10]) values[10] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_tls_roots_password, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7478: object max_buf_size=None, # 100 * 1024 * 1024 - 100MiB
if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_max_buf_size, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7479: object retry_timeout=None, # default: 10000 milliseconds
if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_retry_timeout, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7480: object retry_max_backoff=None, # default: 1000 milliseconds
if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_retry_max_backoff, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7481: object request_min_throughput=None, # default: 100 * 1024 - 100KiB/s
if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_request_min_throughput, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7482: object request_timeout=None,
if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_request_timeout, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7483: object auto_flush=None, # Default True
if (!values[16]) values[16] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[16]) values[16] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_auto_flush, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7484: object auto_flush_rows=None, # Default 75000 (HTTP) or 600 (TCP)
if (!values[17]) values[17] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[17]) values[17] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_auto_flush_rows, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7485: object auto_flush_bytes=None, # Default off
if (!values[18]) values[18] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[18]) values[18] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_auto_flush_bytes, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7486: object auto_flush_interval=None, # Default 1000 milliseconds
if (!values[19]) values[19] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[19]) values[19] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_auto_flush_interval, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7487: object max_datagram_size=None, # Default 1400 for QWP/UDP
if (!values[20]) values[20] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[20]) values[20] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_max_datagram_size, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7488: object multicast_ttl=None, # Default 1 for QWP/UDP
if (!values[21]) values[21] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[21]) values[21] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_multicast_ttl, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7489: object qwp_ws_progress=None, # Default background for QWP/WebSocket
if (!values[22]) values[22] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[22]) values[22] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_qwp_ws_progress, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7490: object error_handler=None,
if (!values[23]) values[23] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[23]) values[23] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_error_handler, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7491: object connection_listener=None,
if (!values[24]) values[24] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[25]) values[25] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0)); /* … */ if (!values[24]) values[24] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[25]) values[25] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_connection_listener, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_connection_event_inbox_capacity, __pyx_mstate_global->__pyx_int_0) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
7492: object connection_event_inbox_capacity=0,
+7493: object protocol_version=None, # Default auto
if (!values[26]) values[26] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[26]) values[26] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_protocol_version, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7494: object init_buf_size=None, # 64KiB
if (!values[27]) values[27] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (!values[27]) values[27] = __Pyx_NewRef(((PyObject *)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_init_buf_size, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
+7495: object max_name_len=None): # 127
if (!values[28]) values[28] = __Pyx_NewRef(((PyObject *)Py_None)); } else if (unlikely(__pyx_nargs != 0)) { goto __pyx_L5_argtuple_error; } else { /* … */ if (!values[28]) values[28] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_bind_interface = ((PyObject*)values[0]); __pyx_v_username = ((PyObject*)values[1]); __pyx_v_password = ((PyObject*)values[2]); __pyx_v_token = ((PyObject*)values[3]); __pyx_v_token_x = ((PyObject*)values[4]); __pyx_v_token_y = ((PyObject*)values[5]); __pyx_v_auth_timeout = values[6]; __pyx_v_tls_verify = values[7]; __pyx_v_tls_ca = values[8]; __pyx_v_tls_roots = values[9]; __pyx_v_tls_roots_password = ((PyObject*)values[10]); __pyx_v_max_buf_size = values[11]; __pyx_v_retry_timeout = values[12]; __pyx_v_retry_max_backoff = values[13]; __pyx_v_request_min_throughput = values[14]; __pyx_v_request_timeout = values[15]; __pyx_v_auto_flush = values[16]; __pyx_v_auto_flush_rows = values[17]; __pyx_v_auto_flush_bytes = values[18]; __pyx_v_auto_flush_interval = values[19]; __pyx_v_max_datagram_size = values[20]; __pyx_v_multicast_ttl = values[21]; __pyx_v_qwp_ws_progress = values[22]; __pyx_v_error_handler = values[23]; __pyx_v_connection_listener = values[24]; __pyx_v_connection_event_inbox_capacity = values[25]; __pyx_v_protocol_version = values[26]; __pyx_v_init_buf_size = values[27]; __pyx_v_max_name_len = values[28]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("from_env", 1, 0, 0, __pyx_nargs); __PYX_ERR(0, 7464, __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.Sender.from_env", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bind_interface), (&PyUnicode_Type), 1, "bind_interface", 1))) __PYX_ERR(0, 7467, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_username), (&PyUnicode_Type), 1, "username", 1))) __PYX_ERR(0, 7468, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_password), (&PyUnicode_Type), 1, "password", 1))) __PYX_ERR(0, 7469, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_token), (&PyUnicode_Type), 1, "token", 1))) __PYX_ERR(0, 7470, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_token_x), (&PyUnicode_Type), 1, "token_x", 1))) __PYX_ERR(0, 7471, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_token_y), (&PyUnicode_Type), 1, "token_y", 1))) __PYX_ERR(0, 7472, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tls_roots_password), (&PyUnicode_Type), 1, "tls_roots_password", 1))) __PYX_ERR(0, 7477, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_6Sender_6from_env(__pyx_v_bind_interface, __pyx_v_username, __pyx_v_password, __pyx_v_token, __pyx_v_token_x, __pyx_v_token_y, __pyx_v_auth_timeout, __pyx_v_tls_verify, __pyx_v_tls_ca, __pyx_v_tls_roots, __pyx_v_tls_roots_password, __pyx_v_max_buf_size, __pyx_v_retry_timeout, __pyx_v_retry_max_backoff, __pyx_v_request_min_throughput, __pyx_v_request_timeout, __pyx_v_auto_flush, __pyx_v_auto_flush_rows, __pyx_v_auto_flush_bytes, __pyx_v_auto_flush_interval, __pyx_v_max_datagram_size, __pyx_v_multicast_ttl, __pyx_v_qwp_ws_progress, __pyx_v_error_handler, __pyx_v_connection_listener, __pyx_v_connection_event_inbox_capacity, __pyx_v_protocol_version, __pyx_v_init_buf_size, __pyx_v_max_name_len); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_max_name_len, Py_None) < (0)) __PYX_ERR(0, 7464, __pyx_L1_error)
7496: """
7497: Construct a sender from the ``QDB_CLIENT_CONF`` environment variable.
7498:
7499: The environment variable must be set to a valid
7500: :ref:`configuration string <sender_conf>`.
7501:
7502: The additional arguments are used to specify additional parameters
7503: which are not present in the configuration string.
7504:
7505: Note that any parameters already present in the configuration string
7506: cannot be overridden.
7507: """
+7508: cdef str conf_str = os.environ.get('QDB_CLIENT_CONF')
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_environ); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_4; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QDB_CLIENT_CONF}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__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(0, 7508, __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(0, 7508, __pyx_L1_error) __pyx_v_conf_str = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+7509: if conf_str is None:
__pyx_t_6 = (__pyx_v_conf_str == ((PyObject*)Py_None));
if (unlikely(__pyx_t_6)) {
/* … */
}
+7510: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7510, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
+7511: QuestDBErrorCode.ConfigError,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ConfigError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); assert(__pyx_t_4); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_2, __pyx__function); __pyx_t_5 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_7, __pyx_mstate_global->__pyx_kp_u_Environment_variable_QDB_CLIENT}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_5, (3-__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; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7510, __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(0, 7510, __pyx_L1_error)
7512: 'Environment variable QDB_CLIENT_CONF is not set.')
+7513: return Sender.from_conf(
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender); __Pyx_INCREF(__pyx_t_2);
7514: conf_str,
7515: bind_interface=bind_interface,
7516: username=username,
7517: password=password,
7518: token=token,
7519: token_x=token_x,
7520: token_y=token_y,
7521: auth_timeout=auth_timeout,
7522: tls_verify=tls_verify,
7523: tls_ca=tls_ca,
7524: tls_roots=tls_roots,
7525: tls_roots_password=tls_roots_password,
7526: max_buf_size=max_buf_size,
7527: retry_timeout=retry_timeout,
7528: retry_max_backoff=retry_max_backoff,
7529: request_min_throughput=request_min_throughput,
7530: request_timeout=request_timeout,
7531: auto_flush=auto_flush,
7532: auto_flush_rows=auto_flush_rows,
7533: auto_flush_bytes=auto_flush_bytes,
7534: auto_flush_interval=auto_flush_interval,
7535: max_datagram_size=max_datagram_size,
7536: multicast_ttl=multicast_ttl,
7537: qwp_ws_progress=qwp_ws_progress,
7538: error_handler=error_handler,
7539: connection_listener=connection_listener,
7540: connection_event_inbox_capacity=connection_event_inbox_capacity,
7541: protocol_version=protocol_version,
7542: init_buf_size=init_buf_size,
+7543: max_name_len=max_name_len)
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 29 : 0)] = {__pyx_t_2, __pyx_v_conf_str};
__pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(29); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7513, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_bind_interface, __pyx_v_bind_interface, __pyx_t_7, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_username, __pyx_v_username, __pyx_t_7, __pyx_callargs+2, 1) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_password, __pyx_v_password, __pyx_t_7, __pyx_callargs+2, 2) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_token, __pyx_v_token, __pyx_t_7, __pyx_callargs+2, 3) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_token_x, __pyx_v_token_x, __pyx_t_7, __pyx_callargs+2, 4) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_token_y, __pyx_v_token_y, __pyx_t_7, __pyx_callargs+2, 5) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_auth_timeout, __pyx_v_auth_timeout, __pyx_t_7, __pyx_callargs+2, 6) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tls_verify, __pyx_v_tls_verify, __pyx_t_7, __pyx_callargs+2, 7) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tls_ca, __pyx_v_tls_ca, __pyx_t_7, __pyx_callargs+2, 8) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tls_roots, __pyx_v_tls_roots, __pyx_t_7, __pyx_callargs+2, 9) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tls_roots_password, __pyx_v_tls_roots_password, __pyx_t_7, __pyx_callargs+2, 10) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_max_buf_size, __pyx_v_max_buf_size, __pyx_t_7, __pyx_callargs+2, 11) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_retry_timeout, __pyx_v_retry_timeout, __pyx_t_7, __pyx_callargs+2, 12) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_retry_max_backoff, __pyx_v_retry_max_backoff, __pyx_t_7, __pyx_callargs+2, 13) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_request_min_throughput, __pyx_v_request_min_throughput, __pyx_t_7, __pyx_callargs+2, 14) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_request_timeout, __pyx_v_request_timeout, __pyx_t_7, __pyx_callargs+2, 15) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_auto_flush, __pyx_v_auto_flush, __pyx_t_7, __pyx_callargs+2, 16) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_auto_flush_rows, __pyx_v_auto_flush_rows, __pyx_t_7, __pyx_callargs+2, 17) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_auto_flush_bytes, __pyx_v_auto_flush_bytes, __pyx_t_7, __pyx_callargs+2, 18) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_auto_flush_interval, __pyx_v_auto_flush_interval, __pyx_t_7, __pyx_callargs+2, 19) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_max_datagram_size, __pyx_v_max_datagram_size, __pyx_t_7, __pyx_callargs+2, 20) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_multicast_ttl, __pyx_v_multicast_ttl, __pyx_t_7, __pyx_callargs+2, 21) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_qwp_ws_progress, __pyx_v_qwp_ws_progress, __pyx_t_7, __pyx_callargs+2, 22) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_error_handler, __pyx_v_error_handler, __pyx_t_7, __pyx_callargs+2, 23) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_connection_listener, __pyx_v_connection_listener, __pyx_t_7, __pyx_callargs+2, 24) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_connection_event_inbox_capacity, __pyx_v_connection_event_inbox_capacity, __pyx_t_7, __pyx_callargs+2, 25) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_protocol_version, __pyx_v_protocol_version, __pyx_t_7, __pyx_callargs+2, 26) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_init_buf_size, __pyx_v_init_buf_size, __pyx_t_7, __pyx_callargs+2, 27) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_max_name_len, __pyx_v_max_name_len, __pyx_t_7, __pyx_callargs+2, 28) < (0)) __PYX_ERR(0, 7513, __pyx_L1_error)
__pyx_t_1 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_from_conf, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7513, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
7544:
7545:
+7546: cdef inline object _new_buffer_for_sender(self):
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client_6Sender__new_buffer_for_sender(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) {
struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_buf = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.Sender._new_buffer_for_sender", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_buf);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+7547: cdef Buffer buf = Buffer.__new__(Buffer)
__pyx_t_1 = ((PyObject *)__pyx_tp_new_7questdb_7_client_Buffer(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Buffer), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7547, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); __pyx_v_buf = ((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_t_1); __pyx_t_1 = 0;
+7548: buf._impl = line_sender_buffer_new_for_sender(self._impl)
__pyx_v_buf->_impl = line_sender_buffer_new_for_sender(__pyx_v_self->_impl);
+7549: buf._b = qdb_pystr_buf_new()
__pyx_v_buf->_b = qdb_pystr_buf_new();
+7550: reserve_buffer(buf._impl, self._init_buf_size)
__pyx_t_2 = __pyx_f_7questdb_7_client_reserve_buffer(__pyx_v_buf->_impl, __pyx_v_self->_init_buf_size); if (unlikely(__pyx_t_2 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 7550, __pyx_L1_error)
+7551: buf._init_buf_size = self._init_buf_size
__pyx_t_3 = __pyx_v_self->_init_buf_size; __pyx_v_buf->_init_buf_size = __pyx_t_3;
+7552: buf._max_name_len = line_sender_get_max_name_len(self._impl)
__pyx_v_buf->_max_name_len = line_sender_get_max_name_len(__pyx_v_self->_impl);
+7553: buf._qwp = (
__pyx_v_buf->_qwp = __pyx_t_4;
+7554: _is_qwp_udp_protocol(self._c_protocol) or
__pyx_t_5 = __pyx_f_7questdb_7_client__is_qwp_udp_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_5 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7554, __pyx_L1_error) if (!__pyx_t_5) { } else { __pyx_t_4 = __pyx_t_5; goto __pyx_L3_bool_binop_done; }
+7555: _is_qwp_ws_protocol(self._c_protocol))
__pyx_t_5 = __pyx_f_7questdb_7_client__is_qwp_ws_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_5 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7555, __pyx_L1_error) __pyx_t_4 = __pyx_t_5; __pyx_L3_bool_binop_done:;
+7556: return buf
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_buf); __pyx_r = ((PyObject *)__pyx_v_buf); goto __pyx_L0;
7557:
+7558: def new_buffer(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_9new_buffer(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_6Sender_8new_buffer, "\n Make a new configured buffer.\n\n The buffer is set up with the configured `init_buf_size` and\n `max_name_len`, and matches the sender's protocol.\n\n Must be called after :func:`Sender.establish` and before\n :func:`Sender.close`; otherwise raises\n :class:`QuestDBError` (``InvalidApiCall``).\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_9new_buffer = {"new_buffer", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_9new_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_8new_buffer}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_9new_buffer(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("new_buffer (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("new_buffer", 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("new_buffer", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_6Sender_8new_buffer(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Sender_8new_buffer(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) { 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_AddTraceback("questdb._client.Sender.new_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_6Sender_9new_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_new_buffer, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[97])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 7558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_new_buffer, __pyx_t_17) < (0)) __PYX_ERR(0, 7558, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
7559: """
7560: Make a new configured buffer.
7561:
7562: The buffer is set up with the configured `init_buf_size` and
7563: `max_name_len`, and matches the sender's protocol.
7564:
7565: Must be called after :func:`Sender.establish` and before
7566: :func:`Sender.close`; otherwise raises
7567: :class:`QuestDBError` (``InvalidApiCall``).
7568: """
+7569: if self._impl == NULL:
__pyx_t_1 = (__pyx_v_self->_impl == NULL);
if (__pyx_t_1) {
/* … */
}
+7570: if self._opts == NULL:
__pyx_t_1 = (__pyx_v_self->_opts == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+7571: 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(0, 7571, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+7572: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7572, __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(0, 7572, __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_new_buffer_can_t_be_called_Sende}; __pyx_t_2 = __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_2)) __PYX_ERR(0, 7571, __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(0, 7571, __pyx_L1_error)
7573: 'new_buffer() can\'t be called: Sender is closed.')
+7574: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7574, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
+7575: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 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[3] = {__pyx_t_4, __pyx_t_5, __pyx_mstate_global->__pyx_kp_u_new_buffer_can_t_be_called_befor}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__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_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7574, __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(0, 7574, __pyx_L1_error)
7576: 'new_buffer() can\'t be called before establish().')
+7577: return self._new_buffer_for_sender()
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __pyx_f_7questdb_7_client_6Sender__new_buffer_for_sender(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
7578:
+7579: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_6Sender_13init_buf_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_6Sender_13init_buf_size_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_6Sender_13init_buf_size___get__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_6Sender_13init_buf_size___get__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.Sender.init_buf_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
7580: def init_buf_size(self) -> int:
7581: """The initial capacity of the sender's internal buffer."""
+7582: return self._init_buf_size
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_v_self->_init_buf_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
7583:
+7584: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_6Sender_12max_name_len_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_6Sender_12max_name_len_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_6Sender_12max_name_len___get__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_6Sender_12max_name_len___get__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) {
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_AddTraceback("questdb._client.Sender.max_name_len.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
7585: def max_name_len(self) -> int:
7586: """Maximum length of a table or column name."""
+7587: if self._impl == NULL:
__pyx_t_1 = (__pyx_v_self->_impl == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+7588: 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(0, 7588, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+7589: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7589, __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(0, 7589, __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_max_name_len_can_t_be_called_Sen}; __pyx_t_2 = __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_2)) __PYX_ERR(0, 7588, __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(0, 7588, __pyx_L1_error)
7590: 'max_name_len() can\'t be called: Sender is closed.')
+7591: return line_sender_get_max_name_len(self._impl)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyLong_FromSize_t(line_sender_get_max_name_len(__pyx_v_self->_impl)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
7592:
+7593: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_6Sender_10auto_flush_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_6Sender_10auto_flush_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_6Sender_10auto_flush___get__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_6Sender_10auto_flush___get__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.Sender.auto_flush.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
7594: def auto_flush(self) -> bint:
7595: """
7596: Auto-flushing is enabled.
7597:
7598: Consult the `.auto_flush_rows`, `.auto_flush_bytes` and
7599: `.auto_flush_interval` properties for the current active thresholds.
7600: """
+7601: return self._auto_flush_mode.enabled
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_auto_flush_mode.enabled); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7601, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
7602:
+7603: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_6Sender_15auto_flush_rows_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_6Sender_15auto_flush_rows_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_6Sender_15auto_flush_rows___get__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_6Sender_15auto_flush_rows___get__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.Sender.auto_flush_rows.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
7604: def auto_flush_rows(self) -> Optional[int]:
7605: """
7606: Row count threshold for the auto-flush logic, or None if disabled.
7607: """
+7608: if not self._auto_flush_mode.enabled:
__pyx_t_1 = (!__pyx_v_self->_auto_flush_mode.enabled);
if (__pyx_t_1) {
/* … */
}
+7609: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
+7610: if self._auto_flush_mode.row_count == -1:
__pyx_t_1 = (__pyx_v_self->_auto_flush_mode.row_count == -1L);
if (__pyx_t_1) {
/* … */
}
+7611: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
+7612: return self._auto_flush_mode.row_count
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyLong_From_int64_t(__pyx_v_self->_auto_flush_mode.row_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
7613:
+7614: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_6Sender_16auto_flush_bytes_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_6Sender_16auto_flush_bytes_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_6Sender_16auto_flush_bytes___get__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_6Sender_16auto_flush_bytes___get__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.Sender.auto_flush_bytes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
7615: def auto_flush_bytes(self) -> Optional[int]:
7616: """
7617: Byte-count threshold for the auto-flush logic, or None if disabled.
7618: """
+7619: if not self._auto_flush_mode.enabled:
__pyx_t_1 = (!__pyx_v_self->_auto_flush_mode.enabled);
if (__pyx_t_1) {
/* … */
}
+7620: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
+7621: if self._auto_flush_mode.byte_count == -1:
__pyx_t_1 = (__pyx_v_self->_auto_flush_mode.byte_count == -1L);
if (__pyx_t_1) {
/* … */
}
+7622: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
+7623: return self._auto_flush_mode.byte_count
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyLong_From_int64_t(__pyx_v_self->_auto_flush_mode.byte_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7623, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
7624:
+7625: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_6Sender_19auto_flush_interval_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_6Sender_19auto_flush_interval_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_6Sender_19auto_flush_interval___get__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_6Sender_19auto_flush_interval___get__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) {
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_6);
__Pyx_AddTraceback("questdb._client.Sender.auto_flush_interval.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
7626: def auto_flush_interval(self) -> Optional[datetime.timedelta]:
7627: """
7628: Time interval threshold for the auto-flush logic, or None if disabled.
7629: """
+7630: if not self._auto_flush_mode.enabled:
__pyx_t_1 = (!__pyx_v_self->_auto_flush_mode.enabled);
if (__pyx_t_1) {
/* … */
}
+7631: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
+7632: if self._auto_flush_mode.interval == -1:
__pyx_t_1 = (__pyx_v_self->_auto_flush_mode.interval == -1L);
if (__pyx_t_1) {
/* … */
}
+7633: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
+7634: return cp_timedelta(milliseconds=self._auto_flush_mode.interval)
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = NULL; __pyx_t_4 = __Pyx_PyLong_From_int64_t(__pyx_v_self->_auto_flush_mode.interval); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = 1; { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, NULL}; __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_milliseconds, __pyx_t_4, __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 7634, __pyx_L1_error) __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7634, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_2); } __pyx_r = ((PyObject *)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0;
7635:
+7636: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_6Sender_16protocol_version_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_6Sender_16protocol_version_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_6Sender_16protocol_version___get__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_6Sender_16protocol_version___get__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) {
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_AddTraceback("questdb._client.Sender.protocol_version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
7637: def protocol_version(self) -> int:
7638: """
7639: The protocol version used by the sender.
7640:
7641: Protocol version 1 is retained for backwards compatibility with
7642: older QuestDB versions.
7643:
7644: Protocol version 2 introduces binary floating point support and
7645: the array datatype.
7646: """
+7647: if self._impl == NULL:
__pyx_t_1 = (__pyx_v_self->_impl == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+7648: 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(0, 7648, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+7649: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7649, __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(0, 7649, __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_protocol_version_can_t_be_called}; __pyx_t_2 = __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_2)) __PYX_ERR(0, 7648, __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(0, 7648, __pyx_L1_error)
7650: 'protocol_version() can\'t be called: Sender is closed.')
+7651: if _is_qwp_udp_protocol(self._c_protocol):
__pyx_t_1 = __pyx_f_7questdb_7_client__is_qwp_udp_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7651, __pyx_L1_error) if (unlikely(__pyx_t_1)) { /* … */ }
+7652: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7652, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
+7653: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 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[3] = {__pyx_t_4, __pyx_t_5, __pyx_mstate_global->__pyx_kp_u_protocol_version_is_not_applicab}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__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_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7652, __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(0, 7652, __pyx_L1_error)
7654: 'protocol_version is not applicable for QWP/UDP senders.')
+7655: return <int>line_sender_get_protocol_version(self._impl)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyLong_From_int(((int)line_sender_get_protocol_version(__pyx_v_self->_impl))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7655, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
7656:
+7657: def establish(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_11establish(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_6Sender_10establish, "\n Prepare the sender for use.\n\n If using ILP/HTTP this will initialize the HTTP connection pool.\n\n If using ILP/TCP this will cause connection to the server and \n block until the connection is established.\n\n If the TCP connection is set up with authentication and/or TLS, this\n method will return only *after* the handshake(s) is/are complete.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_11establish = {"establish", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_11establish, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_10establish}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_11establish(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("establish (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("establish", 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("establish", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_6Sender_10establish(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Sender_10establish(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) { struct line_sender_error *__pyx_v_err; PyThreadState *__pyx_v_gs; struct line_sender *__pyx_v_failed_impl; int __pyx_v_warn; 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_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("questdb._client.Sender.establish", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_6Sender_11establish, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_establish, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[98])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 7657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_establish, __pyx_t_17) < (0)) __PYX_ERR(0, 7657, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
7658: """
7659: Prepare the sender for use.
7660:
7661: If using ILP/HTTP this will initialize the HTTP connection pool.
7662:
7663: If using ILP/TCP this will cause connection to the server and
7664: block until the connection is established.
7665:
7666: If the TCP connection is set up with authentication and/or TLS, this
7667: method will return only *after* the handshake(s) is/are complete.
7668: """
+7669: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+7670: cdef PyThreadState * gs = NULL
__pyx_v_gs = NULL;
+7671: cdef line_sender* failed_impl = NULL
__pyx_v_failed_impl = NULL;
+7672: if self._opts == NULL:
__pyx_t_1 = (__pyx_v_self->_opts == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+7673: 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(0, 7673, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+7674: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7674, __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(0, 7674, __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_establish_can_t_be_called_after}; __pyx_t_2 = __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_2)) __PYX_ERR(0, 7673, __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(0, 7673, __pyx_L1_error)
7675: 'establish() can\'t be called after close().')
7676:
7677: # We disable the GIL when calling `line_sender_build` since for HTTP
7678: # it can make HTTP requests to auto-detect the protocol version.
+7679: _ensure_doesnt_have_gil(&gs)
__pyx_t_1 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7679, __pyx_L1_error)
+7680: self._impl = line_sender_build(self._opts, &err)
__pyx_v_self->_impl = line_sender_build(__pyx_v_self->_opts, (&__pyx_v_err));
+7681: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 7681, __pyx_L1_error)
7682:
+7683: if self._impl == NULL:
__pyx_t_1 = (__pyx_v_self->_impl == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+7684: raise 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(0, 7684, __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(0, 7684, __pyx_L1_error)
7685:
+7686: if self._buffer is None:
__pyx_t_1 = (((PyObject *)__pyx_v_self->_buffer) == Py_None);
if (__pyx_t_1) {
/* … */
}
+7687: 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_L11_try_end;
__pyx_L6_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_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
__pyx_L8_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_L11_try_end:;
}
+7688: self._buffer = self._new_buffer_for_sender()
__pyx_t_2 = __pyx_f_7questdb_7_client_6Sender__new_buffer_for_sender(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7688, __pyx_L6_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_Buffer))))) __PYX_ERR(0, 7688, __pyx_L6_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF((PyObject *)__pyx_v_self->_buffer); __Pyx_DECREF((PyObject *)__pyx_v_self->_buffer); __pyx_v_self->_buffer = ((struct __pyx_obj_7questdb_7_client_Buffer *)__pyx_t_2); __pyx_t_2 = 0;
+7689: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client.Sender.establish", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 7689, __pyx_L8_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_6);
+7690: failed_impl = self._impl
__pyx_t_11 = __pyx_v_self->_impl;
__pyx_v_failed_impl = __pyx_t_11;
+7691: self._impl = NULL
__pyx_v_self->_impl = NULL;
+7692: _ensure_doesnt_have_gil(&gs)
__pyx_t_1 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7692, __pyx_L8_except_error)
+7693: line_sender_close(failed_impl)
line_sender_close(__pyx_v_failed_impl);
+7694: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 7694, __pyx_L8_except_error)
+7695: raise
__Pyx_GIVEREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_4, __pyx_t_6); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_6 = 0; __PYX_ERR(0, 7695, __pyx_L8_except_error) }
7696:
+7697: line_sender_opts_free(self._opts)
line_sender_opts_free(__pyx_v_self->_opts);
+7698: self._opts = NULL
__pyx_v_self->_opts = NULL;
7699:
+7700: self._cb_refs_key = _retain_callback_refs(
__pyx_t_7 = __pyx_f_7questdb_7_client__retain_callback_refs(((PyObject *)__pyx_v_self), __pyx_t_6, __pyx_t_4); if (unlikely(__pyx_t_7 == ((size_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 7700, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_self->_cb_refs_key = __pyx_t_7;
+7701: self, self._error_handler, self._connection_listener)
__pyx_t_6 = __pyx_v_self->_error_handler; __Pyx_INCREF(__pyx_t_6); __pyx_t_4 = __pyx_v_self->_connection_listener; __Pyx_INCREF(__pyx_t_4);
7702:
7703: # Request callbacks when rows are complete.
+7704: self._buffer._row_complete_sender = PyWeakref_NewRef(self, None)
__pyx_t_4 = PyWeakref_NewRef(((PyObject *)__pyx_v_self), Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->_buffer->_row_complete_sender); __Pyx_DECREF(__pyx_v_self->_buffer->_row_complete_sender); __pyx_v_self->_buffer->_row_complete_sender = __pyx_t_4; __pyx_t_4 = 0;
+7705: self._last_flush_ms[0] = line_sender_now_micros() // 1000
(__pyx_v_self->_last_flush_ms[0]) = __Pyx_div_int64_t(line_sender_now_micros(), 0x3E8, 1);
7706:
7707: # Track and warn about overly quick reconnections to the server.
+7708: cdef bint warn = False
__pyx_v_warn = 0;
+7709: if WARN_HIGH_RECONNECTS:
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_WARN_HIGH_RECONNECTS); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7709, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 7709, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_1) { /* … */ }
+7710: self._slot_id = <int32_t> qdb_active_senders_track_established(&warn)
__pyx_v_self->_slot_id = ((int32_t)qdb_active_senders_track_established((&__pyx_v_warn)));
+7711: if warn:
if (__pyx_v_warn) {
/* … */
}
+7712: warnings.warn(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7712, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7712, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7713: "questdb.Sender: "
7714: f"Detected a burst of reconnections. "
7715: "This may indicate an inefficient coding pattern where the sender is "
7716: "frequently created and destroyed. "
7717: "Consider reusing sender instance whenever possible."
7718: "See: https://py-questdb-client.readthedocs.io/en/latest/sender.html#reuse-sender-objects",
+7719: UserWarning,
__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[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_questdb_Sender_Detected_a_burst, ((PyObject *)(((PyTypeObject*)PyExc_UserWarning)))};
__pyx_t_2 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7712, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_stacklevel, __pyx_mstate_global->__pyx_int_1, __pyx_t_2, __pyx_callargs+3, 0) < (0)) __PYX_ERR(0, 7712, __pyx_L1_error)
__pyx_t_4 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_2);
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7712, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7720: stacklevel=1
7721: )
7722:
+7723: def __enter__(self) -> Sender:
/* Python wrapper */ static struct __pyx_obj_7questdb_7_client_Sender *__pyx_pw_7questdb_7_client_6Sender_13__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*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_6Sender_12__enter__, "Call :func:`Sender.establish` at the start of a ``with`` block."); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_13__enter__ = {"__enter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_13__enter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_12__enter__}; static struct __pyx_obj_7questdb_7_client_Sender *__pyx_pw_7questdb_7_client_6Sender_13__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; struct __pyx_obj_7questdb_7_client_Sender *__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_6Sender_12__enter__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static struct __pyx_obj_7questdb_7_client_Sender *__pyx_pf_7questdb_7_client_6Sender_12__enter__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) { struct __pyx_obj_7questdb_7_client_Sender *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("questdb._client.Sender.__enter__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 7723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_Sender) < (0)) __PYX_ERR(0, 7723, __pyx_L1_error) __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_6Sender_13__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender___enter, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[99])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7723, __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_17); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_enter, __pyx_t_18) < (0)) __PYX_ERR(0, 7723, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
7724: """Call :func:`Sender.establish` at the start of a ``with`` block."""
+7725: self.establish()
__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_establish, __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(0, 7725, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+7726: return self
__Pyx_XDECREF((PyObject *)__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = __pyx_v_self; goto __pyx_L0;
7727:
+7728: def __bytes__(self) -> bytes:
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_15__bytes__(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_6Sender_14__bytes__, "\n Inspect the contents of the internal buffer.\n\n The ``bytes`` value returned represents the unsent data.\n\n For QWP/UDP senders this always returns ``b''`` because encoding\n is deferred to flush. Use :func:`Sender.__len__` instead for a\n size estimate.\n\n Also see :func:`Sender.__len__`.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_15__bytes__ = {"__bytes__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_15__bytes__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_14__bytes__}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_15__bytes__(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("__bytes__ (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("__bytes__", 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("__bytes__", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_6Sender_14__bytes__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Sender_14__bytes__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("questdb._client.Sender.__bytes__", __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(0, 7728, __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_bytes) < (0)) __PYX_ERR(0, 7728, __pyx_L1_error) __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_6Sender_15__bytes__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender___bytes, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[100])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 7728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_17, __pyx_t_18); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_bytes_2, __pyx_t_17) < (0)) __PYX_ERR(0, 7728, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
7729: """
7730: Inspect the contents of the internal buffer.
7731:
7732: The ``bytes`` value returned represents the unsent data.
7733:
7734: For QWP/UDP senders this always returns ``b''`` because encoding
7735: is deferred to flush. Use :func:`Sender.__len__` instead for a
7736: size estimate.
7737:
7738: Also see :func:`Sender.__len__`.
7739: """
+7740: if self._buffer is None:
__pyx_t_1 = (((PyObject *)__pyx_v_self->_buffer) == Py_None);
if (__pyx_t_1) {
/* … */
}
+7741: return b''
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_b__7); __pyx_r = __pyx_mstate_global->__pyx_kp_b__7; goto __pyx_L0;
7742: else:
+7743: return bytes(self._buffer)
/*else*/ {
__Pyx_XDECREF(__pyx_r);
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self->_buffer)};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(&PyBytes_Type), __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_2)) __PYX_ERR(0, 7743, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_r = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
goto __pyx_L0;
}
7744:
+7745: def __len__(self) -> int:
/* Python wrapper */ static Py_ssize_t __pyx_pw_7questdb_7_client_6Sender_17__len__(PyObject *__pyx_v_self); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_6Sender_16__len__, "\n Number of bytes of unsent data in the internal buffer.\n\n Equivalent (but cheaper) to ``len(bytes(sender))``.\n\n For QWP/UDP senders this returns an estimated size hint, not the\n exact serialized byte count.\n "); #if CYTHON_UPDATE_DESCRIPTOR_DOC struct wrapperbase __pyx_wrapperbase_7questdb_7_client_6Sender_16__len__; #endif static Py_ssize_t __pyx_pw_7questdb_7_client_6Sender_17__len__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7questdb_7_client_6Sender_16__len__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static Py_ssize_t __pyx_pf_7questdb_7_client_6Sender_16__len__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) { Py_ssize_t __pyx_r; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("questdb._client.Sender.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
7746: """
7747: Number of bytes of unsent data in the internal buffer.
7748:
7749: Equivalent (but cheaper) to ``len(bytes(sender))``.
7750:
7751: For QWP/UDP senders this returns an estimated size hint, not the
7752: exact serialized byte count.
7753: """
+7754: if self._buffer is None:
__pyx_t_1 = (((PyObject *)__pyx_v_self->_buffer) == Py_None);
if (__pyx_t_1) {
/* … */
}
+7755: return 0
__pyx_r = 0;
goto __pyx_L0;
7756: else:
+7757: return len(self._buffer)
/*else*/ {
__pyx_t_2 = ((PyObject *)__pyx_v_self->_buffer);
__Pyx_INCREF(__pyx_t_2);
__pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7757, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
goto __pyx_L0;
}
7758:
+7759: def transaction(self, table_name: str):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_19transaction(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_6Sender_18transaction, "\n Start a :ref:`sender_transaction` block.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_19transaction = {"transaction", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_19transaction, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_18transaction}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_19transaction(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_table_name = 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("transaction (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_table_name,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(0, 7759, __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(0, 7759, __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, "transaction", 0) < (0)) __PYX_ERR(0, 7759, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("transaction", 1, 1, 1, i); __PYX_ERR(0, 7759, __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(0, 7759, __pyx_L3_error) } __pyx_v_table_name = ((PyObject*)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("transaction", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7759, __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.Sender.transaction", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_table_name), (&PyUnicode_Type), 0, "table_name", 2))) __PYX_ERR(0, 7759, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_6Sender_18transaction(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self), __pyx_v_table_name); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Sender_18transaction(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, PyObject *__pyx_v_table_name) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("questdb._client.Sender.transaction", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 7759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_table_name, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(0, 7759, __pyx_L1_error) __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_6Sender_19transaction, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_transaction, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[101])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7759, __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_17); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_transaction, __pyx_t_18) < (0)) __PYX_ERR(0, 7759, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
7760: """
7761: Start a :ref:`sender_transaction` block.
7762: """
+7763: return SenderTransaction(self, table_name)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = NULL; __pyx_t_3 = 1; { PyObject *__pyx_callargs[3] = {__pyx_t_2, ((PyObject *)__pyx_v_self), __pyx_v_table_name}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client_SenderTransaction, __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(0, 7763, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } __pyx_r = ((PyObject *)__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L0;
7764:
+7765: def row(self,
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_21row(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_6Sender_20row, "\n Write a row to the internal buffer.\n\n This may be sent automatically depending on the ``auto_flush`` setting\n in the constructor.\n\n Refer to the :func:`Buffer.row <questdb.ingress.Buffer.row>` documentation for details on arguments.\n\n **Note**: Support for NumPy arrays (``numpy.array``) requires QuestDB server version 9.0.0 or higher.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_21row = {"row", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_21row, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_20row}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_21row(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_table_name = 0; PyObject *__pyx_v_symbols = 0; PyObject *__pyx_v_columns = 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("row (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_table_name,&__pyx_mstate_global->__pyx_n_u_at,&__pyx_mstate_global->__pyx_n_u_symbols,&__pyx_mstate_global->__pyx_n_u_columns,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(0, 7765, __pyx_L3_error) if (likely(__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(0, 7765, __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, "row", 0) < (0)) __PYX_ERR(0, 7765, __pyx_L3_error) /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Sender_20row(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, PyObject *__pyx_v_table_name, PyObject *__pyx_v_symbols, PyObject *__pyx_v_columns, PyObject *__pyx_v_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_AddTraceback("questdb._client.Sender.row", __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(2); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 7765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_table_name, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(0, 7765, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_symbols, __pyx_mstate_global->__pyx_kp_u_Optional_Dict_str_Optional_str) < (0)) __PYX_ERR(0, 7765, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_columns, __pyx_mstate_global->__pyx_kp_u_Optional_Dict_str_Union_None_boo) < (0)) __PYX_ERR(0, 7765, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_at, __pyx_mstate_global->__pyx_kp_u_Union_TimestampNanos_datetime_da) < (0)) __PYX_ERR(0, 7765, __pyx_L1_error) __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_6Sender_21row, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_row, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[102])); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_13, __pyx_t_18); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_17); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_row, __pyx_t_13) < (0)) __PYX_ERR(0, 7765, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
7766: table_name: str,
7767: *,
+7768: symbols: Optional[Dict[str, Optional[str]]]=None,
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_symbols, Py_None) < (0)) __PYX_ERR(0, 7765, __pyx_L1_error)
7769: columns: Optional[Dict[
7770: str,
+7771: Union[None, bool, int, float, str, TimestampMicros, TimestampNanos, datetime.datetime, numpy.ndarray, Decimal]]]=None,
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject*)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("row", 1, 1, 1, i); __PYX_ERR(0, 7765, __pyx_L3_error) } } for (Py_ssize_t i = 1; i < 2; i++) { if (unlikely(!values[i])) { __Pyx_RaiseKeywordRequired("row", *(__pyx_pyargnames[i - 0])); __PYX_ERR(0, 7765, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { __Pyx_RaiseKeywordRequired("row", __pyx_mstate_global->__pyx_n_u_at); __PYX_ERR(0, 7765, __pyx_L3_error) } __pyx_v_table_name = ((PyObject*)values[0]); __pyx_v_at = values[1]; __pyx_v_symbols = ((PyObject*)values[2]); __pyx_v_columns = ((PyObject*)values[3]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("row", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7765, __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.Sender.row", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_table_name), (&PyUnicode_Type), 0, "table_name", 2))) __PYX_ERR(0, 7766, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_symbols), (&PyDict_Type), 1, "symbols", 2))) __PYX_ERR(0, 7768, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_columns), (&PyDict_Type), 1, "columns", 2))) __PYX_ERR(0, 7769, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_6Sender_20row(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self), __pyx_v_table_name, __pyx_v_symbols, __pyx_v_columns, __pyx_v_at); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_columns, Py_None) < (0)) __PYX_ERR(0, 7765, __pyx_L1_error)
7772: at: Union[TimestampNanos, datetime.datetime, ServerTimestampType]):
7773: """
7774: Write a row to the internal buffer.
7775:
7776: This may be sent automatically depending on the ``auto_flush`` setting
7777: in the constructor.
7778:
7779: Refer to the :func:`Buffer.row <questdb.ingress.Buffer.row>` documentation for details on arguments.
7780:
7781: **Note**: Support for NumPy arrays (``numpy.array``) requires QuestDB server version 9.0.0 or higher.
7782: """
+7783: if self._in_txn:
if (unlikely(__pyx_v_self->_in_txn)) {
/* … */
}
+7784: raise QuestDBError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7784, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+7785: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7785, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7785, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = 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_6 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Cannot_append_rows_explicitly_in}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__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(0, 7784, __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(0, 7784, __pyx_L1_error)
7786: 'Cannot append rows explicitly inside a transaction')
+7787: if at is None:
__pyx_t_7 = (__pyx_v_at == Py_None);
if (unlikely(__pyx_t_7)) {
/* … */
}
+7788: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7788, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+7789: QuestDBErrorCode.InvalidTimestamp,
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_InvalidTimestamp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __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[3] = {__pyx_t_3, __pyx_t_4, __pyx_mstate_global->__pyx_kp_u_at_must_be_of_type_TimestampNan}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__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; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7788, __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(0, 7788, __pyx_L1_error)
7790: "`at` must be of type TimestampNanos, datetime, or ServerTimestamp"
7791: )
+7792: if self._buffer is None:
__pyx_t_7 = (((PyObject *)__pyx_v_self->_buffer) == Py_None);
if (unlikely(__pyx_t_7)) {
/* … */
}
+7793: raise QuestDBError(
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7793, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+7794: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7794, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7794, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = 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_6 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_row_can_t_be_called_Sender_is_cl}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7793, __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(0, 7793, __pyx_L1_error)
7795: "row() can\'t be called: Sender is closed."
7796: )
7797:
+7798: self._buffer.row(table_name, symbols=symbols, columns=columns, at=at)
__pyx_t_4 = ((PyObject *)__pyx_v_self->_buffer); __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0; { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 3 : 0)] = {__pyx_t_4, __pyx_v_table_name}; __pyx_t_2 = __Pyx_MakeVectorcallBuilderKwds(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_symbols, __pyx_v_symbols, __pyx_t_2, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 7798, __pyx_L1_error) if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_columns, __pyx_v_columns, __pyx_t_2, __pyx_callargs+2, 1) < (0)) __PYX_ERR(0, 7798, __pyx_L1_error) if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_at, __pyx_v_at, __pyx_t_2, __pyx_callargs+2, 2) < (0)) __PYX_ERR(0, 7798, __pyx_L1_error) __pyx_t_1 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_row, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+7799: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
7800:
+7801: def dataframe(
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_23dataframe(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_6Sender_22dataframe, "\n Write a Pandas DataFrame to QuestDB.\n\n Over ILP/HTTP and ILP/TCP the frame is serialized into the internal\n row buffer; over QWP/UDP into fire-and-forget datagrams, with the\n same delivery caveats as ``row()``. Over QWP/WebSocket the frame is\n bulk-loaded through a poolless direct columnar connection opened from\n this sender's configuration for the call (the same direct path as\n :meth:`QuestDB.dataframe`, carrying the sender's auth/TLS regardless\n of how it was constructed); ``max_rows_per_batch`` applies only on\n that path, and passing ``schema_overrides`` on any other protocol\n raises. The direct load has no\n ordering relationship with rows buffered via :meth:`row` and does not\n flush them.\n\n Example:\n\n .. code-block:: python\n\n import pandas as pd\n import questdb as qi\n\n df = pd.DataFrame({\n 'car': pd.Categorical(['Nic 42', 'Eddi', 'Nic 42', 'Eddi']),\n 'position': [1, 2, 1, 2],\n 'speed': [89.3, 98.2, 3, 4],\n 'lat_gforce': [0.1, -0.2, -0.6, 0.4],\n 'accelleration': [0.1, -0.2, 0.6, 4.4],\n 'tyre_pressure': [2.6, 2.5, 2.6, 2.5],\n 'ts': [\n pd.Timestamp('2022-08-09 13:56:00'),\n pd.Timestamp('2022-08-09 13:56:01'),\n pd.Timestamp('2022-08-09 13:56:02'),\n pd.Timestamp('2022-08-09 13:56:03')]})\n\n with qi.Sender.from_env() as sender:\n sender.dataframe(df, table_name='race_metrics', at='ts')\n\n See the buffer-level ``dataframe`` documentation for details on\n the supported column types and arguments.\n\n Additionally, this method also supports auto-flushing the buffer\n as specified in the ``Sender``'s ``auto_flush`` constructor argument.\n Auto-flushing is implemented in""crementally, meanting that when\n calling ``sender.dataframe(df)`` with a large ``df``, the sender may\n have sent some of the rows to the server already whist the rest of the\n rows are going to be sent at the next auto-flush or next explicit call\n to :func:`Sender.flush`.\n\n In case of data errors with auto-flushing enabled, some of the rows\n may have been transmitted to the server already.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_23dataframe = {"dataframe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_23dataframe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_22dataframe}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_23dataframe(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_df = 0; PyObject *__pyx_v_table_name = 0; PyObject *__pyx_v_table_name_col = 0; PyObject *__pyx_v_symbols = 0; PyObject *__pyx_v_at = 0; PyObject *__pyx_v_max_rows_per_batch = 0; PyObject *__pyx_v_schema_overrides = 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("dataframe (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_df,&__pyx_mstate_global->__pyx_n_u_at,&__pyx_mstate_global->__pyx_n_u_table_name,&__pyx_mstate_global->__pyx_n_u_table_name_col,&__pyx_mstate_global->__pyx_n_u_symbols,&__pyx_mstate_global->__pyx_n_u_max_rows_per_batch,&__pyx_mstate_global->__pyx_n_u_schema_overrides_2,0}; PyObject* values[7] = {0,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(0, 7801, __pyx_L3_error) if (likely(__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(0, 7801, __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, "dataframe", 0) < (0)) __PYX_ERR(0, 7801, __pyx_L3_error) /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Sender_22dataframe(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, PyObject *__pyx_v_df, PyObject *__pyx_v_table_name, PyObject *__pyx_v_table_name_col, PyObject *__pyx_v_symbols, PyObject *__pyx_v_at, PyObject *__pyx_v_max_rows_per_batch, PyObject *__pyx_v_schema_overrides) { struct __pyx_t_7questdb_7_client_auto_flush_t __pyx_v_af; struct __pyx_t_7questdb_7_client_direct_conn_source_t __pyx_v_src; struct qdb_pystr_buf *__pyx_v_ws_b; struct __pyx_t_7questdb_7_client_dataframe_plan_t __pyx_v_ws_plan; 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_AddTraceback("questdb._client.Sender.dataframe", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 7801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_table_name, __pyx_mstate_global->__pyx_kp_u_Optional_str) < (0)) __PYX_ERR(0, 7801, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_table_name_col, __pyx_mstate_global->__pyx_kp_u_Union_None_int_str) < (0)) __PYX_ERR(0, 7801, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_symbols, __pyx_mstate_global->__pyx_kp_u_Union_str_bool_List_int_List_str) < (0)) __PYX_ERR(0, 7801, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_at, __pyx_mstate_global->__pyx_kp_u_Union_ServerTimestampType_int_st) < (0)) __PYX_ERR(0, 7801, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_max_rows_per_batch, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 7801, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_schema_overrides_2, __pyx_mstate_global->__pyx_kp_u_Optional_Dict_str_object) < (0)) __PYX_ERR(0, 7801, __pyx_L1_error) __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_6Sender_23dataframe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_dataframe, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[103])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7801, __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_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_18, __pyx_t_17); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_dataframe, __pyx_t_18) < (0)) __PYX_ERR(0, 7801, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
7802: self,
7803: df, # : pd.DataFrame
7804: *,
+7805: table_name: Optional[str] = None,
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_table_name, Py_None) < (0)) __PYX_ERR(0, 7801, __pyx_L1_error)
+7806: table_name_col: Union[None, int, str] = None,
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_auto)); if (!values[5]) values[5] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__30); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_table_name_col, Py_None) < (0)) __PYX_ERR(0, 7801, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_symbols, __pyx_mstate_global->__pyx_n_u_auto) < (0)) __PYX_ERR(0, 7801, __pyx_L1_error)
7807: symbols: Union[str, bool, List[int], List[str]] = 'auto',
7808: at: Union[ServerTimestampType, int, str, TimestampNanos, datetime.datetime],
+7809: max_rows_per_batch: int = DEFAULT_MAX_CHUNK_ROWS,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_DEFAULT_MAX_CHUNK_ROWS); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (__Pyx_PyInt_FromNumber(&__pyx_t_13, NULL, 1) < (0)) __PYX_ERR(0, 7809, __pyx_L1_error) __pyx_mstate_global->__pyx_k__30 = ((PyObject*)__pyx_t_13); __Pyx_GIVEREF(__pyx_t_13); __pyx_t_13 = 0; /* … */ __Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_DEFAULT_MAX_CHUNK_ROWS); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 7809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (__Pyx_PyInt_FromNumber(&__pyx_t_17, NULL, 1) < (0)) __PYX_ERR(0, 7809, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_max_rows_per_batch, __pyx_t_17) < (0)) __PYX_ERR(0, 7801, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+7810: schema_overrides: Optional[Dict[str, object]] = None):
if (!values[6]) values[6] = __Pyx_NewRef(((PyObject*)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("dataframe", 1, 1, 1, i); __PYX_ERR(0, 7801, __pyx_L3_error) } } for (Py_ssize_t i = 1; i < 2; i++) { if (unlikely(!values[i])) { __Pyx_RaiseKeywordRequired("dataframe", *(__pyx_pyargnames[i - 0])); __PYX_ERR(0, 7801, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { __Pyx_RaiseKeywordRequired("dataframe", __pyx_mstate_global->__pyx_n_u_at); __PYX_ERR(0, 7801, __pyx_L3_error) } __pyx_v_df = values[0]; __pyx_v_at = values[1]; __pyx_v_table_name = ((PyObject*)values[2]); __pyx_v_table_name_col = values[3]; __pyx_v_symbols = values[4]; if (__Pyx_PyInt_FromNumber(&values[5], "max_rows_per_batch", 0) < (0)) __PYX_ERR(0, 7809, __pyx_L3_error) __pyx_v_max_rows_per_batch = ((PyObject*)values[5]); __pyx_v_schema_overrides = ((PyObject*)values[6]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("dataframe", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7801, __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.Sender.dataframe", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_table_name), (&PyUnicode_Type), 1, "table_name", 2))) __PYX_ERR(0, 7805, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_max_rows_per_batch), (&PyLong_Type), 0, "max_rows_per_batch", 2))) __PYX_ERR(0, 7809, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema_overrides), (&PyDict_Type), 1, "schema_overrides", 2))) __PYX_ERR(0, 7810, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_6Sender_22dataframe(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self), __pyx_v_df, __pyx_v_table_name, __pyx_v_table_name_col, __pyx_v_symbols, __pyx_v_at, __pyx_v_max_rows_per_batch, __pyx_v_schema_overrides); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_schema_overrides_2, Py_None) < (0)) __PYX_ERR(0, 7801, __pyx_L1_error)
7811: """
7812: Write a Pandas DataFrame to QuestDB.
7813:
7814: Over ILP/HTTP and ILP/TCP the frame is serialized into the internal
7815: row buffer; over QWP/UDP into fire-and-forget datagrams, with the
7816: same delivery caveats as ``row()``. Over QWP/WebSocket the frame is
7817: bulk-loaded through a poolless direct columnar connection opened from
7818: this sender's configuration for the call (the same direct path as
7819: :meth:`QuestDB.dataframe`, carrying the sender's auth/TLS regardless
7820: of how it was constructed); ``max_rows_per_batch`` applies only on
7821: that path, and passing ``schema_overrides`` on any other protocol
7822: raises. The direct load has no
7823: ordering relationship with rows buffered via :meth:`row` and does not
7824: flush them.
7825:
7826: Example:
7827:
7828: .. code-block:: python
7829:
7830: import pandas as pd
7831: import questdb as qi
7832:
7833: df = pd.DataFrame({
7834: 'car': pd.Categorical(['Nic 42', 'Eddi', 'Nic 42', 'Eddi']),
7835: 'position': [1, 2, 1, 2],
7836: 'speed': [89.3, 98.2, 3, 4],
7837: 'lat_gforce': [0.1, -0.2, -0.6, 0.4],
7838: 'accelleration': [0.1, -0.2, 0.6, 4.4],
7839: 'tyre_pressure': [2.6, 2.5, 2.6, 2.5],
7840: 'ts': [
7841: pd.Timestamp('2022-08-09 13:56:00'),
7842: pd.Timestamp('2022-08-09 13:56:01'),
7843: pd.Timestamp('2022-08-09 13:56:02'),
7844: pd.Timestamp('2022-08-09 13:56:03')]})
7845:
7846: with qi.Sender.from_env() as sender:
7847: sender.dataframe(df, table_name='race_metrics', at='ts')
7848:
7849: See the buffer-level ``dataframe`` documentation for details on
7850: the supported column types and arguments.
7851:
7852: Additionally, this method also supports auto-flushing the buffer
7853: as specified in the ``Sender``'s ``auto_flush`` constructor argument.
7854: Auto-flushing is implemented incrementally, meanting that when
7855: calling ``sender.dataframe(df)`` with a large ``df``, the sender may
7856: have sent some of the rows to the server already whist the rest of the
7857: rows are going to be sent at the next auto-flush or next explicit call
7858: to :func:`Sender.flush`.
7859:
7860: In case of data errors with auto-flushing enabled, some of the rows
7861: may have been transmitted to the server already.
7862: """
+7863: cdef auto_flush_t af = auto_flush_blank()
__pyx_v_af = __pyx_f_7questdb_7_client_auto_flush_blank();
7864: cdef direct_conn_source_t src
+7865: cdef qdb_pystr_buf* ws_b = NULL
__pyx_v_ws_b = NULL;
7866: cdef dataframe_plan_t ws_plan
+7867: if _is_qwp_ws_protocol(self._c_protocol):
__pyx_t_1 = __pyx_f_7questdb_7_client__is_qwp_ws_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7867, __pyx_L1_error) if (__pyx_t_1) { /* … */ }
+7868: if self._qwp_ws_opts == NULL:
__pyx_t_1 = (__pyx_v_self->_qwp_ws_opts == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+7869: 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(0, 7869, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+7870: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7870, __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(0, 7870, __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_dataframe_can_t_be_called_Sender}; __pyx_t_2 = __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_2)) __PYX_ERR(0, 7869, __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(0, 7869, __pyx_L1_error)
7871: "dataframe() can't be called: Sender is closed.")
+7872: src.db = NULL
__pyx_v_src.db = NULL;
+7873: src.opts = self._qwp_ws_opts
__pyx_t_8 = __pyx_v_self->_qwp_ws_opts;
__pyx_v_src.opts = __pyx_t_8;
+7874: ws_b = qdb_pystr_buf_new()
__pyx_v_ws_b = qdb_pystr_buf_new();
+7875: ws_plan = dataframe_plan_blank()
__pyx_v_ws_plan = __pyx_f_7questdb_7_client_dataframe_plan_blank();
+7876: try:
/*try:*/ {
+7877: _direct_dataframe_run(
__pyx_t_9 = __pyx_f_7questdb_7_client__direct_dataframe_run((&__pyx_v_src), 0.0, __pyx_v_ws_b, (&__pyx_v_ws_plan), __pyx_v_df, __pyx_v_table_name, __pyx_v_table_name_col, __pyx_v_symbols, __pyx_v_at, __pyx_t_7, __pyx_v_schema_overrides); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 7877, __pyx_L6_error)
7878: &src,
7879: 0.0,
7880: ws_b,
7881: &ws_plan,
7882: df,
7883: table_name,
7884: table_name_col,
7885: symbols,
7886: at,
+7887: max_rows_per_batch,
__pyx_t_7 = __Pyx_PyLong_As_size_t(__pyx_v_max_rows_per_batch); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 7887, __pyx_L6_error)
7888: schema_overrides)
+7889: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L5_return; }
7890: finally:
+7891: qdb_pystr_buf_free(ws_b)
/*finally:*/ {
__pyx_L6_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 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_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
if ( unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_17);
__Pyx_XGOTREF(__pyx_t_18);
__pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
{
qdb_pystr_buf_free(__pyx_v_ws_b);
}
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15);
__pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
__pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12;
goto __pyx_L1_error;
}
__pyx_L5_return: {
__pyx_t_18 = __pyx_r;
__pyx_r = 0;
qdb_pystr_buf_free(__pyx_v_ws_b);
__pyx_r = __pyx_t_18;
__pyx_t_18 = 0;
goto __pyx_L0;
}
}
+7892: if schema_overrides is not None:
__pyx_t_1 = (__pyx_v_schema_overrides != ((PyObject*)Py_None));
if (unlikely(__pyx_t_1)) {
/* … */
}
+7893: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
+7894: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 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[3] = {__pyx_t_4, __pyx_t_5, __pyx_mstate_global->__pyx_kp_u_schema_overrides_is_only_support}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__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_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7893, __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(0, 7893, __pyx_L1_error)
7895: 'schema_overrides is only supported over QWP/WebSocket; '
7896: 'the row-serializing protocols ignore it. Drop the '
7897: 'argument or connect over ws:: / wss::.')
+7898: if self._in_txn:
if (unlikely(__pyx_v_self->_in_txn)) {
/* … */
}
+7899: raise QuestDBError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7899, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+7900: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_7 = 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_7 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Cannot_append_rows_explicitly_in}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7899, __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(0, 7899, __pyx_L1_error)
7901: 'Cannot append rows explicitly inside a transaction')
+7902: if at is None:
__pyx_t_1 = (__pyx_v_at == Py_None);
if (unlikely(__pyx_t_1)) {
/* … */
}
+7903: raise QuestDBError(
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7903, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+7904: QuestDBErrorCode.InvalidTimestamp,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7904, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_InvalidTimestamp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7904, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); assert(__pyx_t_5); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); __pyx_t_7 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_4, __pyx_mstate_global->__pyx_kp_u_at_must_be_of_type_TimestampNan}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __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_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7903, __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(0, 7903, __pyx_L1_error)
7905: "`at` must be of type TimestampNanos, datetime, or ServerTimestamp"
7906: )
+7907: if self._auto_flush_mode.enabled:
if (__pyx_v_self->_auto_flush_mode.enabled) {
/* … */
}
+7908: af.sender = self._impl
__pyx_t_19 = __pyx_v_self->_impl;
__pyx_v_af.sender = __pyx_t_19;
+7909: af.mode = self._auto_flush_mode
__pyx_t_20 = __pyx_v_self->_auto_flush_mode;
__pyx_v_af.mode = __pyx_t_20;
+7910: af.last_flush_ms = self._last_flush_ms
__pyx_t_21 = __pyx_v_self->_last_flush_ms;
__pyx_v_af.last_flush_ms = __pyx_t_21;
7911:
+7912: if self._buffer is None:
__pyx_t_1 = (((PyObject *)__pyx_v_self->_buffer) == Py_None);
if (unlikely(__pyx_t_1)) {
/* … */
}
+7913: 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(0, 7913, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+7914: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7914, __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(0, 7914, __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_dataframe_can_t_be_called_Sender}; __pyx_t_2 = __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_2)) __PYX_ERR(0, 7913, __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(0, 7913, __pyx_L1_error)
7915: "dataframe() can\'t be called: Sender is closed."
7916: )
+7917: _dataframe(
__pyx_t_9 = __pyx_f_7questdb_7_client__dataframe(__pyx_v_af, __pyx_v_self->_buffer->_impl, __pyx_v_self->_buffer->_b, __pyx_v_df, __pyx_v_table_name, __pyx_v_table_name_col, __pyx_v_symbols, __pyx_v_at); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 7917, __pyx_L1_error)
7918: af,
7919: self._buffer._impl,
7920: self._buffer._b,
7921: df,
7922: table_name,
7923: table_name_col,
7924: symbols,
7925: at)
+7926: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
7927:
+7928: cpdef flush(
static PyObject *__pyx_pw_7questdb_7_client_6Sender_25flush(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 PyObject *__pyx_f_7questdb_7_client_6Sender_flush(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_7questdb_7_client_6Sender_flush *__pyx_optional_args) {
/* … */
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (
#if !CYTHON_USE_TYPE_SLOTS
unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender &&
__Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
#else
unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
#endif
) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_flush); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7928, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7questdb_7_client_6Sender_25flush)) {
__Pyx_XDECREF(__pyx_r);
__pyx_t_3 = NULL;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = __pyx_t_1;
__pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_clear); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7928, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = __Pyx_PyBool_FromLong(__pyx_v_transactional); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7928, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__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[4] = {__pyx_t_3, ((PyObject *)__pyx_v_buffer), __pyx_t_5, __pyx_t_6};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (4-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7928, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
__pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
__pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
__pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
}
#endif
}
/* … */
/* 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_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("questdb._client.Sender.flush", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_6Sender_25flush(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_6Sender_24flush, "\n If called with no arguments, immediately flushes the internal buffer.\n\n Alternatively you can flush a buffer that was constructed explicitly\n by passing ``buffer``.\n\n The buffer will be cleared by default, unless ``clear`` is set to\n ``False``.\n\n This method does nothing if the provided or internal buffer is empty.\n\n :param buffer: The buffer to flush. If ``None``, the internal buffer\n is flushed.\n\n With QWP/WebSocket, this publishes the buffer into the local sender\n queue and returns before the server necessarily ACKs the frame. Later\n terminal diagnostics fail subsequent sender calls and are available as\n :attr:`QuestDBError.sender_error`. Server diagnostics are also\n available through :func:`Sender.poll_error`.\n\n :param clear: If ``True``, the flushed buffer is cleared (default).\n If ``False``, the flushed buffer is left in the internal buffer.\n Note that ``clear=False`` is only supported if ``buffer`` is also\n specified.\n\n :param transactional: If ``True`` ensures that the flushed buffer\n contains row for a single table, ensuring all data can be written\n transactionally. This feature requires ILP/HTTP and is not available\n when connecting over TCP. *Default: False.*\n\n The Python GIL is released during the network IO operation.\n ");
static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_25flush = {"flush", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_25flush, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_24flush};
static PyObject *__pyx_pw_7questdb_7_client_6Sender_25flush(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
) {
struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_buffer = 0;
int __pyx_v_clear;
int __pyx_v_transactional;
#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("flush (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_buffer,&__pyx_mstate_global->__pyx_n_u_clear,&__pyx_mstate_global->__pyx_n_u_transactional,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(0, 7928, __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(0, 7928, __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(0, 7928, __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(0, 7928, __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, "flush", 0) < (0)) __PYX_ERR(0, 7928, __pyx_L3_error)
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
goto __pyx_L7_cleaned_up;
__pyx_L0:;
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_L7_cleaned_up:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_6Sender_24flush(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_buffer, int __pyx_v_clear, int __pyx_v_transactional) {
PyObject *__pyx_r = NULL;
__Pyx_XDECREF(__pyx_r);
__pyx_t_2.__pyx_n = 3;
__pyx_t_2.buffer = __pyx_v_buffer;
__pyx_t_2.clear = __pyx_v_clear;
__pyx_t_2.transactional = __pyx_v_transactional;
__pyx_t_1 = __pyx_vtabptr_7questdb_7_client_Sender->flush(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7928, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.Sender.flush", __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_6Sender_25flush, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_flush, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[104])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 7928, __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[28]);
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_flush, __pyx_t_18) < (0)) __PYX_ERR(0, 7928, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
/* … */
__pyx_mstate_global->__pyx_tuple[28] = PyTuple_Pack(3, Py_None, Py_True, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[28])) __PYX_ERR(0, 7928, __pyx_L1_error)
__Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[28]);
__Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[28]);
/* … */
struct __pyx_opt_args_7questdb_7_client_6Sender_flush {
int __pyx_n;
struct __pyx_obj_7questdb_7_client_Buffer *buffer;
int clear;
int transactional;
};
7929: self,
+7930: Buffer buffer=None,
struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_buffer = ((struct __pyx_obj_7questdb_7_client_Buffer *)Py_None);
/* … */
if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_7questdb_7_client_Buffer *)Py_None));
} else {
switch (__pyx_nargs) {
case 3:
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 7928, __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(0, 7928, __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(0, 7928, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_7questdb_7_client_Buffer *)Py_None));
}
__pyx_v_buffer = ((struct __pyx_obj_7questdb_7_client_Buffer *)values[0]);
if (values[1]) {
__pyx_v_clear = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_clear == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7931, __pyx_L3_error)
} else {
+7931: bint clear=True,
int __pyx_v_clear = ((int)1);
/* … */
__pyx_v_clear = ((int)1);
}
if (values[2]) {
__pyx_v_transactional = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_transactional == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7932, __pyx_L3_error)
} else {
+7932: bint transactional=False):
int __pyx_v_transactional = ((int)0);
struct line_sender *__pyx_v_sender;
struct line_sender_error *__pyx_v_err;
struct line_sender_buffer *__pyx_v_c_buf;
PyThreadState *__pyx_v_gs;
int __pyx_v_ok;
PyObject *__pyx_r = NULL;
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_buffer = __pyx_optional_args->buffer;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_clear = __pyx_optional_args->clear;
if (__pyx_optional_args->__pyx_n > 2) {
__pyx_v_transactional = __pyx_optional_args->transactional;
}
}
}
}
/* … */
__pyx_v_transactional = ((int)0);
}
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("flush", 0, 0, 3, __pyx_nargs); __PYX_ERR(0, 7928, __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.Sender.flush", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_buffer), __pyx_mstate_global->__pyx_ptype_7questdb_7_client_Buffer, 1, "buffer", 0))) __PYX_ERR(0, 7930, __pyx_L1_error)
__pyx_r = __pyx_pf_7questdb_7_client_6Sender_24flush(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self), __pyx_v_buffer, __pyx_v_clear, __pyx_v_transactional);
7933: """
7934: If called with no arguments, immediately flushes the internal buffer.
7935:
7936: Alternatively you can flush a buffer that was constructed explicitly
7937: by passing ``buffer``.
7938:
7939: The buffer will be cleared by default, unless ``clear`` is set to
7940: ``False``.
7941:
7942: This method does nothing if the provided or internal buffer is empty.
7943:
7944: :param buffer: The buffer to flush. If ``None``, the internal buffer
7945: is flushed.
7946:
7947: With QWP/WebSocket, this publishes the buffer into the local sender
7948: queue and returns before the server necessarily ACKs the frame. Later
7949: terminal diagnostics fail subsequent sender calls and are available as
7950: :attr:`QuestDBError.sender_error`. Server diagnostics are also
7951: available through :func:`Sender.poll_error`.
7952:
7953: :param clear: If ``True``, the flushed buffer is cleared (default).
7954: If ``False``, the flushed buffer is left in the internal buffer.
7955: Note that ``clear=False`` is only supported if ``buffer`` is also
7956: specified.
7957:
7958: :param transactional: If ``True`` ensures that the flushed buffer
7959: contains row for a single table, ensuring all data can be written
7960: transactionally. This feature requires ILP/HTTP and is not available
7961: when connecting over TCP. *Default: False.*
7962:
7963: The Python GIL is released during the network IO operation.
7964: """
+7965: cdef line_sender* sender = self._impl
__pyx_t_8 = __pyx_v_self->_impl; __pyx_v_sender = __pyx_t_8;
+7966: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+7967: cdef line_sender_buffer* c_buf = NULL
__pyx_v_c_buf = NULL;
+7968: cdef PyThreadState* gs = NULL # GIL state. NULL means we have the GIL.
__pyx_v_gs = NULL;
+7969: cdef bint ok = False
__pyx_v_ok = 0;
7970:
+7971: self._check_not_in_own_callback('flush')
__pyx_t_9 = __pyx_f_7questdb_7_client_6Sender__check_not_in_own_callback(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_flush); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 7971, __pyx_L1_error)
7972:
+7973: if self._in_txn:
if (unlikely(__pyx_v_self->_in_txn)) {
/* … */
}
+7974: raise QuestDBError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7974, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+7975: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = 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_7 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Cannot_flush_explicitly_inside_a}; __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_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7974, __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(0, 7974, __pyx_L1_error)
7976: 'Cannot flush explicitly inside a transaction')
7977:
+7978: if buffer is None and not clear:
__pyx_t_11 = (((PyObject *)__pyx_v_buffer) == Py_None);
if (__pyx_t_11) {
} else {
__pyx_t_10 = __pyx_t_11;
goto __pyx_L5_bool_binop_done;
}
__pyx_t_11 = (!__pyx_v_clear);
__pyx_t_10 = __pyx_t_11;
__pyx_L5_bool_binop_done:;
if (unlikely(__pyx_t_10)) {
/* … */
}
+7979: raise ValueError('The internal buffer must always be cleared.')
__pyx_t_4 = NULL;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_The_internal_buffer_must_always};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __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_1)) __PYX_ERR(0, 7979, __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(0, 7979, __pyx_L1_error)
7980:
+7981: if sender == NULL:
__pyx_t_10 = (__pyx_v_sender == NULL);
if (unlikely(__pyx_t_10)) {
/* … */
}
+7982: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7982, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+7983: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 7983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = 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_7 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_6, __pyx_mstate_global->__pyx_kp_u_flush_can_t_be_called_Sender_is}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__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_1)) __PYX_ERR(0, 7982, __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(0, 7982, __pyx_L1_error)
7984: 'flush() can\'t be called: Sender is closed.')
+7985: if buffer is not None:
__pyx_t_10 = (((PyObject *)__pyx_v_buffer) != Py_None);
if (__pyx_t_10) {
/* … */
goto __pyx_L8;
}
+7986: buffer._check_impl()
__pyx_t_9 = __pyx_f_7questdb_7_client_6Buffer__check_impl(__pyx_v_buffer); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 7986, __pyx_L1_error)
+7987: self._check_buffer_protocol(buffer)
__pyx_t_9 = __pyx_f_7questdb_7_client_6Sender__check_buffer_protocol(__pyx_v_self, __pyx_v_buffer); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 7987, __pyx_L1_error)
+7988: c_buf = buffer._impl
__pyx_t_12 = __pyx_v_buffer->_impl;
__pyx_v_c_buf = __pyx_t_12;
7989: else:
+7990: c_buf = self._buffer._impl
/*else*/ {
__pyx_t_12 = __pyx_v_self->_buffer->_impl;
__pyx_v_c_buf = __pyx_t_12;
}
__pyx_L8:;
+7991: if line_sender_buffer_size(c_buf) == 0 and not _is_qwp_ws_protocol(self._c_protocol):
__pyx_t_11 = (line_sender_buffer_size(__pyx_v_c_buf) == 0);
if (__pyx_t_11) {
} else {
__pyx_t_10 = __pyx_t_11;
goto __pyx_L10_bool_binop_done;
}
__pyx_t_11 = __pyx_f_7questdb_7_client__is_qwp_ws_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_11 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7991, __pyx_L1_error)
__pyx_t_13 = (!__pyx_t_11);
__pyx_t_10 = __pyx_t_13;
__pyx_L10_bool_binop_done:;
if (__pyx_t_10) {
/* … */
}
+7992: return
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
7993:
7994: # We might be blocking on IO, so temporarily release the GIL.
+7995: _ensure_doesnt_have_gil(&gs)
__pyx_t_10 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_10 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 7995, __pyx_L1_error)
+7996: if transactional:
if (__pyx_v_transactional) {
/* … */
goto __pyx_L12;
}
+7997: ok = line_sender_flush_and_keep_with_flags(
__pyx_v_ok = line_sender_flush_and_keep_with_flags(__pyx_v_sender, __pyx_v_c_buf, __pyx_v_transactional, (&__pyx_v_err));
7998: sender,
7999: c_buf,
8000: transactional,
8001: &err)
+8002: if ok and clear:
if (__pyx_v_ok) {
} else {
__pyx_t_10 = __pyx_v_ok;
goto __pyx_L14_bool_binop_done;
}
__pyx_t_10 = __pyx_v_clear;
__pyx_L14_bool_binop_done:;
if (__pyx_t_10) {
/* … */
}
+8003: line_sender_buffer_clear(c_buf)
line_sender_buffer_clear(__pyx_v_c_buf);
+8004: elif clear:
if (__pyx_v_clear) {
/* … */
goto __pyx_L12;
}
+8005: ok = line_sender_flush(sender, c_buf, &err)
__pyx_v_ok = line_sender_flush(__pyx_v_sender, __pyx_v_c_buf, (&__pyx_v_err));
8006: else:
+8007: ok = line_sender_flush_and_keep(sender, c_buf, &err)
/*else*/ {
__pyx_v_ok = line_sender_flush_and_keep(__pyx_v_sender, __pyx_v_c_buf, (&__pyx_v_err));
}
__pyx_L12:;
+8008: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8008, __pyx_L1_error)
+8009: if ok and c_buf == self._buffer._impl:
if (__pyx_v_ok) {
} else {
__pyx_t_10 = __pyx_v_ok;
goto __pyx_L17_bool_binop_done;
}
__pyx_t_13 = (__pyx_v_c_buf == __pyx_v_self->_buffer->_impl);
__pyx_t_10 = __pyx_t_13;
__pyx_L17_bool_binop_done:;
if (__pyx_t_10) {
/* … */
}
+8010: self._last_flush_ms[0] = line_sender_now_micros() // 1000
(__pyx_v_self->_last_flush_ms[0]) = __Pyx_div_int64_t(line_sender_now_micros(), 0x3E8, 1);
+8011: if not ok:
__pyx_t_10 = (!__pyx_v_ok);
if (__pyx_t_10) {
/* … */
}
+8012: if c_buf == self._buffer._impl:
__pyx_t_10 = (__pyx_v_c_buf == __pyx_v_self->_buffer->_impl);
if (__pyx_t_10) {
/* … */
}
8013: # Prevent a follow-up call to `.close(flush=True)` (as is
8014: # usually called from `__exit__`) to raise after the sender
8015: # entered an error state following a failed call to `.flush()`.
8016: # Note: In this case `clear` is always `True`.
+8017: line_sender_buffer_clear(c_buf)
line_sender_buffer_clear(__pyx_v_c_buf);
+8018: if _is_tcp_protocol(self._c_protocol):
__pyx_t_10 = __pyx_f_7questdb_7_client__is_tcp_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_10 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8018, __pyx_L1_error) if (unlikely(__pyx_t_10)) { /* … */ }
8019: # Provide further context pointing to the logs.
+8020: raise c_err_to_py_fmt(err, _FLUSH_FMT)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_FLUSH_FMT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8020, __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(0, 8020, __pyx_L1_error) __pyx_t_5 = __pyx_f_7questdb_7_client_c_err_to_py_fmt(__pyx_v_err, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(0, 8020, __pyx_L1_error)
8021: else:
+8022: raise c_err_to_py(err)
/*else*/ {
__pyx_t_5 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8022, __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(0, 8022, __pyx_L1_error)
}
8023:
+8024: cdef inline void_int _check_not_in_own_callback(self, str method) except -1:
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Sender__check_not_in_own_callback(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, PyObject *__pyx_v_method) {
__pyx_t_7questdb_7_client_void_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_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client.Sender._check_not_in_own_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
8025: # The QWP/WebSocket error handler runs synchronously on the flushing
8026: # thread while the native sender is borrowed; reentering it from the
8027: # handler would alias or free the live sender and abort the process.
+8028: if _on_dispatch_thread_for(
__pyx_t_3 = __pyx_f_7questdb_7_client__on_dispatch_thread_for(__pyx_t_1, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8028, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(__pyx_t_3)) { /* … */ }
+8029: self._error_handler, self._connection_listener):
__pyx_t_1 = __pyx_v_self->_error_handler; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = __pyx_v_self->_connection_listener; __Pyx_INCREF(__pyx_t_2);
+8030: raise QuestDBError(
__pyx_t_1 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8030, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+8031: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8031, __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(0, 8031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+8032: f'{method}() cannot be called from within this sender\'s own '
__pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_method); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_cannot_be_called_from_within_th); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8032, __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[3] = {__pyx_t_1, __pyx_t_6, __pyx_t_7}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 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(0, 8030, __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(0, 8030, __pyx_L1_error)
8033: 'error_handler or connection_listener callback.')
8034:
+8035: cdef inline void_int _check_qwp_ws(self, str method) except -1:
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Sender__check_qwp_ws(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, PyObject *__pyx_v_method) {
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
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_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client.Sender._check_qwp_ws", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+8036: if self._impl == NULL:
__pyx_t_1 = (__pyx_v_self->_impl == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+8037: 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(0, 8037, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+8038: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8038, __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(0, 8038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+8039: f'{method}() can\'t be called: Sender is closed.')
__pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_method); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_can_t_be_called_Sender_is_close); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8039, __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_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_8 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_t_7}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__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_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8037, __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(0, 8037, __pyx_L1_error)
+8040: if not _is_qwp_ws_protocol(self._c_protocol):
__pyx_t_1 = __pyx_f_7questdb_7_client__is_qwp_ws_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8040, __pyx_L1_error) __pyx_t_9 = (!__pyx_t_1); if (unlikely(__pyx_t_9)) { /* … */ }
+8041: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8041, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+8042: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8042, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8042, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+8043: f'{method}() is only supported for QWP/WebSocket senders.')
__pyx_t_6 = __Pyx_PyUnicode_Unicode(__pyx_v_method); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8043, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_is_only_supported_for_QWP_WebSo); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8043, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __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_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[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__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_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8041, __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(0, 8041, __pyx_L1_error)
+8044: self._check_not_in_own_callback(method)
__pyx_t_10 = __pyx_f_7questdb_7_client_6Sender__check_not_in_own_callback(__pyx_v_self, __pyx_v_method); if (unlikely(__pyx_t_10 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8044, __pyx_L1_error)
8045:
+8046: cdef inline void_int _check_buffer_protocol(self, Buffer buffer) except -1:
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_6Sender__check_buffer_protocol(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_buffer) {
int __pyx_v_need_qwp;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
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.Sender._check_buffer_protocol", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
8047: cdef bint need_qwp = (
+8048: _is_qwp_udp_protocol(self._c_protocol) or
__pyx_t_2 = __pyx_f_7questdb_7_client__is_qwp_udp_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8048, __pyx_L1_error) if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L3_bool_binop_done; }
+8049: _is_qwp_ws_protocol(self._c_protocol))
__pyx_t_2 = __pyx_f_7questdb_7_client__is_qwp_ws_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8049, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __pyx_L3_bool_binop_done:; __pyx_v_need_qwp = __pyx_t_1;
+8050: if need_qwp and not buffer._qwp:
if (__pyx_v_need_qwp) {
} else {
__pyx_t_1 = __pyx_v_need_qwp;
goto __pyx_L6_bool_binop_done;
}
__pyx_t_2 = (!__pyx_v_buffer->_qwp);
__pyx_t_1 = __pyx_t_2;
__pyx_L6_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
/* … */
}
+8051: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8051, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+8052: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8052, __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_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[3] = {__pyx_t_4, __pyx_t_7, __pyx_mstate_global->__pyx_kp_u_QWP_sender_requires_a_QWP_buffer}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__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_3)) __PYX_ERR(0, 8051, __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(0, 8051, __pyx_L1_error)
8053: 'QWP sender requires a QWP buffer. Use Sender.new_buffer() '
8054: 'to build a matching buffer.')
+8055: if buffer._qwp and not need_qwp:
if (__pyx_v_buffer->_qwp) {
} else {
__pyx_t_1 = __pyx_v_buffer->_qwp;
goto __pyx_L9_bool_binop_done;
}
__pyx_t_2 = (!__pyx_v_need_qwp);
__pyx_t_1 = __pyx_t_2;
__pyx_L9_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
/* … */
}
+8056: raise QuestDBError(
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8056, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+8057: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8057, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8057, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __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_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[3] = {__pyx_t_5, __pyx_t_6, __pyx_mstate_global->__pyx_kp_u_ILP_sender_requires_an_ILP_buffe}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__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_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8056, __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(0, 8056, __pyx_L1_error)
8058: 'ILP sender requires an ILP buffer. Use Sender.new_buffer() '
8059: 'to build a matching buffer.')
8060:
+8061: def flush_and_get_fsn(self, Buffer buffer=None):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_27flush_and_get_fsn(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_6Sender_26flush_and_get_fsn, "\n Publish a QWP/WebSocket buffer locally, clear it on success, and return\n the assigned frame sequence number.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_27flush_and_get_fsn = {"flush_and_get_fsn", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_27flush_and_get_fsn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_26flush_and_get_fsn}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_27flush_and_get_fsn(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 ) { struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_buffer = 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("flush_and_get_fsn (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_buffer,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(0, 8061, __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(0, 8061, __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, "flush_and_get_fsn", 0) < (0)) __PYX_ERR(0, 8061, __pyx_L3_error) if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_7questdb_7_client_Buffer *)Py_None)); } else { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8061, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_7questdb_7_client_Buffer *)Py_None)); } __pyx_v_buffer = ((struct __pyx_obj_7questdb_7_client_Buffer *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("flush_and_get_fsn", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 8061, __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.Sender.flush_and_get_fsn", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_buffer), __pyx_mstate_global->__pyx_ptype_7questdb_7_client_Buffer, 1, "buffer", 0))) __PYX_ERR(0, 8061, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_6Sender_26flush_and_get_fsn(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self), __pyx_v_buffer); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Sender_26flush_and_get_fsn(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_buffer) { struct line_sender *__pyx_v_sender; struct line_sender_error *__pyx_v_err; struct line_sender_buffer *__pyx_v_c_buf; struct line_sender_qwpws_fsn __pyx_v_fsn; PyThreadState *__pyx_v_gs; int __pyx_v_ok; 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_AddTraceback("questdb._client.Sender.flush_and_get_fsn", __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_6Sender_27flush_and_get_fsn, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_flush_and_get_fsn, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[105])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8061, __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[7]); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_flush_and_get_fsn, __pyx_t_18) < (0)) __PYX_ERR(0, 8061, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
8062: """
8063: Publish a QWP/WebSocket buffer locally, clear it on success, and return
8064: the assigned frame sequence number.
8065: """
+8066: cdef line_sender* sender = self._impl
__pyx_t_1 = __pyx_v_self->_impl; __pyx_v_sender = __pyx_t_1;
+8067: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+8068: cdef line_sender_buffer* c_buf = NULL
__pyx_v_c_buf = NULL;
8069: cdef line_sender_qwpws_fsn fsn
+8070: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+8071: cdef bint ok = False
__pyx_v_ok = 0;
8072:
+8073: if self._in_txn:
if (unlikely(__pyx_v_self->_in_txn)) {
/* … */
}
+8074: 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(0, 8074, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+8075: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8075, __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(0, 8075, __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_Cannot_flush_explicitly_inside_a}; __pyx_t_2 = __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_2)) __PYX_ERR(0, 8074, __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(0, 8074, __pyx_L1_error)
8076: 'Cannot flush explicitly inside a transaction')
+8077: self._check_qwp_ws('flush_and_get_fsn')
__pyx_t_8 = __pyx_f_7questdb_7_client_6Sender__check_qwp_ws(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_flush_and_get_fsn); if (unlikely(__pyx_t_8 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8077, __pyx_L1_error)
+8078: if buffer is not None:
__pyx_t_9 = (((PyObject *)__pyx_v_buffer) != Py_None);
if (__pyx_t_9) {
/* … */
goto __pyx_L4;
}
+8079: buffer._check_impl()
__pyx_t_8 = __pyx_f_7questdb_7_client_6Buffer__check_impl(__pyx_v_buffer); if (unlikely(__pyx_t_8 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8079, __pyx_L1_error)
+8080: self._check_buffer_protocol(buffer)
__pyx_t_8 = __pyx_f_7questdb_7_client_6Sender__check_buffer_protocol(__pyx_v_self, __pyx_v_buffer); if (unlikely(__pyx_t_8 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8080, __pyx_L1_error)
+8081: c_buf = buffer._impl
__pyx_t_10 = __pyx_v_buffer->_impl;
__pyx_v_c_buf = __pyx_t_10;
8082: else:
+8083: c_buf = self._buffer._impl
/*else*/ {
__pyx_t_10 = __pyx_v_self->_buffer->_impl;
__pyx_v_c_buf = __pyx_t_10;
}
__pyx_L4:;
8084:
+8085: _ensure_doesnt_have_gil(&gs)
__pyx_t_9 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_9 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8085, __pyx_L1_error)
+8086: ok = line_sender_qwpws_flush_and_get_fsn(sender, c_buf, &fsn, &err)
__pyx_v_ok = line_sender_qwpws_flush_and_get_fsn(__pyx_v_sender, __pyx_v_c_buf, (&__pyx_v_fsn), (&__pyx_v_err));
+8087: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8087, __pyx_L1_error)
+8088: if not ok:
__pyx_t_9 = (!__pyx_v_ok);
if (__pyx_t_9) {
/* … */
}
+8089: if c_buf == self._buffer._impl:
__pyx_t_9 = (__pyx_v_c_buf == __pyx_v_self->_buffer->_impl);
if (__pyx_t_9) {
/* … */
}
+8090: line_sender_buffer_clear(c_buf)
line_sender_buffer_clear(__pyx_v_c_buf);
+8091: raise 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(0, 8091, __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(0, 8091, __pyx_L1_error)
+8092: if c_buf == self._buffer._impl:
__pyx_t_9 = (__pyx_v_c_buf == __pyx_v_self->_buffer->_impl);
if (__pyx_t_9) {
/* … */
}
+8093: self._last_flush_ms[0] = line_sender_now_micros() // 1000
(__pyx_v_self->_last_flush_ms[0]) = __Pyx_div_int64_t(line_sender_now_micros(), 0x3E8, 1);
+8094: if fsn.has_value:
__pyx_t_9 = (__pyx_v_fsn.has_value != 0);
if (__pyx_t_9) {
/* … */
}
+8095: return fsn.value
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyLong_From_uint64_t(__pyx_v_fsn.value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8095, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+8096: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
8097:
+8098: def flush_and_keep_and_get_fsn(self, Buffer buffer=None):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_29flush_and_keep_and_get_fsn(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_6Sender_28flush_and_keep_and_get_fsn, "\n Publish a QWP/WebSocket buffer locally without clearing it and return\n the assigned frame sequence number.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_29flush_and_keep_and_get_fsn = {"flush_and_keep_and_get_fsn", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_29flush_and_keep_and_get_fsn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_28flush_and_keep_and_get_fsn}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_29flush_and_keep_and_get_fsn(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 ) { struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_buffer = 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("flush_and_keep_and_get_fsn (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_buffer,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(0, 8098, __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(0, 8098, __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, "flush_and_keep_and_get_fsn", 0) < (0)) __PYX_ERR(0, 8098, __pyx_L3_error) if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_7questdb_7_client_Buffer *)Py_None)); } else { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8098, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_7questdb_7_client_Buffer *)Py_None)); } __pyx_v_buffer = ((struct __pyx_obj_7questdb_7_client_Buffer *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("flush_and_keep_and_get_fsn", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 8098, __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.Sender.flush_and_keep_and_get_fsn", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_buffer), __pyx_mstate_global->__pyx_ptype_7questdb_7_client_Buffer, 1, "buffer", 0))) __PYX_ERR(0, 8098, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_6Sender_28flush_and_keep_and_get_fsn(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self), __pyx_v_buffer); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Sender_28flush_and_keep_and_get_fsn(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_buffer) { struct line_sender *__pyx_v_sender; struct line_sender_error *__pyx_v_err; struct line_sender_buffer *__pyx_v_c_buf; struct line_sender_qwpws_fsn __pyx_v_fsn; PyThreadState *__pyx_v_gs; int __pyx_v_ok; 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_AddTraceback("questdb._client.Sender.flush_and_keep_and_get_fsn", __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_6Sender_29flush_and_keep_and_get_fsn, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_flush_and_keep_and_get_fs, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[106])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8098, __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[7]); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_flush_and_keep_and_get_fsn, __pyx_t_18) < (0)) __PYX_ERR(0, 8098, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
8099: """
8100: Publish a QWP/WebSocket buffer locally without clearing it and return
8101: the assigned frame sequence number.
8102: """
+8103: cdef line_sender* sender = self._impl
__pyx_t_1 = __pyx_v_self->_impl; __pyx_v_sender = __pyx_t_1;
+8104: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+8105: cdef line_sender_buffer* c_buf = NULL
__pyx_v_c_buf = NULL;
8106: cdef line_sender_qwpws_fsn fsn
+8107: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+8108: cdef bint ok = False
__pyx_v_ok = 0;
8109:
+8110: if self._in_txn:
if (unlikely(__pyx_v_self->_in_txn)) {
/* … */
}
+8111: 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(0, 8111, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+8112: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8112, __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(0, 8112, __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_Cannot_flush_explicitly_inside_a}; __pyx_t_2 = __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_2)) __PYX_ERR(0, 8111, __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(0, 8111, __pyx_L1_error)
8113: 'Cannot flush explicitly inside a transaction')
+8114: self._check_qwp_ws('flush_and_keep_and_get_fsn')
__pyx_t_8 = __pyx_f_7questdb_7_client_6Sender__check_qwp_ws(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_flush_and_keep_and_get_fsn); if (unlikely(__pyx_t_8 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8114, __pyx_L1_error)
+8115: if buffer is not None:
__pyx_t_9 = (((PyObject *)__pyx_v_buffer) != Py_None);
if (__pyx_t_9) {
/* … */
goto __pyx_L4;
}
+8116: buffer._check_impl()
__pyx_t_8 = __pyx_f_7questdb_7_client_6Buffer__check_impl(__pyx_v_buffer); if (unlikely(__pyx_t_8 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8116, __pyx_L1_error)
+8117: self._check_buffer_protocol(buffer)
__pyx_t_8 = __pyx_f_7questdb_7_client_6Sender__check_buffer_protocol(__pyx_v_self, __pyx_v_buffer); if (unlikely(__pyx_t_8 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8117, __pyx_L1_error)
+8118: c_buf = buffer._impl
__pyx_t_10 = __pyx_v_buffer->_impl;
__pyx_v_c_buf = __pyx_t_10;
8119: else:
+8120: c_buf = self._buffer._impl
/*else*/ {
__pyx_t_10 = __pyx_v_self->_buffer->_impl;
__pyx_v_c_buf = __pyx_t_10;
}
__pyx_L4:;
8121:
+8122: _ensure_doesnt_have_gil(&gs)
__pyx_t_9 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_9 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8122, __pyx_L1_error)
+8123: ok = line_sender_qwpws_flush_and_keep_and_get_fsn(
__pyx_v_ok = line_sender_qwpws_flush_and_keep_and_get_fsn(__pyx_v_sender, __pyx_v_c_buf, (&__pyx_v_fsn), (&__pyx_v_err));
8124: sender, c_buf, &fsn, &err)
+8125: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8125, __pyx_L1_error)
+8126: if not ok:
__pyx_t_9 = (!__pyx_v_ok);
if (__pyx_t_9) {
/* … */
}
+8127: if c_buf == self._buffer._impl:
__pyx_t_9 = (__pyx_v_c_buf == __pyx_v_self->_buffer->_impl);
if (__pyx_t_9) {
/* … */
}
+8128: line_sender_buffer_clear(c_buf)
line_sender_buffer_clear(__pyx_v_c_buf);
+8129: raise 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(0, 8129, __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(0, 8129, __pyx_L1_error)
+8130: if c_buf == self._buffer._impl:
__pyx_t_9 = (__pyx_v_c_buf == __pyx_v_self->_buffer->_impl);
if (__pyx_t_9) {
/* … */
}
+8131: self._last_flush_ms[0] = line_sender_now_micros() // 1000
(__pyx_v_self->_last_flush_ms[0]) = __Pyx_div_int64_t(line_sender_now_micros(), 0x3E8, 1);
+8132: if fsn.has_value:
__pyx_t_9 = (__pyx_v_fsn.has_value != 0);
if (__pyx_t_9) {
/* … */
}
+8133: return fsn.value
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyLong_From_uint64_t(__pyx_v_fsn.value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
+8134: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
8135:
+8136: def published_fsn(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_31published_fsn(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_6Sender_30published_fsn, "\n Highest QWP/WebSocket frame sequence number published locally.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_31published_fsn = {"published_fsn", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_31published_fsn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_30published_fsn}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_31published_fsn(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("published_fsn (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("published_fsn", 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("published_fsn", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_6Sender_30published_fsn(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Sender_30published_fsn(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) { struct line_sender_qwpws_fsn __pyx_v_fsn; struct line_sender_error *__pyx_v_err; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("questdb._client.Sender.published_fsn", __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_6Sender_31published_fsn, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_published_fsn, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[107])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8136, __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_Sender, __pyx_mstate_global->__pyx_n_u_published_fsn, __pyx_t_18) < (0)) __PYX_ERR(0, 8136, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
8137: """
8138: Highest QWP/WebSocket frame sequence number published locally.
8139: """
8140: cdef line_sender_qwpws_fsn fsn
+8141: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
8142:
+8143: self._check_qwp_ws('published_fsn')
__pyx_t_1 = __pyx_f_7questdb_7_client_6Sender__check_qwp_ws(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_published_fsn); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8143, __pyx_L1_error)
+8144: if not line_sender_qwpws_published_fsn(self._impl, &fsn, &err):
__pyx_t_2 = (!line_sender_qwpws_published_fsn(__pyx_v_self->_impl, (&__pyx_v_fsn), (&__pyx_v_err)));
if (unlikely(__pyx_t_2)) {
/* … */
}
+8145: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8145, __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(0, 8145, __pyx_L1_error)
+8146: if fsn.has_value:
__pyx_t_2 = (__pyx_v_fsn.has_value != 0);
if (__pyx_t_2) {
/* … */
}
+8147: return fsn.value
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyLong_From_uint64_t(__pyx_v_fsn.value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
+8148: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
8149:
+8150: def acked_fsn(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_33acked_fsn(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_6Sender_32acked_fsn, "\n Highest QWP/WebSocket frame sequence number completed by ACK or\n drop-and-continue rejection.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_33acked_fsn = {"acked_fsn", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_33acked_fsn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_32acked_fsn}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_33acked_fsn(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("acked_fsn (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("acked_fsn", 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("acked_fsn", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_6Sender_32acked_fsn(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Sender_32acked_fsn(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) { struct line_sender_qwpws_fsn __pyx_v_fsn; struct line_sender_error *__pyx_v_err; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("questdb._client.Sender.acked_fsn", __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_6Sender_33acked_fsn, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_acked_fsn, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[108])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8150, __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_Sender, __pyx_mstate_global->__pyx_n_u_acked_fsn, __pyx_t_18) < (0)) __PYX_ERR(0, 8150, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
8151: """
8152: Highest QWP/WebSocket frame sequence number completed by ACK or
8153: drop-and-continue rejection.
8154: """
8155: cdef line_sender_qwpws_fsn fsn
+8156: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
8157:
+8158: self._check_qwp_ws('acked_fsn')
__pyx_t_1 = __pyx_f_7questdb_7_client_6Sender__check_qwp_ws(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_acked_fsn); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8158, __pyx_L1_error)
+8159: if not line_sender_qwpws_acked_fsn(self._impl, &fsn, &err):
__pyx_t_2 = (!line_sender_qwpws_acked_fsn(__pyx_v_self->_impl, (&__pyx_v_fsn), (&__pyx_v_err)));
if (unlikely(__pyx_t_2)) {
/* … */
}
+8160: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8160, __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(0, 8160, __pyx_L1_error)
+8161: if fsn.has_value:
__pyx_t_2 = (__pyx_v_fsn.has_value != 0);
if (__pyx_t_2) {
/* … */
}
+8162: return fsn.value
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyLong_From_uint64_t(__pyx_v_fsn.value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8162, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
+8163: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
8164:
+8165: def await_acked_fsn(self, fsn, timeout_millis=0):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_35await_acked_fsn(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_6Sender_34await_acked_fsn, "\n Wait until the QWP/WebSocket completion watermark reaches ``fsn``.\n\n Returns ``True`` once every frame published so far (which includes\n ``fsn``) has been acknowledged, or ``False`` if the no-progress\n timeout elapsed before the acknowledgement watermark reached ``fsn``.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_35await_acked_fsn = {"await_acked_fsn", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_35await_acked_fsn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_34await_acked_fsn}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_35await_acked_fsn(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_fsn = 0; PyObject *__pyx_v_timeout_millis = 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("await_acked_fsn (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_fsn,&__pyx_mstate_global->__pyx_n_u_timeout_millis,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(0, 8165, __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(0, 8165, __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(0, 8165, __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_acked_fsn", 0) < (0)) __PYX_ERR(0, 8165, __pyx_L3_error) if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("await_acked_fsn", 0, 1, 2, i); __PYX_ERR(0, 8165, __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(0, 8165, __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(0, 8165, __pyx_L3_error) break; default: goto __pyx_L5_argtuple_error; } if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0)); } __pyx_v_fsn = values[0]; __pyx_v_timeout_millis = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("await_acked_fsn", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 8165, __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.Sender.await_acked_fsn", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_6Sender_34await_acked_fsn(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self), __pyx_v_fsn, __pyx_v_timeout_millis); 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_6Sender_34await_acked_fsn(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, PyObject *__pyx_v_fsn, PyObject *__pyx_v_timeout_millis) { struct line_sender_error *__pyx_v_err; PyThreadState *__pyx_v_gs; uint64_t __pyx_v_c_fsn; uint64_t __pyx_v_c_timeout_millis; struct line_sender_qwpws_fsn __pyx_v_acked; int __pyx_v_ok; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("questdb._client.Sender.await_acked_fsn", __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_6Sender_35await_acked_fsn, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_await_acked_fsn, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[109])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8165, __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_Sender, __pyx_mstate_global->__pyx_n_u_await_acked_fsn, __pyx_t_18) < (0)) __PYX_ERR(0, 8165, __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_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[29])) __PYX_ERR(0, 8165, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[29]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[29]);
8166: """
8167: Wait until the QWP/WebSocket completion watermark reaches ``fsn``.
8168:
8169: Returns ``True`` once every frame published so far (which includes
8170: ``fsn``) has been acknowledged, or ``False`` if the no-progress
8171: timeout elapsed before the acknowledgement watermark reached ``fsn``.
8172: """
+8173: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+8174: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
8175: cdef uint64_t c_fsn
8176: cdef uint64_t c_timeout_millis
8177: cdef line_sender_qwpws_fsn acked
+8178: cdef bint ok = False
__pyx_v_ok = 0;
8179:
+8180: self._check_qwp_ws('await_acked_fsn')
__pyx_t_1 = __pyx_f_7questdb_7_client_6Sender__check_qwp_ws(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_await_acked_fsn); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8180, __pyx_L1_error)
+8181: if not isinstance(fsn, int) or isinstance(fsn, bool):
__pyx_t_3 = PyLong_Check(__pyx_v_fsn); __pyx_t_4 = (!__pyx_t_3); if (!__pyx_t_4) { } else { __pyx_t_2 = __pyx_t_4; goto __pyx_L4_bool_binop_done; } __pyx_t_4 = __Pyx_TypeCheck(__pyx_v_fsn, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool); __pyx_t_2 = __pyx_t_4; __pyx_L4_bool_binop_done:; if (unlikely(__pyx_t_2)) { /* … */ }
+8182: raise TypeError('"fsn" must be a non-negative int.')
__pyx_t_6 = NULL;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_fsn_must_be_a_non_negative_int};
__pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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;
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8182, __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(0, 8182, __pyx_L1_error)
+8183: if fsn < 0:
__pyx_t_5 = PyObject_RichCompare(__pyx_v_fsn, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8183, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 8183, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+8184: raise ValueError('"fsn" must be a non-negative int.')
__pyx_t_6 = NULL;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_fsn_must_be_a_non_negative_int};
__pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __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;
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8184, __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(0, 8184, __pyx_L1_error)
+8185: if not isinstance(timeout_millis, int) or isinstance(timeout_millis, bool):
__pyx_t_4 = PyLong_Check(__pyx_v_timeout_millis); __pyx_t_3 = (!__pyx_t_4); if (!__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L8_bool_binop_done; } __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_timeout_millis, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool); __pyx_t_2 = __pyx_t_3; __pyx_L8_bool_binop_done:; if (unlikely(__pyx_t_2)) { /* … */ }
+8186: raise TypeError('"timeout_millis" must be a non-negative int.')
__pyx_t_6 = NULL;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_timeout_millis_must_be_a_non_ne};
__pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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;
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8186, __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(0, 8186, __pyx_L1_error)
+8187: if timeout_millis < 0:
__pyx_t_5 = PyObject_RichCompare(__pyx_v_timeout_millis, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8187, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 8187, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+8188: raise ValueError('"timeout_millis" must be a non-negative int.')
__pyx_t_6 = NULL;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_timeout_millis_must_be_a_non_ne};
__pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __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;
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8188, __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(0, 8188, __pyx_L1_error)
+8189: c_fsn = fsn
__pyx_t_8 = __Pyx_PyLong_As_uint64_t(__pyx_v_fsn); if (unlikely((__pyx_t_8 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8189, __pyx_L1_error) __pyx_v_c_fsn = __pyx_t_8;
+8190: c_timeout_millis = timeout_millis
__pyx_t_8 = __Pyx_PyLong_As_uint64_t(__pyx_v_timeout_millis); if (unlikely((__pyx_t_8 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8190, __pyx_L1_error) __pyx_v_c_timeout_millis = __pyx_t_8;
8191:
8192: # Fast path: the completion watermark may already cover ``fsn``.
+8193: if not line_sender_qwpws_acked_fsn(self._impl, &acked, &err):
__pyx_t_2 = (!line_sender_qwpws_acked_fsn(__pyx_v_self->_impl, (&__pyx_v_acked), (&__pyx_v_err)));
if (unlikely(__pyx_t_2)) {
/* … */
}
+8194: raise c_err_to_py(err)
__pyx_t_5 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8194, __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(0, 8194, __pyx_L1_error)
+8195: if acked.has_value and acked.value >= c_fsn:
__pyx_t_3 = (__pyx_v_acked.has_value != 0);
if (__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L13_bool_binop_done;
}
__pyx_t_3 = (__pyx_v_acked.value >= __pyx_v_c_fsn);
__pyx_t_2 = __pyx_t_3;
__pyx_L13_bool_binop_done:;
if (__pyx_t_2) {
/* … */
}
+8196: return True
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_True); __pyx_r = Py_True; goto __pyx_L0;
8197:
8198: # `line_sender_qwpws_wait` drains every frame published so far (a
8199: # superset of ``fsn``) up to the "ok" ack level. The no-progress
8200: # deadline (`timeout_millis`; 0 == wait indefinitely) surfaces as a
8201: # `line_sender_error_failover_retry`, which we translate back into the
8202: # historical ``reached == False`` return rather than raising.
+8203: _ensure_doesnt_have_gil(&gs)
__pyx_t_2 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8203, __pyx_L1_error)
+8204: ok = line_sender_qwpws_wait(
__pyx_v_ok = line_sender_qwpws_wait(__pyx_v_self->_impl, qwpws_ack_level_ok, __pyx_v_c_timeout_millis, (&__pyx_v_err));
8205: self._impl,
8206: qwpws_ack_level.qwpws_ack_level_ok,
8207: c_timeout_millis,
8208: &err)
+8209: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8209, __pyx_L1_error)
+8210: if not ok:
__pyx_t_2 = (!__pyx_v_ok);
if (__pyx_t_2) {
/* … */
}
+8211: if line_sender_error_get_code(err) != \
__pyx_t_2 = (line_sender_error_get_code(__pyx_v_err) != line_sender_error_failover_retry);
if (unlikely(__pyx_t_2)) {
/* … */
}
8212: line_sender_error_failover_retry:
+8213: raise c_err_to_py(err)
__pyx_t_5 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8213, __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(0, 8213, __pyx_L1_error)
+8214: line_sender_error_free(err)
line_sender_error_free(__pyx_v_err);
+8215: err = NULL
__pyx_v_err = NULL;
8216:
8217: # Re-read the watermark: the wait either drained ``fsn`` or expired
8218: # with no progress; the current ack level is the answer.
+8219: if not line_sender_qwpws_acked_fsn(self._impl, &acked, &err):
__pyx_t_2 = (!line_sender_qwpws_acked_fsn(__pyx_v_self->_impl, (&__pyx_v_acked), (&__pyx_v_err)));
if (unlikely(__pyx_t_2)) {
/* … */
}
+8220: raise c_err_to_py(err)
__pyx_t_5 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8220, __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(0, 8220, __pyx_L1_error)
+8221: return bool(acked.has_value and acked.value >= c_fsn)
__Pyx_XDECREF(__pyx_r); __pyx_t_6 = NULL; if (__pyx_v_acked.has_value) { } else { __pyx_t_10 = __Pyx_PyLong_From_bool(__pyx_v_acked.has_value); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 8221, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_9 = __pyx_t_10; __pyx_t_10 = 0; goto __pyx_L18_bool_binop_done; } __pyx_t_2 = (__pyx_v_acked.value >= __pyx_v_c_fsn); __pyx_t_10 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 8221, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_9 = __pyx_t_10; __pyx_t_10 = 0; __pyx_L18_bool_binop_done:; __pyx_t_7 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_9}; __pyx_t_5 = __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_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8221, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_5); } __pyx_r = ((PyObject *)__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L0;
8222:
+8223: def drive_once(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_37drive_once(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_6Sender_36drive_once, "\n Drive one QWP/WebSocket progress step for manual progress senders.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_37drive_once = {"drive_once", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_37drive_once, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_36drive_once}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_37drive_once(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("drive_once (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("drive_once", 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("drive_once", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_6Sender_36drive_once(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Sender_36drive_once(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) { struct line_sender_error *__pyx_v_err; PyThreadState *__pyx_v_gs; bool __pyx_v_progressed; int __pyx_v_ok; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("questdb._client.Sender.drive_once", __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_6Sender_37drive_once, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_drive_once, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[110])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8223, __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_Sender, __pyx_mstate_global->__pyx_n_u_drive_once, __pyx_t_18) < (0)) __PYX_ERR(0, 8223, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
8224: """
8225: Drive one QWP/WebSocket progress step for manual progress senders.
8226: """
+8227: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+8228: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+8229: cdef cbool progressed = False
__pyx_v_progressed = 0;
+8230: cdef bint ok = False
__pyx_v_ok = 0;
8231:
+8232: self._check_qwp_ws('drive_once')
__pyx_t_1 = __pyx_f_7questdb_7_client_6Sender__check_qwp_ws(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_drive_once); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8232, __pyx_L1_error)
+8233: _ensure_doesnt_have_gil(&gs)
__pyx_t_2 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8233, __pyx_L1_error)
+8234: ok = line_sender_qwpws_drive_once(self._impl, &progressed, &err)
__pyx_v_ok = line_sender_qwpws_drive_once(__pyx_v_self->_impl, (&__pyx_v_progressed), (&__pyx_v_err));
+8235: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8235, __pyx_L1_error)
+8236: if not ok:
__pyx_t_2 = (!__pyx_v_ok);
if (unlikely(__pyx_t_2)) {
/* … */
}
+8237: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8237, __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(0, 8237, __pyx_L1_error)
+8238: return bool(progressed)
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = NULL; __pyx_t_5 = __Pyx_PyLong_From_bool(__pyx_v_progressed); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, __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_3)) __PYX_ERR(0, 8238, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_3); } __pyx_r = ((PyObject *)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0;
8239:
+8240: def poll_error(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_39poll_error(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_6Sender_38poll_error, "\n Poll the next structured QWP/WebSocket diagnostic.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_39poll_error = {"poll_error", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_39poll_error, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_38poll_error}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_39poll_error(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("poll_error (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("poll_error", 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("poll_error", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_6Sender_38poll_error(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Sender_38poll_error(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) { struct line_sender_error *__pyx_v_err; struct line_sender_qwpws_error *__pyx_v_qwp_err; struct line_sender_qwpws_error_view __pyx_v_view; PyObject *__pyx_r = NULL; /* … */ /* 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_AddTraceback("questdb._client.Sender.poll_error", __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_6Sender_39poll_error, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_poll_error, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[111])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8240, __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_Sender, __pyx_mstate_global->__pyx_n_u_poll_error, __pyx_t_18) < (0)) __PYX_ERR(0, 8240, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
8241: """
8242: Poll the next structured QWP/WebSocket diagnostic.
8243: """
+8244: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+8245: cdef line_sender_qwpws_error* qwp_err = NULL
__pyx_v_qwp_err = NULL;
8246: cdef line_sender_qwpws_error_view view
8247:
+8248: self._check_qwp_ws('poll_error')
__pyx_t_1 = __pyx_f_7questdb_7_client_6Sender__check_qwp_ws(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_poll_error); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8248, __pyx_L1_error)
+8249: if not line_sender_qwpws_poll_error(self._impl, &qwp_err, &err):
__pyx_t_2 = (!line_sender_qwpws_poll_error(__pyx_v_self->_impl, (&__pyx_v_qwp_err), (&__pyx_v_err)));
if (unlikely(__pyx_t_2)) {
/* … */
}
+8250: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8250, __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(0, 8250, __pyx_L1_error)
+8251: if qwp_err == NULL:
__pyx_t_2 = (__pyx_v_qwp_err == NULL);
if (__pyx_t_2) {
/* … */
}
+8252: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0;
+8253: try:
/*try:*/ {
+8254: view = line_sender_qwpws_error_get_view(qwp_err)
__pyx_v_view = line_sender_qwpws_error_get_view(__pyx_v_qwp_err);
+8255: return _sender_error_from_raw(c_sender_error_view_to_raw(view))
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sender_error_from_raw); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8255, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __pyx_f_7questdb_7_client_c_sender_error_view_to_raw(__pyx_v_view); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8255, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = 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_7 = 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_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_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8255, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L5_return; }
8256: finally:
+8257: line_sender_qwpws_error_free(qwp_err)
/*finally:*/ {
__pyx_L6_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 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_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
if ( unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_11);
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_16);
__pyx_t_8 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_10 = __pyx_filename;
{
line_sender_qwpws_error_free(__pyx_v_qwp_err);
}
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
__pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
__pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_10;
goto __pyx_L1_error;
}
__pyx_L5_return: {
__pyx_t_16 = __pyx_r;
__pyx_r = 0;
line_sender_qwpws_error_free(__pyx_v_qwp_err);
__pyx_r = __pyx_t_16;
__pyx_t_16 = 0;
goto __pyx_L0;
}
}
8258:
+8259: def error_events_dropped(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_41error_events_dropped(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_6Sender_40error_events_dropped, "\n Number of QWP/WebSocket diagnostics dropped from the bounded ring.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_41error_events_dropped = {"error_events_dropped", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_41error_events_dropped, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_40error_events_dropped}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_41error_events_dropped(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("error_events_dropped (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("error_events_dropped", 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("error_events_dropped", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_6Sender_40error_events_dropped(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Sender_40error_events_dropped(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) { struct line_sender_error *__pyx_v_err; uint64_t __pyx_v_dropped; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("questdb._client.Sender.error_events_dropped", __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_6Sender_41error_events_dropped, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_error_events_dropped, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[112])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8259, __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_Sender, __pyx_mstate_global->__pyx_n_u_error_events_dropped, __pyx_t_18) < (0)) __PYX_ERR(0, 8259, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
8260: """
8261: Number of QWP/WebSocket diagnostics dropped from the bounded ring.
8262: """
+8263: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+8264: cdef uint64_t dropped = 0
__pyx_v_dropped = 0;
8265:
+8266: self._check_qwp_ws('error_events_dropped')
__pyx_t_1 = __pyx_f_7questdb_7_client_6Sender__check_qwp_ws(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_error_events_dropped); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8266, __pyx_L1_error)
+8267: if not line_sender_qwpws_errors_dropped(self._impl, &dropped, &err):
__pyx_t_2 = (!line_sender_qwpws_errors_dropped(__pyx_v_self->_impl, (&__pyx_v_dropped), (&__pyx_v_err)));
if (unlikely(__pyx_t_2)) {
/* … */
}
+8268: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8268, __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(0, 8268, __pyx_L1_error)
+8269: return dropped
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyLong_From_uint64_t(__pyx_v_dropped); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8269, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
8270:
+8271: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_6Sender_25connection_events_dropped_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_6Sender_25connection_events_dropped_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_6Sender_25connection_events_dropped___get__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_6Sender_25connection_events_dropped___get__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.Sender.connection_events_dropped.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
8272: def connection_events_dropped(self) -> int:
8273: """
8274: Total connection events discarded by the listener inbox's
8275: drop-oldest policy. ``0`` when no listener is registered.
8276: """
+8277: if self._impl == NULL:
__pyx_t_1 = (__pyx_v_self->_impl == NULL);
if (__pyx_t_1) {
/* … */
}
+8278: return 0
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0); __pyx_r = __pyx_mstate_global->__pyx_int_0; goto __pyx_L0;
+8279: return line_sender_connection_events_dropped(self._impl)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyLong_From_uint64_t(line_sender_connection_events_dropped(__pyx_v_self->_impl)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
8280:
+8281: @property
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_6Sender_27connection_events_delivered_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_6Sender_27connection_events_delivered_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_6Sender_27connection_events_delivered___get__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_6Sender_27connection_events_delivered___get__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.Sender.connection_events_delivered.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
8282: def connection_events_delivered(self) -> int:
8283: """
8284: Total connection events delivered to the listener. ``0`` when no
8285: listener is registered.
8286: """
+8287: if self._impl == NULL:
__pyx_t_1 = (__pyx_v_self->_impl == NULL);
if (__pyx_t_1) {
/* … */
}
+8288: return 0
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0); __pyx_r = __pyx_mstate_global->__pyx_int_0; goto __pyx_L0;
+8289: return line_sender_connection_events_delivered(self._impl)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyLong_From_uint64_t(line_sender_connection_events_delivered(__pyx_v_self->_impl)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0;
8290:
+8291: def close_drain(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_43close_drain(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_6Sender_42close_drain, "\n Stop accepting new QWP/WebSocket publications and wait for already\n published frames to resolve.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_43close_drain = {"close_drain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_43close_drain, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_42close_drain}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_43close_drain(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("close_drain (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("close_drain", 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("close_drain", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_6Sender_42close_drain(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6Sender_42close_drain(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) { struct line_sender_error *__pyx_v_err; PyThreadState *__pyx_v_gs; int __pyx_v_ok; 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_AddTraceback("questdb._client.Sender.close_drain", __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_6Sender_43close_drain, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_close_drain, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[113])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8291, __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_Sender, __pyx_mstate_global->__pyx_n_u_close_drain, __pyx_t_18) < (0)) __PYX_ERR(0, 8291, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
8292: """
8293: Stop accepting new QWP/WebSocket publications and wait for already
8294: published frames to resolve.
8295: """
+8296: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+8297: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+8298: cdef bint ok = False
__pyx_v_ok = 0;
8299:
+8300: self._check_qwp_ws('close_drain')
__pyx_t_1 = __pyx_f_7questdb_7_client_6Sender__check_qwp_ws(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_close_drain); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8300, __pyx_L1_error)
+8301: _ensure_doesnt_have_gil(&gs)
__pyx_t_2 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8301, __pyx_L1_error)
+8302: ok = line_sender_qwpws_close_drain(self._impl, &err)
__pyx_v_ok = line_sender_qwpws_close_drain(__pyx_v_self->_impl, (&__pyx_v_err));
+8303: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8303, __pyx_L1_error)
+8304: if not ok:
__pyx_t_2 = (!__pyx_v_ok);
if (unlikely(__pyx_t_2)) {
/* … */
}
+8305: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8305, __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(0, 8305, __pyx_L1_error)
8306:
+8307: cdef _close(self):
static PyObject *__pyx_f_7questdb_7_client_6Sender__close(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) {
PyThreadState *__pyx_v_gs;
struct line_sender *__pyx_v_impl;
struct line_sender_opts *__pyx_v_opts;
struct line_sender_opts *__pyx_v_qwp_ws_opts;
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_AddTraceback("questdb._client.Sender._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+8308: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+8309: cdef line_sender* impl = self._impl
__pyx_t_1 = __pyx_v_self->_impl; __pyx_v_impl = __pyx_t_1;
+8310: cdef line_sender_opts* opts = self._opts
__pyx_t_2 = __pyx_v_self->_opts; __pyx_v_opts = __pyx_t_2;
+8311: cdef line_sender_opts* qwp_ws_opts = self._qwp_ws_opts
__pyx_t_2 = __pyx_v_self->_qwp_ws_opts; __pyx_v_qwp_ws_opts = __pyx_t_2;
+8312: self._impl = NULL
__pyx_v_self->_impl = NULL;
+8313: self._opts = NULL
__pyx_v_self->_opts = NULL;
+8314: self._qwp_ws_opts = NULL
__pyx_v_self->_qwp_ws_opts = NULL;
+8315: if impl != NULL or opts != NULL or qwp_ws_opts != NULL:
__pyx_t_4 = (__pyx_v_impl != NULL);
if (!__pyx_t_4) {
} else {
__pyx_t_3 = __pyx_t_4;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_4 = (__pyx_v_opts != NULL);
if (!__pyx_t_4) {
} else {
__pyx_t_3 = __pyx_t_4;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_4 = (__pyx_v_qwp_ws_opts != NULL);
__pyx_t_3 = __pyx_t_4;
__pyx_L4_bool_binop_done:;
if (__pyx_t_3) {
/* … */
}
+8316: _ensure_doesnt_have_gil(&gs)
__pyx_t_3 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_3 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8316, __pyx_L1_error)
+8317: if impl != NULL:
__pyx_t_3 = (__pyx_v_impl != NULL);
if (__pyx_t_3) {
/* … */
}
+8318: line_sender_close(impl)
line_sender_close(__pyx_v_impl);
+8319: line_sender_opts_free(opts)
line_sender_opts_free(__pyx_v_opts);
+8320: line_sender_opts_free(qwp_ws_opts)
line_sender_opts_free(__pyx_v_qwp_ws_opts);
+8321: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8321, __pyx_L1_error)
+8322: _release_callback_refs(self._cb_refs_key)
__pyx_t_5 = __pyx_f_7questdb_7_client__release_callback_refs(__pyx_v_self->_cb_refs_key); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+8323: self._cb_refs_key = 0
__pyx_v_self->_cb_refs_key = 0;
+8324: self._buffer = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->_buffer); __Pyx_DECREF((PyObject *)__pyx_v_self->_buffer); __pyx_v_self->_buffer = ((struct __pyx_obj_7questdb_7_client_Buffer *)Py_None);
+8325: self._error_handler = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_error_handler); __Pyx_DECREF(__pyx_v_self->_error_handler); __pyx_v_self->_error_handler = Py_None;
+8326: self._connection_listener = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->_connection_listener); __Pyx_DECREF(__pyx_v_self->_connection_listener); __pyx_v_self->_connection_listener = Py_None;
+8327: if self._slot_id != -1:
__pyx_t_3 = (__pyx_v_self->_slot_id != -1L);
if (__pyx_t_3) {
/* … */
}
+8328: qdb_active_senders_track_closed(<uint32_t>self._slot_id)
qdb_active_senders_track_closed(((uint32_t)__pyx_v_self->_slot_id));
+8329: self._slot_id = -1
__pyx_v_self->_slot_id = -1L;
8330:
+8331: cpdef close(self, bint flush=True):
static PyObject *__pyx_pw_7questdb_7_client_6Sender_45close(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 PyObject *__pyx_f_7questdb_7_client_6Sender_close(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, int __pyx_skip_dispatch, struct __pyx_opt_args_7questdb_7_client_6Sender_close *__pyx_optional_args) {
int __pyx_v_flush = ((int)1);
PyObject *__pyx_r = NULL;
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_flush = __pyx_optional_args->flush;
}
}
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (
#if !CYTHON_USE_TYPE_SLOTS
unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender &&
__Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
#else
unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
#endif
) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8331, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7questdb_7_client_6Sender_45close)) {
__Pyx_XDECREF(__pyx_r);
__pyx_t_3 = NULL;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = __pyx_t_1;
__pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_flush); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8331, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = 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_6 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8331, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
__pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
__pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
__pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
}
#endif
}
/* … */
/* 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.Sender.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_6Sender_45close(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_6Sender_44close, "\n Disconnect.\n\n This method is idempotent and can be called repeatedly.\n\n Once a sender is closed, it can't be re-used.\n\n :param bool flush: If ``True``, flush the internal buffer before closing.\n For QWP/WebSocket, this also drains already-published frames before\n closing.\n ");
static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_45close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_45close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_44close};
static PyObject *__pyx_pw_7questdb_7_client_6Sender_45close(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_flush;
#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_flush,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(0, 8331, __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(0, 8331, __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, "close", 0) < (0)) __PYX_ERR(0, 8331, __pyx_L3_error)
} else {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8331, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
}
if (values[0]) {
__pyx_v_flush = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_flush == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8331, __pyx_L3_error)
} else {
__pyx_v_flush = ((int)1);
}
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("close", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 8331, __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.Sender.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_6Sender_44close(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self), __pyx_v_flush);
/* 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_6Sender_44close(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, int __pyx_v_flush) {
PyObject *__pyx_r = NULL;
__Pyx_XDECREF(__pyx_r);
__pyx_t_2.__pyx_n = 1;
__pyx_t_2.flush = __pyx_v_flush;
__pyx_t_1 = __pyx_vtabptr_7questdb_7_client_Sender->close(__pyx_v_self, 1, &__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8331, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.Sender.close", __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_6Sender_45close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender_close, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[114])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8331, __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[30]);
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_Sender, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_18) < (0)) __PYX_ERR(0, 8331, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
/* … */
__pyx_mstate_global->__pyx_tuple[30] = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_mstate_global->__pyx_tuple[30])) __PYX_ERR(0, 8331, __pyx_L1_error)
__Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[30]);
__Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[30]);
/* … */
struct __pyx_opt_args_7questdb_7_client_6Sender_close {
int __pyx_n;
int flush;
};
8332: """
8333: Disconnect.
8334:
8335: This method is idempotent and can be called repeatedly.
8336:
8337: Once a sender is closed, it can't be re-used.
8338:
8339: :param bool flush: If ``True``, flush the internal buffer before closing.
8340: For QWP/WebSocket, this also drains already-published frames before
8341: closing.
8342: """
+8343: self._check_not_in_own_callback('close')
__pyx_t_7 = __pyx_f_7questdb_7_client_6Sender__check_not_in_own_callback(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_close); if (unlikely(__pyx_t_7 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8343, __pyx_L1_error)
+8344: try:
/*try:*/ {
+8345: if (flush and (self._impl != NULL) and
if (__pyx_v_flush) {
} else {
__pyx_t_8 = __pyx_v_flush;
goto __pyx_L7_bool_binop_done;
}
__pyx_t_9 = (__pyx_v_self->_impl != NULL);
if (__pyx_t_9) {
} else {
__pyx_t_8 = __pyx_t_9;
goto __pyx_L7_bool_binop_done;
}
/* … */
if (__pyx_t_8) {
/* … */
}
}
+8346: (not line_sender_must_close(self._impl))):
__pyx_t_9 = (!line_sender_must_close(__pyx_v_self->_impl));
__pyx_t_8 = __pyx_t_9;
__pyx_L7_bool_binop_done:;
+8347: self.flush(None, True)
__pyx_t_10.__pyx_n = 2;
__pyx_t_10.buffer = ((struct __pyx_obj_7questdb_7_client_Buffer *)Py_None);
__pyx_t_10.clear = 1;
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_Sender *)__pyx_v_self->__pyx_vtab)->flush(__pyx_v_self, 0, &__pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8347, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+8348: if _is_qwp_ws_protocol(self._c_protocol):
__pyx_t_8 = __pyx_f_7questdb_7_client__is_qwp_ws_protocol(__pyx_v_self->_c_protocol); if (unlikely(__pyx_t_8 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8348, __pyx_L4_error) if (__pyx_t_8) { /* … */ }
+8349: self.close_drain()
__pyx_t_2 = ((PyObject *)__pyx_v_self);
__Pyx_INCREF(__pyx_t_2);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close_drain, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8349, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8350: finally:
+8351: self._close()
/*finally:*/ {
/*normal exit:*/{
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_Sender *)__pyx_v_self->__pyx_vtab)->_close(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8351, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L5;
}
__pyx_L4_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
__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;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
if ( unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_17);
__Pyx_XGOTREF(__pyx_t_18);
__Pyx_XGOTREF(__pyx_t_19);
__pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
{
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_Sender *)__pyx_v_self->__pyx_vtab)->_close(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8351, __pyx_L12_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
__pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
__pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
goto __pyx_L1_error;
__pyx_L12_error:;
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
goto __pyx_L1_error;
}
__pyx_L5:;
}
8352:
+8353: def __exit__(self, exc_type, _exc_val, _exc_tb):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_6Sender_47__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*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_6Sender_46__exit__, "\n Flush pending and disconnect at the end of a ``with`` block.\n\n If the ``with`` block raises an exception, any pending data will\n *NOT* be flushed.\n\n This is implemented by calling :func:`Sender.close`.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_6Sender_47__exit__ = {"__exit__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_6Sender_47__exit__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6Sender_46__exit__}; static PyObject *__pyx_pw_7questdb_7_client_6Sender_47__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 ) { PyObject *__pyx_v_exc_type = 0; CYTHON_UNUSED PyObject *__pyx_v__exc_val = 0; CYTHON_UNUSED PyObject *__pyx_v__exc_tb = 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_val_2,&__pyx_mstate_global->__pyx_n_u_exc_tb_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(0, 8353, __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(0, 8353, __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(0, 8353, __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(0, 8353, __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(0, 8353, __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(0, 8353, __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(0, 8353, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8353, __pyx_L3_error) values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 8353, __pyx_L3_error) } __pyx_v_exc_type = values[0]; __pyx_v__exc_val = values[1]; __pyx_v__exc_tb = values[2]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 8353, __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.Sender.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_6Sender_46__exit__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self), __pyx_v_exc_type, __pyx_v__exc_val, __pyx_v__exc_tb); 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_6Sender_46__exit__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self, PyObject *__pyx_v_exc_type, CYTHON_UNUSED PyObject *__pyx_v__exc_val, CYTHON_UNUSED PyObject *__pyx_v__exc_tb) { 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_AddTraceback("questdb._client.Sender.__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_6Sender_47__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Sender___exit, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[115])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8353, __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_Sender, __pyx_mstate_global->__pyx_n_u_exit, __pyx_t_18) < (0)) __PYX_ERR(0, 8353, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
8354: """
8355: Flush pending and disconnect at the end of a ``with`` block.
8356:
8357: If the ``with`` block raises an exception, any pending data will
8358: *NOT* be flushed.
8359:
8360: This is implemented by calling :func:`Sender.close`.
8361: """
+8362: self.close(not exc_type)
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_exc_type); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8362, __pyx_L1_error) __pyx_t_3.__pyx_n = 1; __pyx_t_3.flush = (!__pyx_t_1); __pyx_t_2 = ((struct __pyx_vtabstruct_7questdb_7_client_Sender *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0, &__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8363:
+8364: def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_7questdb_7_client_6Sender_49__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7questdb_7_client_6Sender_49__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_6Sender_48__dealloc__(((struct __pyx_obj_7questdb_7_client_Sender *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
}
static void __pyx_pf_7questdb_7_client_6Sender_48__dealloc__(struct __pyx_obj_7questdb_7_client_Sender *__pyx_v_self) {
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_WriteUnraisable("questdb._client.Sender.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_RefNannyFinishContext();
}
+8365: self._close()
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_Sender *)__pyx_v_self->__pyx_vtab)->_close(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8365, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+8366: free(self._last_flush_ms)
free(__pyx_v_self->_last_flush_ms);
8367:
8368:
+8369: @cython.no_gc_clear
struct __pyx_vtabstruct_7questdb_7_client_PooledSender {
void (*_attach)(struct __pyx_obj_7questdb_7_client_PooledSender *, struct __pyx_obj_7questdb_7_client_QuestDB *, struct questdb_db *, struct qwp_sender *, struct __pyx_obj_7questdb_7_client_Buffer *);
__pyx_t_7questdb_7_client_void_int (*_check_open)(struct __pyx_obj_7questdb_7_client_PooledSender *, PyObject *);
int (*_should_auto_flush_locked)(struct __pyx_obj_7questdb_7_client_PooledSender *);
__pyx_t_7questdb_7_client_void_int (*_wait_locked)(struct __pyx_obj_7questdb_7_client_PooledSender *, uint64_t);
__pyx_t_7questdb_7_client_void_int (*_flush_locked)(struct __pyx_obj_7questdb_7_client_PooledSender *, int);
void (*_release_locked)(struct __pyx_obj_7questdb_7_client_PooledSender *);
};
static struct __pyx_vtabstruct_7questdb_7_client_PooledSender *__pyx_vtabptr_7questdb_7_client_PooledSender;
8370: cdef class PooledSender:
8371: """
8372: A row-building sender borrowed from a :class:`QuestDB` pool.
8373:
8374: Obtain a lease with :meth:`QuestDB.sender`; ``close()`` returns the
8375: native sender to the pool. Rows publish into an ordered,
8376: store-and-forward-covered QWP stream over one pooled connection.
8377:
8378: Rows go through ``row()``, ``dataframe()``, ``flush()``, ``wait()``
8379: and ``close()``; ``len(sender)`` is the number of buffered rows.
8380: Frame-level delivery tracking is available through
8381: :meth:`flush_and_get_fsn`, :meth:`flush_and_keep_and_get_fsn`,
8382: :meth:`published_fsn`, :meth:`acked_fsn` and
8383: :meth:`await_acked_fsn`, and per-lease server diagnostics through
8384: :meth:`poll_error` and :meth:`error_events_dropped`. Prefer
8385: :meth:`QuestDB.dataframe` for bulk loads; the lease's own
8386: ``dataframe()`` is a convenience that routes to the same direct
8387: columnar path. Row auto-flush is enabled by default at 1,000 rows, 100
8388: milliseconds, or a cap-derived byte threshold, and can be configured
8389: through the parent handle's connection settings.
8390: """
8391: cdef qwp_sender* _qwp
8392: cdef questdb_db* _db
8393: cdef QuestDB _handle
8394: cdef Buffer _buffer
8395: cdef object _lock
8396: cdef int64_t _batch_started_ms
8397:
+8398: def __cinit__(self):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_12PooledSender_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7questdb_7_client_12PooledSender_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_12PooledSender___cinit__(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_12PooledSender___cinit__(struct __pyx_obj_7questdb_7_client_PooledSender *__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.PooledSender.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+8399: self._qwp = NULL
__pyx_v_self->_qwp = NULL;
+8400: self._db = NULL
__pyx_v_self->_db = NULL;
+8401: self._handle = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->_handle); __Pyx_DECREF((PyObject *)__pyx_v_self->_handle); __pyx_v_self->_handle = ((struct __pyx_obj_7questdb_7_client_QuestDB *)Py_None);
+8402: self._buffer = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->_buffer); __Pyx_DECREF((PyObject *)__pyx_v_self->_buffer); __pyx_v_self->_buffer = ((struct __pyx_obj_7questdb_7_client_Buffer *)Py_None);
+8403: self._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(0, 8403, __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(0, 8403, __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(0, 8403, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_lock); __Pyx_DECREF(__pyx_v_self->_lock); __pyx_v_self->_lock = __pyx_t_1; __pyx_t_1 = 0;
+8404: self._batch_started_ms = 0
__pyx_v_self->_batch_started_ms = 0;
8405:
+8406: cdef void _attach(
static void __pyx_f_7questdb_7_client_12PooledSender__attach(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self, struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_handle, struct questdb_db *__pyx_v_db, struct qwp_sender *__pyx_v_sender, struct __pyx_obj_7questdb_7_client_Buffer *__pyx_v_buffer) {
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
}
8407: self,
8408: QuestDB handle,
8409: questdb_db* db,
8410: qwp_sender* sender,
8411: Buffer buffer) noexcept:
+8412: self._handle = handle
__Pyx_INCREF((PyObject *)__pyx_v_handle); __Pyx_GIVEREF((PyObject *)__pyx_v_handle); __Pyx_GOTREF((PyObject *)__pyx_v_self->_handle); __Pyx_DECREF((PyObject *)__pyx_v_self->_handle); __pyx_v_self->_handle = __pyx_v_handle;
+8413: self._db = db
__pyx_v_self->_db = __pyx_v_db;
+8414: self._qwp = sender
__pyx_v_self->_qwp = __pyx_v_sender;
+8415: self._buffer = buffer
__Pyx_INCREF((PyObject *)__pyx_v_buffer); __Pyx_GIVEREF((PyObject *)__pyx_v_buffer); __Pyx_GOTREF((PyObject *)__pyx_v_self->_buffer); __Pyx_DECREF((PyObject *)__pyx_v_self->_buffer); __pyx_v_self->_buffer = __pyx_v_buffer;
+8416: self._batch_started_ms = 0
__pyx_v_self->_batch_started_ms = 0;
8417:
+8418: cdef void_int _check_open(self, str method) except -1:
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_12PooledSender__check_open(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self, PyObject *__pyx_v_method) {
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
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_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client.PooledSender._check_open", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+8419: if self._qwp == NULL:
__pyx_t_1 = (__pyx_v_self->_qwp == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+8420: 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(0, 8420, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+8421: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8421, __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(0, 8421, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+8422: f"{method}() can't be called: Sender is closed.")
__pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_method); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_can_t_be_called_Sender_is_close); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8422, __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_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_8 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_t_7}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__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_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8420, __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(0, 8420, __pyx_L1_error)
8423:
+8424: cdef bint _should_auto_flush_locked(self) except -1:
static int __pyx_f_7questdb_7_client_12PooledSender__should_auto_flush_locked(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self) {
struct __pyx_t_7questdb_7_client_auto_flush_mode_t *__pyx_v_mode;
size_t __pyx_v_row_count;
size_t __pyx_v_buffer_size;
size_t __pyx_v_hard_cap;
size_t __pyx_v_soft_cap;
size_t __pyx_v_byte_limit;
bool __pyx_v_server_cap_known;
struct line_sender_error *__pyx_v_err;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client.PooledSender._should_auto_flush_locked", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+8425: cdef auto_flush_mode_t* mode = &self._handle._auto_flush_mode
__pyx_v_mode = (&__pyx_v_self->_handle->_auto_flush_mode);
8426: cdef size_t row_count
8427: cdef size_t buffer_size
+8428: cdef size_t hard_cap = 0
__pyx_v_hard_cap = 0;
+8429: cdef size_t soft_cap = 0
__pyx_v_soft_cap = 0;
+8430: cdef size_t byte_limit = 0
__pyx_v_byte_limit = 0;
+8431: cdef cbool server_cap_known = False
__pyx_v_server_cap_known = 0;
+8432: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
8433:
+8434: if not mode.enabled:
__pyx_t_1 = (!__pyx_v_mode->enabled);
if (__pyx_t_1) {
/* … */
}
+8435: return False
__pyx_r = 0;
goto __pyx_L0;
8436:
+8437: row_count = line_sender_buffer_row_count(self._buffer._impl)
__pyx_v_row_count = line_sender_buffer_row_count(__pyx_v_self->_buffer->_impl);
+8438: if mode.row_count != -1 and row_count >= <size_t>mode.row_count:
__pyx_t_2 = (__pyx_v_mode->row_count != -1L);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L5_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_row_count >= ((size_t)__pyx_v_mode->row_count));
__pyx_t_1 = __pyx_t_2;
__pyx_L5_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+8439: return True
__pyx_r = 1;
goto __pyx_L0;
8440:
+8441: if mode.byte_count != -1:
__pyx_t_1 = (__pyx_v_mode->byte_count != -1L);
if (__pyx_t_1) {
/* … */
}
+8442: if not qwp_sender_effective_frame_cap(
__pyx_t_1 = (!qwp_sender_effective_frame_cap(__pyx_v_self->_qwp, (&__pyx_v_hard_cap), (&__pyx_v_server_cap_known), (&__pyx_v_err)));
if (unlikely(__pyx_t_1)) {
/* … */
}
8443: self._qwp, &hard_cap, &server_cap_known, &err):
+8444: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8444, __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(0, 8444, __pyx_L1_error)
8445:
8446: # floor(hard_cap * 0.9) without overflowing size_t.
8447: soft_cap = ((hard_cap // 10) * 9
+8448: + ((hard_cap % 10) * 9) // 10)
__pyx_v_soft_cap = (((__pyx_v_hard_cap / 10) * 9) + (((__pyx_v_hard_cap % 10) * 9) / 10));
+8449: if self._handle._auto_flush_bytes_dynamic:
if (__pyx_v_self->_handle->_auto_flush_bytes_dynamic) {
/* … */
goto __pyx_L9;
}
+8450: byte_limit = soft_cap
__pyx_v_byte_limit = __pyx_v_soft_cap;
+8451: if not server_cap_known and byte_limit > 8 * 1024 * 1024:
__pyx_t_2 = (!(__pyx_v_server_cap_known != 0));
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L11_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_byte_limit > 0x800000);
__pyx_t_1 = __pyx_t_2;
__pyx_L11_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+8452: byte_limit = 8 * 1024 * 1024
__pyx_v_byte_limit = 0x800000;
8453: else:
+8454: byte_limit = <size_t>mode.byte_count
/*else*/ {
__pyx_v_byte_limit = ((size_t)__pyx_v_mode->byte_count);
+8455: if soft_cap < byte_limit:
__pyx_t_1 = (__pyx_v_soft_cap < __pyx_v_byte_limit);
if (__pyx_t_1) {
/* … */
}
}
__pyx_L9:;
+8456: byte_limit = soft_cap
__pyx_v_byte_limit = __pyx_v_soft_cap;
8457:
+8458: buffer_size = line_sender_buffer_size(self._buffer._impl)
__pyx_v_buffer_size = line_sender_buffer_size(__pyx_v_self->_buffer->_impl);
+8459: if buffer_size >= byte_limit:
__pyx_t_1 = (__pyx_v_buffer_size >= __pyx_v_byte_limit);
if (__pyx_t_1) {
/* … */
}
+8460: return True
__pyx_r = 1;
goto __pyx_L0;
8461:
+8462: if mode.interval != -1 and (
__pyx_t_2 = (__pyx_v_mode->interval != -1L);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L16_bool_binop_done;
}
/* … */
if (__pyx_t_1) {
/* … */
}
8463: (line_sender_now_micros() // 1000)
+8464: - self._batch_started_ms) >= mode.interval:
__pyx_t_2 = ((__Pyx_div_int64_t(line_sender_now_micros(), 0x3E8, 1) - __pyx_v_self->_batch_started_ms) >= __pyx_v_mode->interval); __pyx_t_1 = __pyx_t_2; __pyx_L16_bool_binop_done:;
+8465: return True
__pyx_r = 1;
goto __pyx_L0;
8466:
+8467: return False
__pyx_r = 0; goto __pyx_L0;
8468:
+8469: cdef void_int _wait_locked(self, uint64_t timeout_millis) except -1:
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_12PooledSender__wait_locked(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self, uint64_t __pyx_v_timeout_millis) {
struct line_sender_error *__pyx_v_err;
PyThreadState *__pyx_v_gs;
int __pyx_v_ok;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.PooledSender._wait_locked", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+8470: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+8471: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+8472: cdef bint ok = False
__pyx_v_ok = 0;
+8473: _ensure_doesnt_have_gil(&gs)
__pyx_t_1 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8473, __pyx_L1_error)
+8474: ok = qwp_sender_wait(
__pyx_v_ok = qwp_sender_wait(__pyx_v_self->_qwp, qwpws_ack_level_ok, __pyx_v_timeout_millis, (&__pyx_v_err));
8475: self._qwp,
8476: qwpws_ack_level.qwpws_ack_level_ok,
8477: timeout_millis,
8478: &err)
+8479: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8479, __pyx_L1_error)
+8480: if not ok:
__pyx_t_1 = (!__pyx_v_ok);
if (unlikely(__pyx_t_1)) {
/* … */
}
+8481: raise 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(0, 8481, __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(0, 8481, __pyx_L1_error)
8482:
+8483: cdef void_int _flush_locked(self, bint wait) except -1:
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_12PooledSender__flush_locked(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self, int __pyx_v_wait) {
struct line_sender_error *__pyx_v_err;
PyThreadState *__pyx_v_gs;
int __pyx_v_ok;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client.PooledSender._flush_locked", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+8484: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+8485: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+8486: cdef bint ok = False
__pyx_v_ok = 0;
+8487: self._check_open('flush')
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_flush); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8487, __pyx_L1_error)
+8488: if line_sender_buffer_row_count(self._buffer._impl) == 0:
__pyx_t_2 = (line_sender_buffer_row_count(__pyx_v_self->_buffer->_impl) == 0);
if (__pyx_t_2) {
/* … */
}
+8489: self._batch_started_ms = 0
__pyx_v_self->_batch_started_ms = 0;
+8490: if wait:
if (__pyx_v_wait) {
/* … */
}
+8491: self._wait_locked(0)
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_wait_locked(__pyx_v_self, 0); if (unlikely(__pyx_t_1 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8491, __pyx_L1_error)
+8492: return 0
__pyx_r = 0;
goto __pyx_L0;
+8493: _ensure_doesnt_have_gil(&gs)
__pyx_t_2 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8493, __pyx_L1_error)
+8494: if wait:
if (__pyx_v_wait) {
/* … */
goto __pyx_L5;
}
+8495: ok = qwp_sender_flush_buffer_and_wait(
__pyx_v_ok = qwp_sender_flush_buffer_and_wait(__pyx_v_self->_qwp, __pyx_v_self->_buffer->_impl, qwpws_ack_level_ok, (&__pyx_v_err));
8496: self._qwp,
8497: self._buffer._impl,
8498: qwpws_ack_level.qwpws_ack_level_ok,
8499: &err)
8500: else:
+8501: ok = qwp_sender_flush_buffer(
/*else*/ {
/* … */
__pyx_v_ok = qwp_sender_flush_buffer(__pyx_v_self->_qwp, __pyx_v_self->_buffer->_impl, (&__pyx_v_err));
}
__pyx_L5:;
8502: self._qwp, self._buffer._impl, &err)
+8503: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8503, __pyx_L1_error)
+8504: if not ok:
__pyx_t_2 = (!__pyx_v_ok);
if (unlikely(__pyx_t_2)) {
/* … */
}
+8505: raise c_err_to_py(err)
__pyx_t_3 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8505, __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(0, 8505, __pyx_L1_error)
+8506: qdb_pystr_buf_clear(self._buffer._b)
qdb_pystr_buf_clear(__pyx_v_self->_buffer->_b);
+8507: self._batch_started_ms = 0
__pyx_v_self->_batch_started_ms = 0;
8508:
+8509: cdef void _release_locked(self) except *:
static void __pyx_f_7questdb_7_client_12PooledSender__release_locked(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self) {
struct qwp_sender *__pyx_v_sender;
struct questdb_db *__pyx_v_db;
struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_handle = 0;
PyThreadState *__pyx_v_gs;
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client.PooledSender._release_locked", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_handle);
__Pyx_RefNannyFinishContext();
}
+8510: cdef qwp_sender* sender = self._qwp
__pyx_t_1 = __pyx_v_self->_qwp; __pyx_v_sender = __pyx_t_1;
+8511: cdef questdb_db* db = self._db
__pyx_t_2 = __pyx_v_self->_db; __pyx_v_db = __pyx_t_2;
+8512: cdef QuestDB handle = self._handle
__pyx_t_3 = ((PyObject *)__pyx_v_self->_handle);
__Pyx_INCREF(__pyx_t_3);
__pyx_v_handle = ((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_t_3);
__pyx_t_3 = 0;
+8513: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+8514: if sender == NULL:
__pyx_t_4 = (__pyx_v_sender == NULL);
if (__pyx_t_4) {
/* … */
}
+8515: return
goto __pyx_L0;
+8516: self._qwp = NULL
__pyx_v_self->_qwp = NULL;
+8517: self._db = NULL
__pyx_v_self->_db = NULL;
+8518: self._buffer = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->_buffer); __Pyx_DECREF((PyObject *)__pyx_v_self->_buffer); __pyx_v_self->_buffer = ((struct __pyx_obj_7questdb_7_client_Buffer *)Py_None);
+8519: self._handle = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->_handle); __Pyx_DECREF((PyObject *)__pyx_v_self->_handle); __pyx_v_self->_handle = ((struct __pyx_obj_7questdb_7_client_QuestDB *)Py_None);
+8520: _ensure_doesnt_have_gil(&gs)
__pyx_t_4 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_4 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8520, __pyx_L1_error)
+8521: questdb_db_return_sender(db, sender)
questdb_db_return_sender(__pyx_v_db, __pyx_v_sender);
+8522: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8522, __pyx_L1_error)
+8523: if handle is not None:
__pyx_t_4 = (((PyObject *)__pyx_v_handle) != Py_None);
if (__pyx_t_4) {
/* … */
}
+8524: handle._end_db_use()
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_handle->__pyx_vtab)->_end_db_use(__pyx_v_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8524, __pyx_L1_error)
8525:
+8526: def __enter__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_3__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_12PooledSender_3__enter__ = {"__enter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledSender_3__enter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_3__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_12PooledSender_2__enter__(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_12PooledSender_2__enter__(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self) {
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_10);
__Pyx_AddTraceback("questdb._client.PooledSender.__enter__", __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_12PooledSender_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledSender___enter, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[118])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8526, __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_PooledSender, __pyx_mstate_global->__pyx_n_u_enter, __pyx_t_18) < (0)) __PYX_ERR(0, 8526, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+8527: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8527, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8527, __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(0, 8527, __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.PooledSender.__enter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 8527, __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(0, 8527, __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(0, 8527, __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(0, 8527, __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(0, 8527, __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_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[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8527, __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:;
}
+8528: self._check_open('__enter__')
__pyx_t_9 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8528, __pyx_L7_error)
+8529: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
8530:
+8531: def row(
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_5row(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_12PooledSender_4row, "\n Append one row to this sender's QWP buffer.\n\n When pooled auto-flush is enabled on the :class:`QuestDB` handle,\n completing a row that breaches a configured row, byte, or interval\n threshold publishes the buffer without waiting for an acknowledgement.\n Any error raised by that publish propagates from this method.\n If a single row cannot fit in a QWP frame, that row is removed before\n :class:`QuestDBErrorCode.BatchTooLarge` is raised. If a multi-row\n batch exceeds the exact encoded limit despite the byte-size estimate,\n the complete batch remains buffered.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12PooledSender_5row = {"row", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledSender_5row, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12PooledSender_4row}; static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_5row(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_table_name = 0; PyObject *__pyx_v_symbols = 0; PyObject *__pyx_v_columns = 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("row (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_table_name,&__pyx_mstate_global->__pyx_n_u_at,&__pyx_mstate_global->__pyx_n_u_symbols,&__pyx_mstate_global->__pyx_n_u_columns,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(0, 8531, __pyx_L3_error) if (likely(__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(0, 8531, __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, "row", 0) < (0)) __PYX_ERR(0, 8531, __pyx_L3_error) /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_12PooledSender_4row(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self, PyObject *__pyx_v_table_name, PyObject *__pyx_v_symbols, PyObject *__pyx_v_columns, PyObject *__pyx_v_at) { int __pyx_v_starts_batch; int __pyx_v_auto_flush; 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_18); __Pyx_AddTraceback("questdb._client.PooledSender.row", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_exc); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 8531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_table_name, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(0, 8531, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_symbols, __pyx_mstate_global->__pyx_kp_u_Optional_Dict_str_Optional_str) < (0)) __PYX_ERR(0, 8531, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_columns, __pyx_mstate_global->__pyx_kp_u_Optional_Dict_str_Union_None_boo) < (0)) __PYX_ERR(0, 8531, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_at, __pyx_mstate_global->__pyx_kp_u_Union_ServerTimestampType_Timest) < (0)) __PYX_ERR(0, 8531, __pyx_L1_error) __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledSender_5row, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledSender_row, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[119])); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 8531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_13, __pyx_t_18); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_17); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledSender, __pyx_mstate_global->__pyx_n_u_row, __pyx_t_13) < (0)) __PYX_ERR(0, 8531, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
8532: self,
8533: table_name: str,
8534: *,
+8535: symbols: Optional[Dict[str, Optional[str]]] = None,
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_symbols, Py_None) < (0)) __PYX_ERR(0, 8531, __pyx_L1_error)
8536: columns: Optional[Dict[
8537: str,
8538: Union[None, bool, int, float, str, TimestampMicros,
8539: TimestampNanos, datetime.datetime, numpy.ndarray,
+8540: Decimal]]] = None,
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject*)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("row", 1, 1, 1, i); __PYX_ERR(0, 8531, __pyx_L3_error) } } for (Py_ssize_t i = 1; i < 2; i++) { if (unlikely(!values[i])) { __Pyx_RaiseKeywordRequired("row", *(__pyx_pyargnames[i - 0])); __PYX_ERR(0, 8531, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { __Pyx_RaiseKeywordRequired("row", __pyx_mstate_global->__pyx_n_u_at); __PYX_ERR(0, 8531, __pyx_L3_error) } __pyx_v_table_name = ((PyObject*)values[0]); __pyx_v_at = values[1]; __pyx_v_symbols = ((PyObject*)values[2]); __pyx_v_columns = ((PyObject*)values[3]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("row", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 8531, __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.PooledSender.row", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_table_name), (&PyUnicode_Type), 0, "table_name", 2))) __PYX_ERR(0, 8533, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_symbols), (&PyDict_Type), 1, "symbols", 2))) __PYX_ERR(0, 8535, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_columns), (&PyDict_Type), 1, "columns", 2))) __PYX_ERR(0, 8536, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_12PooledSender_4row(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self), __pyx_v_table_name, __pyx_v_symbols, __pyx_v_columns, __pyx_v_at); /* … */ if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_columns, Py_None) < (0)) __PYX_ERR(0, 8531, __pyx_L1_error)
8541: at: Union[ServerTimestampType, TimestampNanos,
8542: datetime.datetime]):
8543: """
8544: Append one row to this sender's QWP buffer.
8545:
8546: When pooled auto-flush is enabled on the :class:`QuestDB` handle,
8547: completing a row that breaches a configured row, byte, or interval
8548: threshold publishes the buffer without waiting for an acknowledgement.
8549: Any error raised by that publish propagates from this method.
8550: If a single row cannot fit in a QWP frame, that row is removed before
8551: :class:`QuestDBErrorCode.BatchTooLarge` is raised. If a multi-row
8552: batch exceeds the exact encoded limit despite the byte-size estimate,
8553: the complete batch remains buffered.
8554: """
8555: cdef bint starts_batch
8556: cdef bint auto_flush
+8557: if at is None:
__pyx_t_1 = (__pyx_v_at == Py_None);
if (unlikely(__pyx_t_1)) {
/* … */
}
+8558: 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(0, 8558, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+8559: QuestDBErrorCode.InvalidTimestamp,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_InvalidTimestamp); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8559, __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_at_must_be_of_type_TimestampNan}; __pyx_t_2 = __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_2)) __PYX_ERR(0, 8558, __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(0, 8558, __pyx_L1_error)
8560: "`at` must be of type TimestampNanos, datetime, or "
8561: "ServerTimestamp")
+8562: with self._lock:
/*with:*/ {
__pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8562, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_4 = NULL;
__pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8562, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(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, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8562, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 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_L13_try_end;
__pyx_L8_error:;
__Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 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_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client.PooledSender.row", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_6, &__pyx_t_4) < 0) __PYX_ERR(0, 8562, __pyx_L10_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_4);
__pyx_t_5 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8562, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_5, NULL);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 8562, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_14);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (__pyx_t_1 < (0)) __PYX_ERR(0, 8562, __pyx_L10_except_error)
__pyx_t_19 = (!__pyx_t_1);
if (unlikely(__pyx_t_19)) {
__Pyx_GIVEREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_6, __pyx_t_4);
__pyx_t_2 = 0; __pyx_t_6 = 0; __pyx_t_4 = 0;
__PYX_ERR(0, 8562, __pyx_L10_except_error)
}
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L9_exception_handled;
}
__pyx_L10_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_L12_try_return:;
__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_L5_return;
__pyx_L9_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_L13_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_8) {
__pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_mstate_global->__pyx_tuple[2], NULL);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8562, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
}
goto __pyx_L7;
}
__pyx_L5_return: {
__pyx_t_11 = __pyx_r;
__pyx_r = 0;
if (__pyx_t_8) {
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_mstate_global->__pyx_tuple[2], NULL);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 8562, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__pyx_r = __pyx_t_11;
__pyx_t_11 = 0;
goto __pyx_L0;
}
__pyx_L7:;
}
goto __pyx_L49;
__pyx_L4_error:;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L1_error;
__pyx_L49:;
}
+8563: self._check_open('row')
__pyx_t_12 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_row); if (unlikely(__pyx_t_12 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8563, __pyx_L8_error)
8564: starts_batch = (
+8565: line_sender_buffer_row_count(self._buffer._impl) == 0)
__pyx_v_starts_batch = (line_sender_buffer_row_count(__pyx_v_self->_buffer->_impl) == 0);
+8566: self._buffer._row(
__pyx_t_13.__pyx_n = 4;
__pyx_t_13.symbols = __pyx_v_symbols;
__pyx_t_13.columns = __pyx_v_columns;
__pyx_t_13.at = __pyx_v_at;
__pyx_t_13.keep_marker = 1;
__pyx_t_12 = ((struct __pyx_vtabstruct_7questdb_7_client_Buffer *)__pyx_v_self->_buffer->__pyx_vtab)->_row(__pyx_v_self->_buffer, 0, __pyx_v_table_name, &__pyx_t_13); if (unlikely(__pyx_t_12 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8566, __pyx_L8_error)
8567: False, table_name, symbols, columns, at, True)
+8568: if starts_batch:
if (__pyx_v_starts_batch) {
/* … */
}
+8569: self._batch_started_ms = line_sender_now_micros() // 1000
__pyx_v_self->_batch_started_ms = __Pyx_div_int64_t(line_sender_now_micros(), 0x3E8, 1);
+8570: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 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_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
__pyx_L17_except_error:;
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
goto __pyx_L8_error;
__pyx_L20_try_end:;
}
+8571: auto_flush = self._should_auto_flush_locked()
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_should_auto_flush_locked(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 8571, __pyx_L15_error)
__pyx_v_auto_flush = __pyx_t_1;
+8572: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client.PooledSender.row", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_6, &__pyx_t_4) < 0) __PYX_ERR(0, 8572, __pyx_L17_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_4);
+8573: self._buffer._clear_marker()
__pyx_t_3 = __pyx_f_7questdb_7_client_6Buffer__clear_marker(__pyx_v_self->_buffer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8573, __pyx_L17_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+8574: raise
__Pyx_GIVEREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_6, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_6 = 0; __pyx_t_4 = 0; __PYX_ERR(0, 8574, __pyx_L17_except_error) }
+8575: if not auto_flush:
__pyx_t_1 = (!__pyx_v_auto_flush);
if (__pyx_t_1) {
/* … */
}
+8576: self._buffer._clear_marker()
__pyx_t_4 = __pyx_f_7questdb_7_client_6Buffer__clear_marker(__pyx_v_self->_buffer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8576, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+8577: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L12_try_return;
+8578: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
goto __pyx_L29_try_end;
__pyx_L24_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_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
__pyx_L26_except_error:;
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_ExceptionReset(__pyx_t_16, __pyx_t_15, __pyx_t_14);
goto __pyx_L8_error;
__pyx_L29_try_end:;
}
+8579: self._flush_locked(False)
__pyx_t_12 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_flush_locked(__pyx_v_self, 0); if (unlikely(__pyx_t_12 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8579, __pyx_L24_error)
+8580: except QuestDBError as exc:
__Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_6, &__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8580, __pyx_L26_except_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_17 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_ErrRestore(__pyx_t_4, __pyx_t_6, __pyx_t_2); __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_t_2 = 0; if (__pyx_t_17) { __Pyx_AddTraceback("questdb._client.PooledSender.row", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_6, &__pyx_t_4) < 0) __PYX_ERR(0, 8580, __pyx_L26_except_error) __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_v_exc = __pyx_t_6; /*try:*/ { /* … */ /*finally:*/ { __pyx_L35_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_18); __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 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_17 = __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_17; __pyx_clineno = __pyx_t_20; __pyx_filename = __pyx_t_21; goto __pyx_L26_except_error; } } }
+8581: if (starts_batch and
if (__pyx_v_starts_batch) {
} else {
__pyx_t_1 = __pyx_v_starts_batch;
goto __pyx_L38_bool_binop_done;
}
/* … */
if (__pyx_t_1) {
/* … */
goto __pyx_L37;
}
+8582: exc.code == QuestDBErrorCode.BatchTooLarge):
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8582, __pyx_L35_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8582, __pyx_L35_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_BatchTooLarge); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8582, __pyx_L35_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_18, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8582, __pyx_L35_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_19 < 0))) __PYX_ERR(0, 8582, __pyx_L35_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_1 = __pyx_t_19; __pyx_L38_bool_binop_done:;
+8583: self._buffer._rewind_to_marker()
__pyx_t_12 = __pyx_f_7questdb_7_client_6Buffer__rewind_to_marker(__pyx_v_self->_buffer); if (unlikely(__pyx_t_12 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8583, __pyx_L35_error)
+8584: self._batch_started_ms = 0
__pyx_v_self->_batch_started_ms = 0;
8585: else:
+8586: self._buffer._clear_marker()
/*else*/ {
__pyx_t_5 = __pyx_f_7questdb_7_client_6Buffer__clear_marker(__pyx_v_self->_buffer); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8586, __pyx_L35_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__pyx_L37:;
+8587: raise
__Pyx_GIVEREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_4); __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_6, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_6 = 0; __pyx_t_4 = 0; __PYX_ERR(0, 8587, __pyx_L35_error) }
+8588: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client.PooledSender.row", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_2) < 0) __PYX_ERR(0, 8588, __pyx_L26_except_error)
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_2);
+8589: self._buffer._clear_marker()
__pyx_t_5 = __pyx_f_7questdb_7_client_6Buffer__clear_marker(__pyx_v_self->_buffer); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8589, __pyx_L26_except_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+8590: raise
__Pyx_GIVEREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_6, __pyx_t_2); __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_t_2 = 0; __PYX_ERR(0, 8590, __pyx_L26_except_error) }
+8591: self._buffer._clear_marker()
__pyx_t_2 = __pyx_f_7questdb_7_client_6Buffer__clear_marker(__pyx_v_self->_buffer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8591, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+8592: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
8593:
+8594: def dataframe(
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_7dataframe(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_12PooledSender_6dataframe, "\n Bulk-load a whole DataFrame over a direct columnar connection\n borrowed from the pool for the duration of this call.\n\n Prefer :meth:`QuestDB.dataframe` \342\200\224 this convenience forwards to the\n same path and is **not** part of this sender's row stream: the frame\n is committed over its own connection and becomes visible to SQL\n immediately, without waiting for rows appended to this sender with\n :meth:`row` to drain. There is therefore **no ordering relationship**\n between ``dataframe()`` and buffered rows \342\200\224 ``dataframe()`` does not\n flush them; publish those with :meth:`flush`.\n\n Arguments mirror :meth:`QuestDB.dataframe`.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12PooledSender_7dataframe = {"dataframe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledSender_7dataframe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12PooledSender_6dataframe}; static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_7dataframe(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_df = 0; PyObject *__pyx_v_table_name = 0; PyObject *__pyx_v_table_name_col = 0; PyObject *__pyx_v_symbols = 0; PyObject *__pyx_v_at = 0; PyObject *__pyx_v_max_rows_per_batch = 0; PyObject *__pyx_v_schema_overrides = 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("dataframe (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_df,&__pyx_mstate_global->__pyx_n_u_at,&__pyx_mstate_global->__pyx_n_u_table_name,&__pyx_mstate_global->__pyx_n_u_table_name_col,&__pyx_mstate_global->__pyx_n_u_symbols,&__pyx_mstate_global->__pyx_n_u_max_rows_per_batch,&__pyx_mstate_global->__pyx_n_u_schema_overrides_2,0}; PyObject* values[7] = {0,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(0, 8594, __pyx_L3_error) if (likely(__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(0, 8594, __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, "dataframe", 0) < (0)) __PYX_ERR(0, 8594, __pyx_L3_error) /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_12PooledSender_6dataframe(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self, PyObject *__pyx_v_df, PyObject *__pyx_v_table_name, PyObject *__pyx_v_table_name_col, PyObject *__pyx_v_symbols, PyObject *__pyx_v_at, PyObject *__pyx_v_max_rows_per_batch, PyObject *__pyx_v_schema_overrides) { struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_handle = 0; 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_10); __Pyx_AddTraceback("questdb._client.PooledSender.dataframe", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_handle); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_13 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 8594, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 8594, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_table_name, __pyx_mstate_global->__pyx_kp_u_Optional_str) < (0)) __PYX_ERR(0, 8594, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_table_name_col, __pyx_mstate_global->__pyx_kp_u_Union_None_int_str) < (0)) __PYX_ERR(0, 8594, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_symbols, __pyx_mstate_global->__pyx_kp_u_Union_str_bool_List_int_List_str) < (0)) __PYX_ERR(0, 8594, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_at, __pyx_mstate_global->__pyx_kp_u_Union_ServerTimestampType_int_st) < (0)) __PYX_ERR(0, 8594, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_max_rows_per_batch, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(0, 8594, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_schema_overrides_2, __pyx_mstate_global->__pyx_kp_u_Optional_Dict_str_object) < (0)) __PYX_ERR(0, 8594, __pyx_L1_error) __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledSender_7dataframe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledSender_dataframe, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[120])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8594, __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_13); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_18, __pyx_t_17); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledSender, __pyx_mstate_global->__pyx_n_u_dataframe, __pyx_t_18) < (0)) __PYX_ERR(0, 8594, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
8595: self,
8596: df,
8597: *,
+8598: table_name: Optional[str] = None,
if (!values[2]) values[2] = __Pyx_NewRef(((PyObject*)Py_None)); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_table_name, Py_None) < (0)) __PYX_ERR(0, 8594, __pyx_L1_error)
+8599: table_name_col: Union[None, int, str] = None,
if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_auto)); if (!values[5]) values[5] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__31); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_table_name_col, Py_None) < (0)) __PYX_ERR(0, 8594, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_symbols, __pyx_mstate_global->__pyx_n_u_auto) < (0)) __PYX_ERR(0, 8594, __pyx_L1_error)
8600: symbols: Union[str, bool, List[int], List[str]] = 'auto',
8601: at: Union[ServerTimestampType, int, str, TimestampNanos,
8602: datetime.datetime],
+8603: max_rows_per_batch: int = DEFAULT_MAX_CHUNK_ROWS,
__Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_DEFAULT_MAX_CHUNK_ROWS); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 8603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); if (__Pyx_PyInt_FromNumber(&__pyx_t_13, NULL, 1) < (0)) __PYX_ERR(0, 8603, __pyx_L1_error) __pyx_mstate_global->__pyx_k__31 = ((PyObject*)__pyx_t_13); __Pyx_GIVEREF(__pyx_t_13); __pyx_t_13 = 0; /* … */ __Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_DEFAULT_MAX_CHUNK_ROWS); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 8603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (__Pyx_PyInt_FromNumber(&__pyx_t_17, NULL, 1) < (0)) __PYX_ERR(0, 8603, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_max_rows_per_batch, __pyx_t_17) < (0)) __PYX_ERR(0, 8594, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+8604: schema_overrides: Optional[Dict[str, object]] = None):
if (!values[6]) values[6] = __Pyx_NewRef(((PyObject*)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("dataframe", 1, 1, 1, i); __PYX_ERR(0, 8594, __pyx_L3_error) } } for (Py_ssize_t i = 1; i < 2; i++) { if (unlikely(!values[i])) { __Pyx_RaiseKeywordRequired("dataframe", *(__pyx_pyargnames[i - 0])); __PYX_ERR(0, 8594, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { __Pyx_RaiseKeywordRequired("dataframe", __pyx_mstate_global->__pyx_n_u_at); __PYX_ERR(0, 8594, __pyx_L3_error) } __pyx_v_df = values[0]; __pyx_v_at = values[1]; __pyx_v_table_name = ((PyObject*)values[2]); __pyx_v_table_name_col = values[3]; __pyx_v_symbols = values[4]; if (__Pyx_PyInt_FromNumber(&values[5], "max_rows_per_batch", 0) < (0)) __PYX_ERR(0, 8603, __pyx_L3_error) __pyx_v_max_rows_per_batch = ((PyObject*)values[5]); __pyx_v_schema_overrides = ((PyObject*)values[6]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("dataframe", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 8594, __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.PooledSender.dataframe", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_table_name), (&PyUnicode_Type), 1, "table_name", 2))) __PYX_ERR(0, 8598, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_max_rows_per_batch), (&PyLong_Type), 0, "max_rows_per_batch", 2))) __PYX_ERR(0, 8603, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema_overrides), (&PyDict_Type), 1, "schema_overrides", 2))) __PYX_ERR(0, 8604, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_12PooledSender_6dataframe(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self), __pyx_v_df, __pyx_v_table_name, __pyx_v_table_name_col, __pyx_v_symbols, __pyx_v_at, __pyx_v_max_rows_per_batch, __pyx_v_schema_overrides); /* … */ if (PyDict_SetItem(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_schema_overrides_2, Py_None) < (0)) __PYX_ERR(0, 8594, __pyx_L1_error)
8605: """
8606: Bulk-load a whole DataFrame over a direct columnar connection
8607: borrowed from the pool for the duration of this call.
8608:
8609: Prefer :meth:`QuestDB.dataframe` — this convenience forwards to the
8610: same path and is **not** part of this sender's row stream: the frame
8611: is committed over its own connection and becomes visible to SQL
8612: immediately, without waiting for rows appended to this sender with
8613: :meth:`row` to drain. There is therefore **no ordering relationship**
8614: between ``dataframe()`` and buffered rows — ``dataframe()`` does not
8615: flush them; publish those with :meth:`flush`.
8616:
8617: Arguments mirror :meth:`QuestDB.dataframe`.
8618: """
8619: cdef QuestDB handle
+8620: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8620, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8620, __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(0, 8620, __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.PooledSender.dataframe", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 8620, __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(0, 8620, __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(0, 8620, __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(0, 8620, __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(0, 8620, __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_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[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8620, __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:;
}
+8621: self._check_open('dataframe')
__pyx_t_9 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dataframe); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8621, __pyx_L7_error)
+8622: handle = self._handle
__pyx_t_2 = ((PyObject *)__pyx_v_self->_handle);
__Pyx_INCREF(__pyx_t_2);
__pyx_v_handle = ((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_t_2);
__pyx_t_2 = 0;
+8623: handle.dataframe(
if (unlikely(!__pyx_v_handle)) { __Pyx_RaiseUnboundLocalError("handle"); __PYX_ERR(0, 8623, __pyx_L1_error) }
__pyx_t_4 = ((PyObject *)__pyx_v_handle);
__Pyx_INCREF(__pyx_t_4);
8624: df,
8625: table_name=table_name,
8626: table_name_col=table_name_col,
8627: symbols=symbols,
8628: at=at,
8629: max_rows_per_batch=max_rows_per_batch,
+8630: schema_overrides=schema_overrides)
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 6 : 0)] = {__pyx_t_4, __pyx_v_df};
__pyx_t_2 = __Pyx_MakeVectorcallBuilderKwds(6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8623, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_table_name, __pyx_v_table_name, __pyx_t_2, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 8623, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_table_name_col, __pyx_v_table_name_col, __pyx_t_2, __pyx_callargs+2, 1) < (0)) __PYX_ERR(0, 8623, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_symbols, __pyx_v_symbols, __pyx_t_2, __pyx_callargs+2, 2) < (0)) __PYX_ERR(0, 8623, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_at, __pyx_v_at, __pyx_t_2, __pyx_callargs+2, 3) < (0)) __PYX_ERR(0, 8623, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_max_rows_per_batch, __pyx_v_max_rows_per_batch, __pyx_t_2, __pyx_callargs+2, 4) < (0)) __PYX_ERR(0, 8623, __pyx_L1_error)
if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_schema_overrides_2, __pyx_v_schema_overrides, __pyx_t_2, __pyx_callargs+2, 5) < (0)) __PYX_ERR(0, 8623, __pyx_L1_error)
__pyx_t_3 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_dataframe, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_2);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8623, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+8631: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
8632:
+8633: def __len__(self):
/* Python wrapper */ static Py_ssize_t __pyx_pw_7questdb_7_client_12PooledSender_9__len__(PyObject *__pyx_v_self); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_12PooledSender_8__len__, "Number of buffered (unpublished) rows."); #if CYTHON_UPDATE_DESCRIPTOR_DOC struct wrapperbase __pyx_wrapperbase_7questdb_7_client_12PooledSender_8__len__; #endif static Py_ssize_t __pyx_pw_7questdb_7_client_12PooledSender_9__len__(PyObject *__pyx_v_self) { CYTHON_UNUSED PyObject *const *__pyx_kwvalues; Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); __pyx_r = __pyx_pf_7questdb_7_client_12PooledSender_8__len__(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static Py_ssize_t __pyx_pf_7questdb_7_client_12PooledSender_8__len__(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self) { Py_ssize_t __pyx_r; /* … */ /* function exit code */ __pyx_r = 0; 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.PooledSender.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; }
8634: """Number of buffered (unpublished) rows."""
+8635: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8635, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8635, __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(0, 8635, __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.PooledSender.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 8635, __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(0, 8635, __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(0, 8635, __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(0, 8635, __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(0, 8635, __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[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8635, __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_14 = __pyx_r;
if (__pyx_t_1) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8635, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_r = __pyx_t_14;
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:;
}
+8636: self._check_open('__len__')
__pyx_t_9 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_len); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8636, __pyx_L7_error)
+8637: return line_sender_buffer_row_count(self._buffer._impl)
__pyx_r = line_sender_buffer_row_count(__pyx_v_self->_buffer->_impl);
goto __pyx_L11_try_return;
8638:
+8639: def flush(self, *, bint wait=False):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_11flush(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_12PooledSender_10flush, "\n Publish and clear buffered rows.\n\n By default this returns after local store-and-forward acceptance.\n Pass ``wait=True`` to wait for the server's OK acknowledgement of\n everything published through this lease. The wait is a pure ack\n barrier: only a terminal connection failure raises. Server\n rejections are delivered to the pool's ``error_handler``\n (default: the ``questdb`` logger) instead; retriable ones are\n replayed by the store-and-forward queue.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12PooledSender_11flush = {"flush", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledSender_11flush, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12PooledSender_10flush}; static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_11flush(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; #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("flush (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,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(0, 8639, __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, "flush", 0) < (0)) __PYX_ERR(0, 8639, __pyx_L3_error) } else if (unlikely(__pyx_nargs != 0)) { goto __pyx_L5_argtuple_error; } else { } if (values[0]) { __pyx_v_wait = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_wait == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8639, __pyx_L3_error) } else { __pyx_v_wait = ((int)0); } } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("flush", 1, 0, 0, __pyx_nargs); __PYX_ERR(0, 8639, __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.PooledSender.flush", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_12PooledSender_10flush(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self), __pyx_v_wait); /* 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_12PooledSender_10flush(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self, int __pyx_v_wait) { 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_10); __Pyx_AddTraceback("questdb._client.PooledSender.flush", __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(0, 8639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_wait, Py_False) < (0)) __PYX_ERR(0, 8639, __pyx_L1_error) __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledSender_11flush, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledSender_flush, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[121])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 8639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_17, __pyx_t_18); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledSender, __pyx_mstate_global->__pyx_n_u_flush, __pyx_t_17) < (0)) __PYX_ERR(0, 8639, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
8640: """
8641: Publish and clear buffered rows.
8642:
8643: By default this returns after local store-and-forward acceptance.
8644: Pass ``wait=True`` to wait for the server's OK acknowledgement of
8645: everything published through this lease. The wait is a pure ack
8646: barrier: only a terminal connection failure raises. Server
8647: rejections are delivered to the pool's ``error_handler``
8648: (default: the ``questdb`` logger) instead; retriable ones are
8649: replayed by the store-and-forward queue.
8650: """
+8651: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8651, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8651, __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(0, 8651, __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.PooledSender.flush", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 8651, __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(0, 8651, __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(0, 8651, __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(0, 8651, __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(0, 8651, __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_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[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8651, __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:;
}
+8652: self._flush_locked(wait)
__pyx_t_9 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_flush_locked(__pyx_v_self, __pyx_v_wait); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8652, __pyx_L7_error)
+8653: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
8654:
+8655: def wait(self, timeout_millis=0):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_13wait(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_12PooledSender_12wait, "\n Wait for everything published through this lease to receive an OK\n ack; returns immediately if this lease published nothing.\n\n The wait is a pure ack barrier: only a terminal connection failure\n raises. Server rejections are delivered to the pool's\n ``error_handler`` (default: the ``questdb`` logger) instead.\n\n ``timeout_millis`` is a no-progress timeout; ``0`` waits indefinitely.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12PooledSender_13wait = {"wait", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledSender_13wait, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12PooledSender_12wait}; static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_13wait(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_millis = 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("wait (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_millis,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(0, 8655, __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(0, 8655, __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, "wait", 0) < (0)) __PYX_ERR(0, 8655, __pyx_L3_error) if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_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(0, 8655, __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_int_0)); } __pyx_v_timeout_millis = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("wait", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 8655, __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.PooledSender.wait", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_12PooledSender_12wait(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self), __pyx_v_timeout_millis); 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_12PooledSender_12wait(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self, PyObject *__pyx_v_timeout_millis) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_14); __Pyx_AddTraceback("questdb._client.PooledSender.wait", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledSender_13wait, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledSender_wait, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[122])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 8655, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_17, __pyx_mstate_global->__pyx_tuple[29]); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledSender, __pyx_mstate_global->__pyx_n_u_wait, __pyx_t_17) < (0)) __PYX_ERR(0, 8655, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
8656: """
8657: Wait for everything published through this lease to receive an OK
8658: ack; returns immediately if this lease published nothing.
8659:
8660: The wait is a pure ack barrier: only a terminal connection failure
8661: raises. Server rejections are delivered to the pool's
8662: ``error_handler`` (default: the ``questdb`` logger) instead.
8663:
8664: ``timeout_millis`` is a no-progress timeout; ``0`` waits indefinitely.
8665: """
+8666: if not isinstance(timeout_millis, int) or isinstance(timeout_millis, bool):
__pyx_t_2 = PyLong_Check(__pyx_v_timeout_millis); __pyx_t_3 = (!__pyx_t_2); if (!__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_timeout_millis, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool); __pyx_t_1 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (unlikely(__pyx_t_1)) { /* … */ }
+8667: raise TypeError('"timeout_millis" must be a non-negative int.')
__pyx_t_5 = NULL;
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_timeout_millis_must_be_a_non_ne};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8667, __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(0, 8667, __pyx_L1_error)
+8668: if timeout_millis < 0:
__pyx_t_4 = PyObject_RichCompare(__pyx_v_timeout_millis, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8668, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8668, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(__pyx_t_1)) { /* … */ }
+8669: raise ValueError('timeout_millis must be non-negative.')
__pyx_t_5 = NULL;
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_timeout_millis_must_be_non_negat};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8669, __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(0, 8669, __pyx_L1_error)
+8670: with self._lock:
/*with:*/ {
__pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8670, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_5 = NULL;
__pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8670, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_6 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_8))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
assert(__pyx_t_5);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
__pyx_t_6 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8670, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 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_L16_try_end;
__pyx_L11_error:;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client.PooledSender.wait", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_5) < 0) __PYX_ERR(0, 8670, __pyx_L13_except_error)
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_8);
__Pyx_XGOTREF(__pyx_t_5);
__pyx_t_14 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 8670, __pyx_L13_except_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_14, NULL);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 8670, __pyx_L13_except_error)
__Pyx_GOTREF(__pyx_t_15);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_15);
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
if (__pyx_t_1 < (0)) __PYX_ERR(0, 8670, __pyx_L13_except_error)
__pyx_t_3 = (!__pyx_t_1);
if (unlikely(__pyx_t_3)) {
__Pyx_GIVEREF(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_8, __pyx_t_5);
__pyx_t_4 = 0; __pyx_t_8 = 0; __pyx_t_5 = 0;
__PYX_ERR(0, 8670, __pyx_L13_except_error)
}
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L12_exception_handled;
}
__pyx_L13_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_L12_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_L16_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_7) {
__pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[2], NULL);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8670, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
}
goto __pyx_L10;
}
__pyx_L10:;
}
goto __pyx_L20;
__pyx_L7_error:;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L1_error;
__pyx_L20:;
}
+8671: self._check_open('wait')
__pyx_t_12 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_wait); if (unlikely(__pyx_t_12 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8671, __pyx_L11_error)
+8672: self._wait_locked(<uint64_t>timeout_millis)
__pyx_t_13 = __Pyx_PyLong_As_uint64_t(__pyx_v_timeout_millis); if (unlikely((__pyx_t_13 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8672, __pyx_L11_error) __pyx_t_12 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_wait_locked(__pyx_v_self, ((uint64_t)__pyx_t_13)); if (unlikely(__pyx_t_12 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8672, __pyx_L11_error)
+8673: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
8674:
+8675: def flush_and_get_fsn(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_15flush_and_get_fsn(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_12PooledSender_14flush_and_get_fsn, "\n Publish and clear buffered rows, returning the frame sequence\n number (FSN) of the published frame, or ``None`` if the buffer was\n empty.\n\n FSNs are watermarks of the lease's pooled connection: use them for\n progress tracking while this lease is held (see\n :meth:`await_acked_fsn`); they are not portable receipts across\n leases, which may borrow different connections. Configure\n ``auto_flush=off`` when this call must publish and identify one whole\n application batch; auto-flush may already have published and cleared\n some or all buffered rows.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12PooledSender_15flush_and_get_fsn = {"flush_and_get_fsn", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledSender_15flush_and_get_fsn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12PooledSender_14flush_and_get_fsn}; static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_15flush_and_get_fsn(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("flush_and_get_fsn (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("flush_and_get_fsn", 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("flush_and_get_fsn", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_12PooledSender_14flush_and_get_fsn(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_12PooledSender_14flush_and_get_fsn(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self) { struct line_sender_error *__pyx_v_err; PyThreadState *__pyx_v_gs; struct line_sender_qwpws_fsn __pyx_v_fsn; int __pyx_v_ok; 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_11); __Pyx_AddTraceback("questdb._client.PooledSender.flush_and_get_fsn", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledSender_15flush_and_get_fsn, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledSender_flush_and_get_fsn, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[123])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 8675, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledSender, __pyx_mstate_global->__pyx_n_u_flush_and_get_fsn, __pyx_t_17) < (0)) __PYX_ERR(0, 8675, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
8676: """
8677: Publish and clear buffered rows, returning the frame sequence
8678: number (FSN) of the published frame, or ``None`` if the buffer was
8679: empty.
8680:
8681: FSNs are watermarks of the lease's pooled connection: use them for
8682: progress tracking while this lease is held (see
8683: :meth:`await_acked_fsn`); they are not portable receipts across
8684: leases, which may borrow different connections. Configure
8685: ``auto_flush=off`` when this call must publish and identify one whole
8686: application batch; auto-flush may already have published and cleared
8687: some or all buffered rows.
8688: """
+8689: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+8690: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
8691: cdef line_sender_qwpws_fsn fsn
+8692: cdef bint ok = False
__pyx_v_ok = 0;
+8693: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8693, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8693, __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(0, 8693, __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.PooledSender.flush_and_get_fsn", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 8693, __pyx_L9_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
__pyx_t_11 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8693, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8693, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_12);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (__pyx_t_10 < (0)) __PYX_ERR(0, 8693, __pyx_L9_except_error)
__pyx_t_13 = (!__pyx_t_10);
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(0, 8693, __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_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[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8693, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
goto __pyx_L6;
}
__pyx_L6:;
}
goto __pyx_L17;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L1_error;
__pyx_L17:;
}
+8694: self._check_open('flush_and_get_fsn')
__pyx_t_9 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_flush_and_get_fsn); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8694, __pyx_L7_error)
+8695: _ensure_doesnt_have_gil(&gs)
__pyx_t_10 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_10 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8695, __pyx_L7_error)
+8696: ok = qwp_sender_flush_buffer_and_get_fsn(
__pyx_v_ok = qwp_sender_flush_buffer_and_get_fsn(__pyx_v_self->_qwp, __pyx_v_self->_buffer->_impl, (&__pyx_v_fsn), (&__pyx_v_err));
8697: self._qwp, self._buffer._impl, &fsn, &err)
+8698: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8698, __pyx_L7_error)
+8699: if not ok:
__pyx_t_10 = (!__pyx_v_ok);
if (unlikely(__pyx_t_10)) {
/* … */
}
+8700: raise 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(0, 8700, __pyx_L7_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(0, 8700, __pyx_L7_error)
+8701: qdb_pystr_buf_clear(self._buffer._b)
qdb_pystr_buf_clear(__pyx_v_self->_buffer->_b);
+8702: self._batch_started_ms = 0
__pyx_v_self->_batch_started_ms = 0;
+8703: return fsn.value if fsn.has_value else None
__Pyx_XDECREF(__pyx_r); __pyx_t_13 = (__pyx_v_fsn.has_value != 0); if (__pyx_t_13) { __pyx_t_4 = __Pyx_PyLong_From_uint64_t(__pyx_v_fsn.value); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; } else { __Pyx_INCREF(Py_None); __pyx_t_3 = Py_None; } __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
8704:
+8705: def flush_and_keep_and_get_fsn(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_17flush_and_keep_and_get_fsn(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_12PooledSender_16flush_and_keep_and_get_fsn, "\n Publish buffered rows without clearing the buffer, returning the\n published frame's FSN, or ``None`` if the buffer was empty.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12PooledSender_17flush_and_keep_and_get_fsn = {"flush_and_keep_and_get_fsn", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledSender_17flush_and_keep_and_get_fsn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12PooledSender_16flush_and_keep_and_get_fsn}; static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_17flush_and_keep_and_get_fsn(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("flush_and_keep_and_get_fsn (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("flush_and_keep_and_get_fsn", 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("flush_and_keep_and_get_fsn", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_12PooledSender_16flush_and_keep_and_get_fsn(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_12PooledSender_16flush_and_keep_and_get_fsn(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self) { struct line_sender_error *__pyx_v_err; PyThreadState *__pyx_v_gs; struct line_sender_qwpws_fsn __pyx_v_fsn; int __pyx_v_ok; 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_11); __Pyx_AddTraceback("questdb._client.PooledSender.flush_and_keep_and_get_fsn", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledSender_17flush_and_keep_and_get_fsn, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledSender_flush_and_keep_and, 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_17)) __PYX_ERR(0, 8705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledSender, __pyx_mstate_global->__pyx_n_u_flush_and_keep_and_get_fsn, __pyx_t_17) < (0)) __PYX_ERR(0, 8705, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
8706: """
8707: Publish buffered rows without clearing the buffer, returning the
8708: published frame's FSN, or ``None`` if the buffer was empty.
8709: """
+8710: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+8711: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
8712: cdef line_sender_qwpws_fsn fsn
+8713: cdef bint ok = False
__pyx_v_ok = 0;
+8714: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8714, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8714, __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(0, 8714, __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.PooledSender.flush_and_keep_and_get_fsn", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 8714, __pyx_L9_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
__pyx_t_11 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8714, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8714, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_12);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (__pyx_t_10 < (0)) __PYX_ERR(0, 8714, __pyx_L9_except_error)
__pyx_t_13 = (!__pyx_t_10);
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(0, 8714, __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_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[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8714, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
goto __pyx_L6;
}
__pyx_L6:;
}
goto __pyx_L18;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L1_error;
__pyx_L18:;
}
+8715: self._check_open('flush_and_keep_and_get_fsn')
__pyx_t_9 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_flush_and_keep_and_get_fsn); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8715, __pyx_L7_error)
+8716: _ensure_doesnt_have_gil(&gs)
__pyx_t_10 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_10 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8716, __pyx_L7_error)
+8717: ok = qwp_sender_flush_buffer_and_keep_and_get_fsn(
__pyx_v_ok = qwp_sender_flush_buffer_and_keep_and_get_fsn(__pyx_v_self->_qwp, __pyx_v_self->_buffer->_impl, (&__pyx_v_fsn), (&__pyx_v_err));
8718: self._qwp, self._buffer._impl, &fsn, &err)
+8719: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8719, __pyx_L7_error)
+8720: if not ok:
__pyx_t_10 = (!__pyx_v_ok);
if (unlikely(__pyx_t_10)) {
/* … */
}
+8721: raise 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(0, 8721, __pyx_L7_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(0, 8721, __pyx_L7_error)
+8722: if fsn.has_value:
__pyx_t_10 = (__pyx_v_fsn.has_value != 0);
if (__pyx_t_10) {
/* … */
}
+8723: self._batch_started_ms = line_sender_now_micros() // 1000
__pyx_v_self->_batch_started_ms = __Pyx_div_int64_t(line_sender_now_micros(), 0x3E8, 1);
+8724: return fsn.value if fsn.has_value else None
__Pyx_XDECREF(__pyx_r); __pyx_t_13 = (__pyx_v_fsn.has_value != 0); if (__pyx_t_13) { __pyx_t_4 = __Pyx_PyLong_From_uint64_t(__pyx_v_fsn.value); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; } else { __Pyx_INCREF(Py_None); __pyx_t_3 = Py_None; } __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
8725:
+8726: def poll_error(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_19poll_error(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_12PooledSender_18poll_error, "\n Poll the next server-rejection diagnostic recorded on the lease's\n connection since this lease was borrowed, as a\n :class:`SenderError`, or ``None`` when none is pending.\n\n The pool's ``error_handler`` independently receives every rejection\n the moment it is recorded; polling here is a per-lease pull\n alternative for code that wants diagnostics inline.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12PooledSender_19poll_error = {"poll_error", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledSender_19poll_error, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12PooledSender_18poll_error}; static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_19poll_error(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("poll_error (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("poll_error", 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("poll_error", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_12PooledSender_18poll_error(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_12PooledSender_18poll_error(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self) { struct line_sender_error *__pyx_v_err; struct line_sender_qwpws_error *__pyx_v_c_error; struct line_sender_qwpws_error_view __pyx_v_view; 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_11); __Pyx_AddTraceback("questdb._client.PooledSender.poll_error", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledSender_19poll_error, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledSender_poll_error, 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_17)) __PYX_ERR(0, 8726, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledSender, __pyx_mstate_global->__pyx_n_u_poll_error, __pyx_t_17) < (0)) __PYX_ERR(0, 8726, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
8727: """
8728: Poll the next server-rejection diagnostic recorded on the lease's
8729: connection since this lease was borrowed, as a
8730: :class:`SenderError`, or ``None`` when none is pending.
8731:
8732: The pool's ``error_handler`` independently receives every rejection
8733: the moment it is recorded; polling here is a per-lease pull
8734: alternative for code that wants diagnostics inline.
8735: """
+8736: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+8737: cdef line_sender_qwpws_error* c_error = NULL
__pyx_v_c_error = NULL;
8738: cdef line_sender_qwpws_error_view view
+8739: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8739, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8739, __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(0, 8739, __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_11); __pyx_t_11 = 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;
/*except:*/ {
__Pyx_AddTraceback("questdb._client.PooledSender.poll_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_11) < 0) __PYX_ERR(0, 8739, __pyx_L9_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_11);
__pyx_t_4 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8739, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_20 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 8739, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_20);
__pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_20);
__Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
if (__pyx_t_10 < (0)) __PYX_ERR(0, 8739, __pyx_L9_except_error)
__pyx_t_21 = (!__pyx_t_10);
if (unlikely(__pyx_t_21)) {
__Pyx_GIVEREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_11);
__pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_11 = 0;
__PYX_ERR(0, 8739, __pyx_L9_except_error)
}
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 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[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8739, __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[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8739, __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_L23;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L1_error;
__pyx_L23:;
}
+8740: self._check_open('poll_error')
__pyx_t_9 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_poll_error); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8740, __pyx_L7_error)
+8741: if not qwp_sender_poll_error(self._qwp, &c_error, &err):
__pyx_t_10 = (!qwp_sender_poll_error(__pyx_v_self->_qwp, (&__pyx_v_c_error), (&__pyx_v_err)));
if (unlikely(__pyx_t_10)) {
/* … */
}
+8742: raise 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(0, 8742, __pyx_L7_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(0, 8742, __pyx_L7_error)
+8743: if c_error == NULL:
__pyx_t_10 = (__pyx_v_c_error == NULL);
if (__pyx_t_10) {
/* … */
}
+8744: return None
__Pyx_XDECREF(__pyx_r); __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L11_try_return;
+8745: try:
/*try:*/ {
+8746: view = line_sender_qwpws_error_get_view(c_error)
__pyx_v_view = line_sender_qwpws_error_get_view(__pyx_v_c_error);
+8747: return _sender_error_from_raw(
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sender_error_from_raw); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8747, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_3);
+8748: c_sender_error_view_to_raw(view))
__pyx_t_11 = __pyx_f_7questdb_7_client_c_sender_error_view_to_raw(__pyx_v_view); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8748, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_5 = 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_5 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_11}; __pyx_t_2 = __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_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8747, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L15_return; }
8749: finally:
+8750: line_sender_qwpws_error_free(c_error)
/*finally:*/ {
__pyx_L16_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 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_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
if ( unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_17);
__Pyx_XGOTREF(__pyx_t_18);
__Pyx_XGOTREF(__pyx_t_19);
__Pyx_XGOTREF(__pyx_t_20);
__pyx_t_12 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
{
line_sender_qwpws_error_free(__pyx_v_c_error);
}
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
__pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
__pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
goto __pyx_L7_error;
}
__pyx_L15_return: {
__pyx_t_20 = __pyx_r;
__pyx_r = 0;
line_sender_qwpws_error_free(__pyx_v_c_error);
__pyx_r = __pyx_t_20;
__pyx_t_20 = 0;
goto __pyx_L11_try_return;
}
}
8751:
+8752: def error_events_dropped(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_21error_events_dropped(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_12PooledSender_20error_events_dropped, "\n Diagnostics dropped from the lease's connection ring\n (``error_inbox_capacity``).\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12PooledSender_21error_events_dropped = {"error_events_dropped", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledSender_21error_events_dropped, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12PooledSender_20error_events_dropped}; static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_21error_events_dropped(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("error_events_dropped (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("error_events_dropped", 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("error_events_dropped", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_12PooledSender_20error_events_dropped(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_12PooledSender_20error_events_dropped(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self) { struct line_sender_error *__pyx_v_err; uint64_t __pyx_v_dropped; 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_11); __Pyx_AddTraceback("questdb._client.PooledSender.error_events_dropped", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledSender_21error_events_dropped, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledSender_error_events_droppe, 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_17)) __PYX_ERR(0, 8752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledSender, __pyx_mstate_global->__pyx_n_u_error_events_dropped, __pyx_t_17) < (0)) __PYX_ERR(0, 8752, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
8753: """
8754: Diagnostics dropped from the lease's connection ring
8755: (``error_inbox_capacity``).
8756: """
+8757: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+8758: cdef uint64_t dropped = 0
__pyx_v_dropped = 0;
+8759: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8759, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8759, __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(0, 8759, __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.PooledSender.error_events_dropped", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 8759, __pyx_L9_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
__pyx_t_11 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8759, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8759, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_12);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (__pyx_t_10 < (0)) __PYX_ERR(0, 8759, __pyx_L9_except_error)
__pyx_t_13 = (!__pyx_t_10);
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(0, 8759, __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_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[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8759, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
goto __pyx_L6;
}
__pyx_L6:;
}
goto __pyx_L17;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L1_error;
__pyx_L17:;
}
+8760: self._check_open('error_events_dropped')
__pyx_t_9 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_error_events_dropped); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8760, __pyx_L7_error)
+8761: if not qwp_sender_error_events_dropped(
__pyx_t_10 = (!qwp_sender_error_events_dropped(__pyx_v_self->_qwp, (&__pyx_v_dropped), (&__pyx_v_err)));
if (unlikely(__pyx_t_10)) {
/* … */
}
8762: self._qwp, &dropped, &err):
+8763: raise 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(0, 8763, __pyx_L7_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(0, 8763, __pyx_L7_error)
+8764: return dropped
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyLong_From_uint64_t(__pyx_v_dropped); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
8765:
+8766: def published_fsn(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_23published_fsn(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_12PooledSender_22published_fsn, "\n Highest FSN published locally on the lease's pooled connection, or\n ``None`` if nothing has been published on it yet.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12PooledSender_23published_fsn = {"published_fsn", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledSender_23published_fsn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12PooledSender_22published_fsn}; static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_23published_fsn(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("published_fsn (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("published_fsn", 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("published_fsn", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_12PooledSender_22published_fsn(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_12PooledSender_22published_fsn(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self) { struct line_sender_error *__pyx_v_err; struct line_sender_qwpws_fsn __pyx_v_fsn; 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_11); __Pyx_AddTraceback("questdb._client.PooledSender.published_fsn", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledSender_23published_fsn, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledSender_published_fsn, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[127])); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 8766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledSender, __pyx_mstate_global->__pyx_n_u_published_fsn, __pyx_t_17) < (0)) __PYX_ERR(0, 8766, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
8767: """
8768: Highest FSN published locally on the lease's pooled connection, or
8769: ``None`` if nothing has been published on it yet.
8770: """
+8771: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
8772: cdef line_sender_qwpws_fsn fsn
+8773: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8773, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8773, __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(0, 8773, __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.PooledSender.published_fsn", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 8773, __pyx_L9_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
__pyx_t_11 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8773, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8773, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_12);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (__pyx_t_10 < (0)) __PYX_ERR(0, 8773, __pyx_L9_except_error)
__pyx_t_13 = (!__pyx_t_10);
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(0, 8773, __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_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[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8773, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
goto __pyx_L6;
}
__pyx_L6:;
}
goto __pyx_L17;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L1_error;
__pyx_L17:;
}
+8774: self._check_open('published_fsn')
__pyx_t_9 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_published_fsn); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8774, __pyx_L7_error)
+8775: if not qwp_sender_published_fsn(self._qwp, &fsn, &err):
__pyx_t_10 = (!qwp_sender_published_fsn(__pyx_v_self->_qwp, (&__pyx_v_fsn), (&__pyx_v_err)));
if (unlikely(__pyx_t_10)) {
/* … */
}
+8776: raise 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(0, 8776, __pyx_L7_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(0, 8776, __pyx_L7_error)
+8777: return fsn.value if fsn.has_value else None
__Pyx_XDECREF(__pyx_r); __pyx_t_13 = (__pyx_v_fsn.has_value != 0); if (__pyx_t_13) { __pyx_t_4 = __Pyx_PyLong_From_uint64_t(__pyx_v_fsn.value); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8777, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; } else { __Pyx_INCREF(Py_None); __pyx_t_3 = Py_None; } __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
8778:
+8779: def acked_fsn(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_25acked_fsn(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_12PooledSender_24acked_fsn, "\n Highest FSN completed on the lease's pooled connection by ACK or\n drop-and-continue rejection, or ``None`` if no frame has completed\n yet. A completed frame is not necessarily applied: a rejected frame\n the queue drops to make progress also advances this watermark.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12PooledSender_25acked_fsn = {"acked_fsn", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledSender_25acked_fsn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12PooledSender_24acked_fsn}; static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_25acked_fsn(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("acked_fsn (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("acked_fsn", 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("acked_fsn", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_12PooledSender_24acked_fsn(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_12PooledSender_24acked_fsn(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self) { struct line_sender_error *__pyx_v_err; struct line_sender_qwpws_fsn __pyx_v_fsn; 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_11); __Pyx_AddTraceback("questdb._client.PooledSender.acked_fsn", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledSender_25acked_fsn, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledSender_acked_fsn, 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_17)) __PYX_ERR(0, 8779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledSender, __pyx_mstate_global->__pyx_n_u_acked_fsn, __pyx_t_17) < (0)) __PYX_ERR(0, 8779, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
8780: """
8781: Highest FSN completed on the lease's pooled connection by ACK or
8782: drop-and-continue rejection, or ``None`` if no frame has completed
8783: yet. A completed frame is not necessarily applied: a rejected frame
8784: the queue drops to make progress also advances this watermark.
8785: """
+8786: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
8787: cdef line_sender_qwpws_fsn fsn
+8788: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8788, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8788, __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(0, 8788, __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.PooledSender.acked_fsn", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 8788, __pyx_L9_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
__pyx_t_11 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8788, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8788, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_12);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (__pyx_t_10 < (0)) __PYX_ERR(0, 8788, __pyx_L9_except_error)
__pyx_t_13 = (!__pyx_t_10);
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(0, 8788, __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_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[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8788, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
goto __pyx_L6;
}
__pyx_L6:;
}
goto __pyx_L17;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L1_error;
__pyx_L17:;
}
+8789: self._check_open('acked_fsn')
__pyx_t_9 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_acked_fsn); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8789, __pyx_L7_error)
+8790: if not qwp_sender_acked_fsn(self._qwp, &fsn, &err):
__pyx_t_10 = (!qwp_sender_acked_fsn(__pyx_v_self->_qwp, (&__pyx_v_fsn), (&__pyx_v_err)));
if (unlikely(__pyx_t_10)) {
/* … */
}
+8791: raise 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(0, 8791, __pyx_L7_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(0, 8791, __pyx_L7_error)
+8792: return fsn.value if fsn.has_value else None
__Pyx_XDECREF(__pyx_r); __pyx_t_13 = (__pyx_v_fsn.has_value != 0); if (__pyx_t_13) { __pyx_t_4 = __Pyx_PyLong_From_uint64_t(__pyx_v_fsn.value); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8792, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; } else { __Pyx_INCREF(Py_None); __pyx_t_3 = Py_None; } __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
8793:
+8794: def await_acked_fsn(self, fsn, timeout_millis=0):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_27await_acked_fsn(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_12PooledSender_26await_acked_fsn, "\n Wait until the acknowledgement watermark reaches ``fsn`` (as\n returned by :meth:`flush_and_get_fsn` on this lease).\n\n Returns ``True`` once ``fsn`` is acknowledged, or ``False`` if the\n no-progress timeout elapsed before ``fsn`` was acknowledged (``0``\n waits indefinitely). Only a terminal connection failure raises.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12PooledSender_27await_acked_fsn = {"await_acked_fsn", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledSender_27await_acked_fsn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12PooledSender_26await_acked_fsn}; static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_27await_acked_fsn(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_fsn = 0; PyObject *__pyx_v_timeout_millis = 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("await_acked_fsn (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_fsn,&__pyx_mstate_global->__pyx_n_u_timeout_millis,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(0, 8794, __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(0, 8794, __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(0, 8794, __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_acked_fsn", 0) < (0)) __PYX_ERR(0, 8794, __pyx_L3_error) if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("await_acked_fsn", 0, 1, 2, i); __PYX_ERR(0, 8794, __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(0, 8794, __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(0, 8794, __pyx_L3_error) break; default: goto __pyx_L5_argtuple_error; } if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0)); } __pyx_v_fsn = values[0]; __pyx_v_timeout_millis = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("await_acked_fsn", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 8794, __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.PooledSender.await_acked_fsn", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_12PooledSender_26await_acked_fsn(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self), __pyx_v_fsn, __pyx_v_timeout_millis); 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_12PooledSender_26await_acked_fsn(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self, PyObject *__pyx_v_fsn, PyObject *__pyx_v_timeout_millis) { struct line_sender_error *__pyx_v_err; PyThreadState *__pyx_v_gs; uint64_t __pyx_v_c_fsn; uint64_t __pyx_v_c_timeout_millis; struct line_sender_qwpws_fsn __pyx_v_acked; int __pyx_v_ok; 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_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_14); __Pyx_AddTraceback("questdb._client.PooledSender.await_acked_fsn", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledSender_27await_acked_fsn, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledSender_await_acked_fsn, 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_17)) __PYX_ERR(0, 8794, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_17, __pyx_mstate_global->__pyx_tuple[29]); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledSender, __pyx_mstate_global->__pyx_n_u_await_acked_fsn, __pyx_t_17) < (0)) __PYX_ERR(0, 8794, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
8795: """
8796: Wait until the acknowledgement watermark reaches ``fsn`` (as
8797: returned by :meth:`flush_and_get_fsn` on this lease).
8798:
8799: Returns ``True`` once ``fsn`` is acknowledged, or ``False`` if the
8800: no-progress timeout elapsed before ``fsn`` was acknowledged (``0``
8801: waits indefinitely). Only a terminal connection failure raises.
8802: """
+8803: cdef line_sender_error* err = NULL
__pyx_v_err = NULL;
+8804: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
8805: cdef uint64_t c_fsn
8806: cdef uint64_t c_timeout_millis
8807: cdef line_sender_qwpws_fsn acked
+8808: cdef bint ok = False
__pyx_v_ok = 0;
+8809: if not isinstance(fsn, int) or isinstance(fsn, bool):
__pyx_t_2 = PyLong_Check(__pyx_v_fsn); __pyx_t_3 = (!__pyx_t_2); if (!__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_fsn, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool); __pyx_t_1 = __pyx_t_3; __pyx_L4_bool_binop_done:; if (unlikely(__pyx_t_1)) { /* … */ }
+8810: raise TypeError('"fsn" must be a non-negative int.')
__pyx_t_5 = NULL;
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_fsn_must_be_a_non_negative_int};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8810, __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(0, 8810, __pyx_L1_error)
+8811: if fsn < 0:
__pyx_t_4 = PyObject_RichCompare(__pyx_v_fsn, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8811, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8811, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(__pyx_t_1)) { /* … */ }
+8812: raise ValueError('"fsn" must be a non-negative int.')
__pyx_t_5 = NULL;
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_fsn_must_be_a_non_negative_int};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8812, __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(0, 8812, __pyx_L1_error)
+8813: if not isinstance(timeout_millis, int) or isinstance(timeout_millis, bool):
__pyx_t_3 = PyLong_Check(__pyx_v_timeout_millis); __pyx_t_2 = (!__pyx_t_3); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L8_bool_binop_done; } __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_timeout_millis, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool); __pyx_t_1 = __pyx_t_2; __pyx_L8_bool_binop_done:; if (unlikely(__pyx_t_1)) { /* … */ }
+8814: raise TypeError('"timeout_millis" must be a non-negative int.')
__pyx_t_5 = NULL;
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_timeout_millis_must_be_a_non_ne};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8814, __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(0, 8814, __pyx_L1_error)
+8815: if timeout_millis < 0:
__pyx_t_4 = PyObject_RichCompare(__pyx_v_timeout_millis, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8815, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8815, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(__pyx_t_1)) { /* … */ }
+8816: raise ValueError('"timeout_millis" must be a non-negative int.')
__pyx_t_5 = NULL;
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_timeout_millis_must_be_a_non_ne};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8816, __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(0, 8816, __pyx_L1_error)
+8817: c_fsn = fsn
__pyx_t_7 = __Pyx_PyLong_As_uint64_t(__pyx_v_fsn); if (unlikely((__pyx_t_7 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8817, __pyx_L1_error) __pyx_v_c_fsn = __pyx_t_7;
+8818: c_timeout_millis = timeout_millis
__pyx_t_7 = __Pyx_PyLong_As_uint64_t(__pyx_v_timeout_millis); if (unlikely((__pyx_t_7 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8818, __pyx_L1_error) __pyx_v_c_timeout_millis = __pyx_t_7;
+8819: with self._lock:
/*with:*/ {
__pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8819, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_5 = NULL;
__pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8819, __pyx_L11_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_6 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_9))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9);
assert(__pyx_t_5);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
__pyx_t_6 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8819, __pyx_L11_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__pyx_L15_error:;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client.PooledSender.await_acked_fsn", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_9) < 0) __PYX_ERR(0, 8819, __pyx_L17_except_error)
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_9);
__pyx_t_14 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_5, __pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 8819, __pyx_L17_except_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_14, NULL);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 8819, __pyx_L17_except_error)
__Pyx_GOTREF(__pyx_t_15);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_15);
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
if (__pyx_t_1 < (0)) __PYX_ERR(0, 8819, __pyx_L17_except_error)
__pyx_t_2 = (!__pyx_t_1);
if (unlikely(__pyx_t_2)) {
__Pyx_GIVEREF(__pyx_t_4);
__Pyx_GIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_5, __pyx_t_9);
__pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_9 = 0;
__PYX_ERR(0, 8819, __pyx_L17_except_error)
}
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
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);
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_8) {
__pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_mstate_global->__pyx_tuple[2], NULL);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8819, __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_8) {
__pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_mstate_global->__pyx_tuple[2], NULL);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8819, __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_L33;
__pyx_L11_error:;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L1_error;
__pyx_L33:;
}
+8820: self._check_open('await_acked_fsn')
__pyx_t_13 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_await_acked_fsn); if (unlikely(__pyx_t_13 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8820, __pyx_L15_error)
+8821: if not qwp_sender_acked_fsn(self._qwp, &acked, &err):
__pyx_t_1 = (!qwp_sender_acked_fsn(__pyx_v_self->_qwp, (&__pyx_v_acked), (&__pyx_v_err)));
if (unlikely(__pyx_t_1)) {
/* … */
}
+8822: raise c_err_to_py(err)
__pyx_t_4 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8822, __pyx_L15_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(0, 8822, __pyx_L15_error)
+8823: if acked.has_value and acked.value >= c_fsn:
__pyx_t_2 = (__pyx_v_acked.has_value != 0);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L23_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_acked.value >= __pyx_v_c_fsn);
__pyx_t_1 = __pyx_t_2;
__pyx_L23_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+8824: return True
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_True); __pyx_r = Py_True; goto __pyx_L19_try_return;
8825: # The barrier drains every frame published so far (a superset
8826: # of ``fsn``); a no-progress expiry surfaces as FailoverRetry.
+8827: _ensure_doesnt_have_gil(&gs)
__pyx_t_1 = __pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8827, __pyx_L15_error)
+8828: ok = qwp_sender_wait(
__pyx_v_ok = qwp_sender_wait(__pyx_v_self->_qwp, qwpws_ack_level_ok, __pyx_v_c_timeout_millis, (&__pyx_v_err));
8829: self._qwp,
8830: qwpws_ack_level.qwpws_ack_level_ok,
8831: c_timeout_millis,
8832: &err)
+8833: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8833, __pyx_L15_error)
+8834: if not ok:
__pyx_t_1 = (!__pyx_v_ok);
if (__pyx_t_1) {
/* … */
}
+8835: if line_sender_error_get_code(err) != \
__pyx_t_1 = (line_sender_error_get_code(__pyx_v_err) != line_sender_error_failover_retry);
if (unlikely(__pyx_t_1)) {
/* … */
}
8836: line_sender_error_failover_retry:
+8837: raise c_err_to_py(err)
__pyx_t_4 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8837, __pyx_L15_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(0, 8837, __pyx_L15_error)
+8838: line_sender_error_free(err)
line_sender_error_free(__pyx_v_err);
+8839: err = NULL
__pyx_v_err = NULL;
8840: # Re-read the watermark: the wait either drained ``fsn`` or
8841: # expired with no progress; the current ack level is the answer.
+8842: if not qwp_sender_acked_fsn(self._qwp, &acked, &err):
__pyx_t_1 = (!qwp_sender_acked_fsn(__pyx_v_self->_qwp, (&__pyx_v_acked), (&__pyx_v_err)));
if (unlikely(__pyx_t_1)) {
/* … */
}
+8843: raise c_err_to_py(err)
__pyx_t_4 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8843, __pyx_L15_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(0, 8843, __pyx_L15_error)
+8844: return bool(acked.has_value and acked.value >= c_fsn)
__Pyx_XDECREF(__pyx_r); __pyx_t_9 = NULL; if (__pyx_v_acked.has_value) { } else { __pyx_t_14 = __Pyx_PyLong_From_bool(__pyx_v_acked.has_value); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 8844, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_5 = __pyx_t_14; __pyx_t_14 = 0; goto __pyx_L28_bool_binop_done; } __pyx_t_1 = (__pyx_v_acked.value >= __pyx_v_c_fsn); __pyx_t_14 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 8844, __pyx_L15_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_5 = __pyx_t_14; __pyx_t_14 = 0; __pyx_L28_bool_binop_done:; __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_5}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8844, __pyx_L15_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } __pyx_r = ((PyObject *)__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L19_try_return;
8845:
+8846: def close(self, flush: bool=True, wait: bool=False):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_29close(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_12PooledSender_28close, "\n Return this sender to its pool. Idempotent.\n\n Pending rows are published by default; delivery is owned by the\n store-and-forward queue, which keeps delivering after the sender\n is returned. ``wait=True`` additionally waits for an OK ack before\n returning the sender to the pool; without it, a later server\n rejection of this lease's rows is reported through the pool's\n ``error_handler`` (default: the ``questdb`` logger).\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12PooledSender_29close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledSender_29close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12PooledSender_28close}; static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_29close(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 ) { PyLongObject *__pyx_v_flush = 0; PyLongObject *__pyx_v_wait = 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_flush,&__pyx_mstate_global->__pyx_n_u_wait,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(0, 8846, __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(0, 8846, __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(0, 8846, __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, "close", 0) < (0)) __PYX_ERR(0, 8846, __pyx_L3_error) if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); } else { switch (__pyx_nargs) { case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8846, __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(0, 8846, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } if (!values[0]) values[0] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_True)); if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((PyLongObject *)Py_False)); } __pyx_v_flush = ((PyLongObject *)values[0]); __pyx_v_wait = ((PyLongObject *)values[1]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("close", 0, 0, 2, __pyx_nargs); __PYX_ERR(0, 8846, __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.PooledSender.close", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_flush), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 0, "flush", 0))) __PYX_ERR(0, 8846, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_wait), __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool, 0, "wait", 0))) __PYX_ERR(0, 8846, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_12PooledSender_28close(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self), __pyx_v_flush, __pyx_v_wait); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_12PooledSender_28close(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self, PyLongObject *__pyx_v_flush, PyLongObject *__pyx_v_wait) { 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_21); __Pyx_AddTraceback("questdb._client.PooledSender.close", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 8846, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_flush, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(0, 8846, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_wait, __pyx_mstate_global->__pyx_n_u_bool) < (0)) __PYX_ERR(0, 8846, __pyx_L1_error) __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledSender_29close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledSender_close, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[130])); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8846, __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[31]); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_18, __pyx_t_17); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledSender, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_18) < (0)) __PYX_ERR(0, 8846, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
8847: """
8848: Return this sender to its pool. Idempotent.
8849:
8850: Pending rows are published by default; delivery is owned by the
8851: store-and-forward queue, which keeps delivering after the sender
8852: is returned. ``wait=True`` additionally waits for an OK ack before
8853: returning the sender to the pool; without it, a later server
8854: rejection of this lease's rows is reported through the pool's
8855: ``error_handler`` (default: the ``questdb`` logger).
8856: """
+8857: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8857, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8857, __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(0, 8857, __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.PooledSender.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 8857, __pyx_L9_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
__pyx_t_21 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_21)) __PYX_ERR(0, 8857, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_21);
__pyx_t_20 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_21, NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 8857, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_20);
__pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_20);
__Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
if (__pyx_t_9 < (0)) __PYX_ERR(0, 8857, __pyx_L9_except_error)
__pyx_t_10 = (!__pyx_t_9);
if (unlikely(__pyx_t_10)) {
__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(0, 8857, __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_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[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8857, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
goto __pyx_L6;
}
__pyx_L6:;
}
goto __pyx_L24;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L1_error;
__pyx_L24:;
}
+8858: try:
/*try:*/ {
+8859: if flush and self._qwp != NULL:
__pyx_t_10 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_flush)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 8859, __pyx_L14_error) if (__pyx_t_10) { } else { __pyx_t_9 = __pyx_t_10; goto __pyx_L17_bool_binop_done; } __pyx_t_10 = (__pyx_v_self->_qwp != NULL); __pyx_t_9 = __pyx_t_10; __pyx_L17_bool_binop_done:; if (__pyx_t_9) { /* … */ } }
+8860: self._flush_locked(wait)
__pyx_t_9 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_wait)); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8860, __pyx_L14_error) __pyx_t_11 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_flush_locked(__pyx_v_self, __pyx_t_9); if (unlikely(__pyx_t_11 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8860, __pyx_L14_error)
8861: finally:
+8862: self._release_locked()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_release_locked(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8862, __pyx_L7_error)
goto __pyx_L15;
}
__pyx_L14_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 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_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
if ( unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_17);
__Pyx_XGOTREF(__pyx_t_18);
__Pyx_XGOTREF(__pyx_t_19);
__Pyx_XGOTREF(__pyx_t_20);
__pyx_t_12 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
{
((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_release_locked(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8862, __pyx_L20_error)
}
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
__pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
__pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
goto __pyx_L7_error;
__pyx_L20_error:;
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
__pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
goto __pyx_L7_error;
}
__pyx_L15:;
}
8863:
+8864: def __exit__(self, exc_type, _exc_val, _exc_tb):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_31__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_12PooledSender_31__exit__ = {"__exit__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledSender_31__exit__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_12PooledSender_31__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
) {
PyObject *__pyx_v_exc_type = 0;
CYTHON_UNUSED PyObject *__pyx_v__exc_val = 0;
CYTHON_UNUSED PyObject *__pyx_v__exc_tb = 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_val_2,&__pyx_mstate_global->__pyx_n_u_exc_tb_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(0, 8864, __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(0, 8864, __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(0, 8864, __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(0, 8864, __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(0, 8864, __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(0, 8864, __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(0, 8864, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8864, __pyx_L3_error)
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 8864, __pyx_L3_error)
}
__pyx_v_exc_type = values[0];
__pyx_v__exc_val = values[1];
__pyx_v__exc_tb = values[2];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 8864, __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.PooledSender.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_12PooledSender_30__exit__(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self), __pyx_v_exc_type, __pyx_v__exc_val, __pyx_v__exc_tb);
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_12PooledSender_30__exit__(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self, PyObject *__pyx_v_exc_type, CYTHON_UNUSED PyObject *__pyx_v__exc_val, CYTHON_UNUSED PyObject *__pyx_v__exc_tb) {
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.PooledSender.__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_12PooledSender_31__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledSender___exit, 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(0, 8864, __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_PooledSender, __pyx_mstate_global->__pyx_n_u_exit, __pyx_t_18) < (0)) __PYX_ERR(0, 8864, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+8865: self.close(exc_type is None, False)
__pyx_t_2 = ((PyObject *)__pyx_v_self); __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = (__pyx_v_exc_type == Py_None); __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_4, Py_False}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (1*__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(0, 8865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8866:
+8867: def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_7questdb_7_client_12PooledSender_33__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7questdb_7_client_12PooledSender_33__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_12PooledSender_32__dealloc__(((struct __pyx_obj_7questdb_7_client_PooledSender *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
}
static void __pyx_pf_7questdb_7_client_12PooledSender_32__dealloc__(struct __pyx_obj_7questdb_7_client_PooledSender *__pyx_v_self) {
/* … */
/* function exit code */
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_10);
__Pyx_WriteUnraisable("questdb._client.PooledSender.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_RefNannyFinishContext();
}
+8868: if self._lock is not None:
__pyx_t_1 = (__pyx_v_self->_lock != Py_None);
if (__pyx_t_1) {
/* … */
}
+8869: with self._lock:
/*with:*/ {
__pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8869, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_4 = NULL;
__pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8869, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(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, NULL};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8869, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__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;
goto __pyx_L13_try_end;
__pyx_L8_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;
/*except:*/ {
__Pyx_AddTraceback("questdb._client.PooledSender.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 8869, __pyx_L10_except_error)
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_4);
__pyx_t_10 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 8869, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8869, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (__pyx_t_1 < (0)) __PYX_ERR(0, 8869, __pyx_L10_except_error)
__pyx_t_12 = (!__pyx_t_1);
if (unlikely(__pyx_t_12)) {
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_5, __pyx_t_4);
__pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0;
__PYX_ERR(0, 8869, __pyx_L10_except_error)
}
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L9_exception_handled;
}
__pyx_L10_except_error:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L1_error;
__pyx_L9_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
__pyx_L13_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_2) {
__pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[2], NULL);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8869, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
goto __pyx_L7;
}
__pyx_L7:;
}
goto __pyx_L17;
__pyx_L4_error:;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
goto __pyx_L1_error;
__pyx_L17:;
}
+8870: self._release_locked()
((struct __pyx_vtabstruct_7questdb_7_client_PooledSender *)__pyx_v_self->__pyx_vtab)->_release_locked(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8870, __pyx_L8_error)
8871:
8872:
+8873: @cython.no_gc_clear
struct __pyx_obj_7questdb_7_client_PooledReader {
PyObject_HEAD
struct __pyx_vtabstruct_7questdb_7_client_PooledReader *__pyx_vtab;
struct __pyx_obj_7questdb_7_client_QuestDB *_handle;
struct __pyx_obj_7questdb_7_client__ReaderHandle *_reader;
struct __pyx_obj_7questdb_7_client__CursorHandle *_last_cursor;
PyObject *_lock;
};
/* … */
struct __pyx_vtabstruct_7questdb_7_client_PooledReader {
void (*_attach)(struct __pyx_obj_7questdb_7_client_PooledReader *, struct __pyx_obj_7questdb_7_client_QuestDB *, struct __pyx_obj_7questdb_7_client__ReaderHandle *);
__pyx_t_7questdb_7_client_void_int (*_check_open)(struct __pyx_obj_7questdb_7_client_PooledReader *, PyObject *);
void (*_release_locked)(struct __pyx_obj_7questdb_7_client_PooledReader *);
};
static struct __pyx_vtabstruct_7questdb_7_client_PooledReader *__pyx_vtabptr_7questdb_7_client_PooledReader;
8874: cdef class PooledReader:
8875: """
8876: A reader lease borrowed from a :class:`QuestDB` pool.
8877:
8878: The read-side twin of :meth:`QuestDB.sender`: obtain a lease with
8879: :meth:`QuestDB.reader`; it holds one pooled reader connection for
8880: its lifetime and runs queries on it sequentially via :meth:`query`.
8881: ``close()`` (or leaving the ``with`` block) releases the
8882: connection: back to the pool if the last query was drained cleanly,
8883: dropped otherwise.
8884:
8885: Queries are strictly sequential — one result at a time. Fully drain
8886: (or ``close()``) each :class:`QueryResult` before calling
8887: :meth:`query` again; running the next query while the previous
8888: result is still open raises ``QuestDBError``. Closing an undrained
8889: result terminates the lease; call ``result.cancel()`` before
8890: ``result.close()`` to preserve it.
8891:
8892: Because every query shares one connection, passing
8893: ``reset_symbol_dict=False`` to follow-up queries keeps the
8894: connection's SYMBOL dictionary warm across them instead of
8895: resetting it per query.
8896:
8897: The lease counts as an active use of the :class:`QuestDB` handle
8898: (``QuestDB.close()`` waits for it) and has thread affinity: use one
8899: lease per thread, on the thread that created it.
8900: """
8901: cdef QuestDB _handle
8902: cdef _ReaderHandle _reader
8903: cdef _CursorHandle _last_cursor
8904: cdef object _lock
8905:
+8906: def __cinit__(self):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_12PooledReader_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7questdb_7_client_12PooledReader_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_12PooledReader___cinit__(((struct __pyx_obj_7questdb_7_client_PooledReader *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_12PooledReader___cinit__(struct __pyx_obj_7questdb_7_client_PooledReader *__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.PooledReader.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+8907: self._handle = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->_handle); __Pyx_DECREF((PyObject *)__pyx_v_self->_handle); __pyx_v_self->_handle = ((struct __pyx_obj_7questdb_7_client_QuestDB *)Py_None);
+8908: self._reader = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->_reader); __Pyx_DECREF((PyObject *)__pyx_v_self->_reader); __pyx_v_self->_reader = ((struct __pyx_obj_7questdb_7_client__ReaderHandle *)Py_None);
+8909: self._last_cursor = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->_last_cursor); __Pyx_DECREF((PyObject *)__pyx_v_self->_last_cursor); __pyx_v_self->_last_cursor = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)Py_None);
+8910: self._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(0, 8910, __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(0, 8910, __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(0, 8910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_lock); __Pyx_DECREF(__pyx_v_self->_lock); __pyx_v_self->_lock = __pyx_t_1; __pyx_t_1 = 0;
8911:
+8912: cdef void _attach(
static void __pyx_f_7questdb_7_client_12PooledReader__attach(struct __pyx_obj_7questdb_7_client_PooledReader *__pyx_v_self, struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_handle, struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_v_reader) {
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
}
8913: self,
8914: QuestDB handle,
8915: _ReaderHandle reader) noexcept:
+8916: self._handle = handle
__Pyx_INCREF((PyObject *)__pyx_v_handle); __Pyx_GIVEREF((PyObject *)__pyx_v_handle); __Pyx_GOTREF((PyObject *)__pyx_v_self->_handle); __Pyx_DECREF((PyObject *)__pyx_v_self->_handle); __pyx_v_self->_handle = __pyx_v_handle;
+8917: self._reader = reader
__Pyx_INCREF((PyObject *)__pyx_v_reader); __Pyx_GIVEREF((PyObject *)__pyx_v_reader); __Pyx_GOTREF((PyObject *)__pyx_v_self->_reader); __Pyx_DECREF((PyObject *)__pyx_v_self->_reader); __pyx_v_self->_reader = __pyx_v_reader;
8918:
+8919: cdef void_int _check_open(self, str method) except -1:
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client_12PooledReader__check_open(struct __pyx_obj_7questdb_7_client_PooledReader *__pyx_v_self, PyObject *__pyx_v_method) {
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
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_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client.PooledReader._check_open", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+8920: if self._reader is None:
__pyx_t_1 = (((PyObject *)__pyx_v_self->_reader) == Py_None);
if (unlikely(__pyx_t_1)) {
/* … */
}
+8921: 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(0, 8921, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+8922: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8922, __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(0, 8922, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+8923: f"{method}() can't be called: the reader lease is closed.")
__pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_method); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8923, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_can_t_be_called_the_reader_leas); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8923, __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_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_8 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_t_7}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__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_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8921, __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(0, 8921, __pyx_L1_error)
8924:
+8925: cdef void _release_locked(self) except *:
static void __pyx_f_7questdb_7_client_12PooledReader__release_locked(struct __pyx_obj_7questdb_7_client_PooledReader *__pyx_v_self) {
struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_v_reader = 0;
struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_last = 0;
struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_handle = 0;
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.PooledReader._release_locked", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_reader);
__Pyx_XDECREF((PyObject *)__pyx_v_last);
__Pyx_XDECREF((PyObject *)__pyx_v_handle);
__Pyx_RefNannyFinishContext();
}
+8926: cdef _ReaderHandle reader = self._reader
__pyx_t_1 = ((PyObject *)__pyx_v_self->_reader);
__Pyx_INCREF(__pyx_t_1);
__pyx_v_reader = ((struct __pyx_obj_7questdb_7_client__ReaderHandle *)__pyx_t_1);
__pyx_t_1 = 0;
+8927: cdef _CursorHandle last = self._last_cursor
__pyx_t_1 = ((PyObject *)__pyx_v_self->_last_cursor);
__Pyx_INCREF(__pyx_t_1);
__pyx_v_last = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1);
__pyx_t_1 = 0;
+8928: cdef QuestDB handle = self._handle
__pyx_t_1 = ((PyObject *)__pyx_v_self->_handle);
__Pyx_INCREF(__pyx_t_1);
__pyx_v_handle = ((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_t_1);
__pyx_t_1 = 0;
+8929: if reader is None:
__pyx_t_2 = (((PyObject *)__pyx_v_reader) == Py_None);
if (__pyx_t_2) {
/* … */
}
+8930: return
goto __pyx_L0;
+8931: self._reader = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->_reader); __Pyx_DECREF((PyObject *)__pyx_v_self->_reader); __pyx_v_self->_reader = ((struct __pyx_obj_7questdb_7_client__ReaderHandle *)Py_None);
+8932: self._last_cursor = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->_last_cursor); __Pyx_DECREF((PyObject *)__pyx_v_self->_last_cursor); __pyx_v_self->_last_cursor = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)Py_None);
+8933: self._handle = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->_handle); __Pyx_DECREF((PyObject *)__pyx_v_self->_handle); __pyx_v_self->_handle = ((struct __pyx_obj_7questdb_7_client_QuestDB *)Py_None);
+8934: if last is not None:
__pyx_t_2 = (((PyObject *)__pyx_v_last) != Py_None);
if (__pyx_t_2) {
/* … */
}
+8935: last._free()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_last->__pyx_vtab)->_free(__pyx_v_last);
+8936: reader._close()
((struct __pyx_vtabstruct_7questdb_7_client__ReaderHandle *)__pyx_v_reader->__pyx_vtab)->_close(__pyx_v_reader);
+8937: if handle is not None:
__pyx_t_2 = (((PyObject *)__pyx_v_handle) != Py_None);
if (__pyx_t_2) {
/* … */
}
+8938: handle._end_db_use()
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_handle->__pyx_vtab)->_end_db_use(__pyx_v_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 8938, __pyx_L1_error)
8939:
+8940: def __enter__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_12PooledReader_3__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_12PooledReader_3__enter__ = {"__enter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledReader_3__enter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_12PooledReader_3__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_12PooledReader_2__enter__(((struct __pyx_obj_7questdb_7_client_PooledReader *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_12PooledReader_2__enter__(struct __pyx_obj_7questdb_7_client_PooledReader *__pyx_v_self) {
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_10);
__Pyx_AddTraceback("questdb._client.PooledReader.__enter__", __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_12PooledReader_3__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledReader___enter, 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(0, 8940, __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_PooledReader, __pyx_mstate_global->__pyx_n_u_enter, __pyx_t_18) < (0)) __PYX_ERR(0, 8940, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+8941: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8941, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8941, __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(0, 8941, __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.PooledReader.__enter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 8941, __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(0, 8941, __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(0, 8941, __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(0, 8941, __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(0, 8941, __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_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[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8941, __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:;
}
+8942: self._check_open('__enter__')
__pyx_t_9 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledReader *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8942, __pyx_L7_error)
+8943: return self
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF((PyObject *)__pyx_v_self); __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0;
8944:
+8945: def query(
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12PooledReader_5query(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_12PooledReader_4query, "\n Execute a SQL query on the lease's connection and return a\n :class:`QueryResult`.\n\n ``sql``, ``binds`` and ``reset_symbol_dict`` behave exactly as\n on :meth:`QuestDB.query`, except the query runs on the reader\n this lease holds instead of a per-call pool borrow. The\n previous query's result must be fully drained (or closed)\n first; ``reset_symbol_dict=False`` reuses the connection's\n SYMBOL dictionary built up by the lease's earlier queries.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12PooledReader_5query = {"query", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledReader_5query, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12PooledReader_4query}; static PyObject *__pyx_pw_7questdb_7_client_12PooledReader_5query(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_sql = 0; PyObject *__pyx_v_binds = 0; int __pyx_v_reset_symbol_dict; #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("query (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_sql,&__pyx_mstate_global->__pyx_n_u_binds,&__pyx_mstate_global->__pyx_n_u_reset_symbol_dict,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(0, 8945, __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(0, 8945, __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(0, 8945, __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, "query", 0) < (0)) __PYX_ERR(0, 8945, __pyx_L3_error) /* … */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_12PooledReader_4query(struct __pyx_obj_7questdb_7_client_PooledReader *__pyx_v_self, PyObject *__pyx_v_sql, PyObject *__pyx_v_binds, int __pyx_v_reset_symbol_dict) { struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_cursor_handle = 0; struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_last = 0; 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_14); __Pyx_AddTraceback("questdb._client.PooledReader.query", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_cursor_handle); __Pyx_XDECREF((PyObject *)__pyx_v_last); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 8945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); /* … */ __pyx_t_17 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 8945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_QueryResult) < (0)) __PYX_ERR(0, 8945, __pyx_L1_error) __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledReader_5query, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledReader_query, 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_13)) __PYX_ERR(0, 8945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_13, __pyx_mstate_global->__pyx_tuple[7]); __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_13, __pyx_t_18); __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_13, __pyx_t_17); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledReader, __pyx_mstate_global->__pyx_n_u_query, __pyx_t_13) < (0)) __PYX_ERR(0, 8945, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
8946: self,
8947: str sql,
+8948: object binds=None,
if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("query", 0, 1, 2, i); __PYX_ERR(0, 8945, __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(0, 8945, __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(0, 8945, __pyx_L3_error) break; default: goto __pyx_L5_argtuple_error; } if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_sql = ((PyObject*)values[0]); __pyx_v_binds = values[1]; if (values[2]) { __pyx_v_reset_symbol_dict = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_reset_symbol_dict == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8950, __pyx_L3_error) } else {
8949: *,
+8950: bint reset_symbol_dict=True) -> QueryResult:
__pyx_v_reset_symbol_dict = ((int)1);
}
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("query", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 8945, __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.PooledReader.query", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sql), (&PyUnicode_Type), 1, "sql", 1))) __PYX_ERR(0, 8947, __pyx_L1_error)
__pyx_r = __pyx_pf_7questdb_7_client_12PooledReader_4query(((struct __pyx_obj_7questdb_7_client_PooledReader *)__pyx_v_self), __pyx_v_sql, __pyx_v_binds, __pyx_v_reset_symbol_dict);
/* … */
if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_reset_symbol_dict, Py_True) < (0)) __PYX_ERR(0, 8945, __pyx_L1_error)
8951: """
8952: Execute a SQL query on the lease's connection and return a
8953: :class:`QueryResult`.
8954:
8955: ``sql``, ``binds`` and ``reset_symbol_dict`` behave exactly as
8956: on :meth:`QuestDB.query`, except the query runs on the reader
8957: this lease holds instead of a per-call pool borrow. The
8958: previous query's result must be fully drained (or closed)
8959: first; ``reset_symbol_dict=False`` reuses the connection's
8960: SYMBOL dictionary built up by the lease's earlier queries.
8961: """
8962: cdef _CursorHandle cursor_handle
8963: cdef _CursorHandle last
+8964: if binds is not None and not isinstance(binds, (list, tuple)):
__pyx_t_2 = (__pyx_v_binds != Py_None);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_3 = PyList_Check(__pyx_v_binds);
if (!__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L6_bool_binop_done;
}
__pyx_t_3 = PyTuple_Check(__pyx_v_binds);
__pyx_t_2 = __pyx_t_3;
__pyx_L6_bool_binop_done:;
__pyx_t_3 = (!__pyx_t_2);
__pyx_t_1 = __pyx_t_3;
__pyx_L4_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
/* … */
}
+8965: raise TypeError(
__pyx_t_5 = NULL;
+8966: '"binds" must be a list or tuple of positional bind '
__pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_binds_must_be_a_list_or_tuple_o, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8966, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __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_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8965, __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(0, 8965, __pyx_L1_error)
+8967: f'parameters (or None), not {_fqn(type(binds))}')
__pyx_t_6 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_binds)))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8967, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyUnicode_Unicode(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8967, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+8968: with self._lock:
/*with:*/ {
__pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8968, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_6 = NULL;
__pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8968, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_8 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(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_8 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __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_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8968, __pyx_L8_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_L17_try_end;
__pyx_L12_error:;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 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;
/*except:*/ {
__Pyx_AddTraceback("questdb._client.PooledReader.query", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_14, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(0, 8968, __pyx_L14_except_error)
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_7);
__pyx_t_6 = PyTuple_Pack(3, __pyx_t_14, __pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8968, __pyx_L14_except_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_6, NULL);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 8968, __pyx_L14_except_error)
__Pyx_GOTREF(__pyx_t_16);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_16);
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
if (__pyx_t_1 < (0)) __PYX_ERR(0, 8968, __pyx_L14_except_error)
__pyx_t_3 = (!__pyx_t_1);
if (unlikely(__pyx_t_3)) {
__Pyx_GIVEREF(__pyx_t_14);
__Pyx_GIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ErrRestoreWithState(__pyx_t_14, __pyx_t_4, __pyx_t_7);
__pyx_t_14 = 0; __pyx_t_4 = 0; __pyx_t_7 = 0;
__PYX_ERR(0, 8968, __pyx_L14_except_error)
}
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L13_exception_handled;
}
__pyx_L14_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_L13_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_L17_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_9) {
__pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_mstate_global->__pyx_tuple[2], NULL);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8968, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
}
goto __pyx_L11;
}
__pyx_L11:;
}
goto __pyx_L24;
__pyx_L8_error:;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L1_error;
__pyx_L24:;
}
+8969: self._check_open('query')
__pyx_t_13 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledReader *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_query); if (unlikely(__pyx_t_13 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 8969, __pyx_L12_error)
+8970: last = self._last_cursor
__pyx_t_4 = ((PyObject *)__pyx_v_self->_last_cursor);
__Pyx_INCREF(__pyx_t_4);
__pyx_v_last = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_4);
__pyx_t_4 = 0;
+8971: if last is not None:
__pyx_t_1 = (((PyObject *)__pyx_v_last) != Py_None);
if (__pyx_t_1) {
/* … */
}
+8972: if last._cursor != NULL:
__pyx_t_1 = (__pyx_v_last->_cursor != NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+8973: 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(0, 8973, __pyx_L12_error)
__Pyx_GOTREF(__pyx_t_6);
+8974: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8974, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 8974, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = 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_8 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_14, __pyx_mstate_global->__pyx_kp_u_the_previous_QueryResult_is_stil}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8973, __pyx_L12_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(0, 8973, __pyx_L12_error)
8975: 'the previous QueryResult is still open: drain '
8976: 'it fully or close() it before running the next '
8977: 'query on this lease.')
+8978: if self._reader._must_close:
if (unlikely(__pyx_v_self->_reader->_must_close)) {
/* … */
}
+8979: raise QuestDBError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 8979, __pyx_L12_error)
__Pyx_GOTREF(__pyx_t_14);
+8980: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8980, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8980, __pyx_L12_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_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[3] = {__pyx_t_6, __pyx_t_7, __pyx_mstate_global->__pyx_kp_u_the_lease_s_connection_is_termin}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_14, __pyx_callargs+__pyx_t_8, (3-__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; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8979, __pyx_L12_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(0, 8979, __pyx_L12_error)
8981: "the lease's connection is terminal: the "
8982: 'previous query was not drained to its clean '
8983: 'end, so its transport was torn down. close() '
8984: 'this lease and obtain a new one with '
8985: 'QuestDB.reader().')
+8986: cursor_handle = _execute_query(
__pyx_t_15.__pyx_n = 1;
__pyx_t_15.reset_symbol_dict = __pyx_v_reset_symbol_dict;
__pyx_t_14 = ((PyObject *)__pyx_f_7questdb_7_client__execute_query(((struct __pyx_obj_7questdb_7_client__ReaderHandle *)__pyx_t_4), __pyx_v_sql, __pyx_v_binds, &__pyx_t_15)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 8986, __pyx_L12_error)
__Pyx_GOTREF(__pyx_t_14);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_v_cursor_handle = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_14);
__pyx_t_14 = 0;
+8987: self._reader, sql, binds, reset_symbol_dict)
__pyx_t_4 = ((PyObject *)__pyx_v_self->_reader);
__Pyx_INCREF(__pyx_t_4);
+8988: cursor_handle._owns_reader = False
__pyx_v_cursor_handle->_owns_reader = 0;
+8989: self._last_cursor = cursor_handle
__Pyx_INCREF((PyObject *)__pyx_v_cursor_handle); __Pyx_GIVEREF((PyObject *)__pyx_v_cursor_handle); __Pyx_GOTREF((PyObject *)__pyx_v_self->_last_cursor); __Pyx_DECREF((PyObject *)__pyx_v_self->_last_cursor); __pyx_v_self->_last_cursor = __pyx_v_cursor_handle;
+8990: return QueryResult(cursor_handle)
__Pyx_XDECREF(__pyx_r); __pyx_t_4 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_QueryResult); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 8990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (unlikely(!__pyx_v_cursor_handle)) { __Pyx_RaiseUnboundLocalError("cursor_handle"); __PYX_ERR(0, 8990, __pyx_L1_error) } __pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_14))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_14); assert(__pyx_t_4); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_14); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_14, __pyx__function); __pyx_t_8 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_v_cursor_handle)}; __pyx_t_7 = __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_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __pyx_r = __pyx_t_7; __pyx_t_7 = 0; goto __pyx_L0;
8991:
+8992: def execute(self, str sql, object binds=None):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12PooledReader_7execute(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_12PooledReader_6execute, "\n Run a statement on the lease's connection and discard whatever\n it returns.\n\n Mirrors :meth:`QuestDB.execute`. The result is drained to its\n clean end, so the lease stays usable for the next call, and the\n connection's SYMBOL dictionary is left untouched \342\200\224 an\n interleaved statement does not invalidate a warm dictionary\n built with ``reset_symbol_dict=False``.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12PooledReader_7execute = {"execute", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledReader_7execute, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12PooledReader_6execute}; static PyObject *__pyx_pw_7questdb_7_client_12PooledReader_7execute(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_sql = 0; PyObject *__pyx_v_binds = 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("execute (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_sql,&__pyx_mstate_global->__pyx_n_u_binds,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(0, 8992, __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(0, 8992, __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(0, 8992, __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, "execute", 0) < (0)) __PYX_ERR(0, 8992, __pyx_L3_error) if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("execute", 0, 1, 2, i); __PYX_ERR(0, 8992, __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(0, 8992, __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(0, 8992, __pyx_L3_error) break; default: goto __pyx_L5_argtuple_error; } if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_sql = ((PyObject*)values[0]); __pyx_v_binds = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("execute", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 8992, __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.PooledReader.execute", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sql), (&PyUnicode_Type), 1, "sql", 1))) __PYX_ERR(0, 8992, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_12PooledReader_6execute(((struct __pyx_obj_7questdb_7_client_PooledReader *)__pyx_v_self), __pyx_v_sql, __pyx_v_binds); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; 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_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_12PooledReader_6execute(struct __pyx_obj_7questdb_7_client_PooledReader *__pyx_v_self, PyObject *__pyx_v_sql, PyObject *__pyx_v_binds) { PyObject *__pyx_v_result = 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_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("questdb._client.PooledReader.execute", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledReader_7execute, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledReader_execute, 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_13)) __PYX_ERR(0, 8992, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_13, __pyx_mstate_global->__pyx_tuple[7]); if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledReader, __pyx_mstate_global->__pyx_n_u_execute, __pyx_t_13) < (0)) __PYX_ERR(0, 8992, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
8993: """
8994: Run a statement on the lease's connection and discard whatever
8995: it returns.
8996:
8997: Mirrors :meth:`QuestDB.execute`. The result is drained to its
8998: clean end, so the lease stays usable for the next call, and the
8999: connection's SYMBOL dictionary is left untouched — an
9000: interleaved statement does not invalidate a warm dictionary
9001: built with ``reset_symbol_dict=False``.
9002: """
+9003: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9003, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9003, __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(0, 9003, __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.PooledReader.execute", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 9003, __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(0, 9003, __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(0, 9003, __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(0, 9003, __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(0, 9003, __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_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[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9003, __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:;
}
+9004: self._check_open('execute')
__pyx_t_9 = ((struct __pyx_vtabstruct_7questdb_7_client_PooledReader *)__pyx_v_self->__pyx_vtab)->_check_open(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_execute); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(0, 9004, __pyx_L7_error)
+9005: result = self.query(sql, binds, reset_symbol_dict=False)
__pyx_t_4 = ((PyObject *)__pyx_v_self); __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; { PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_4, __pyx_v_sql, __pyx_v_binds}; __pyx_t_2 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9005, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_reset_symbol_dict, Py_False, __pyx_t_2, __pyx_callargs+3, 0) < (0)) __PYX_ERR(0, 9005, __pyx_L1_error) __pyx_t_3 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_query, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9005, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_v_result = __pyx_t_3; __pyx_t_3 = 0;
+9006: try:
/*try:*/ {
+9007: result._drain()
__pyx_t_2 = __pyx_v_result;
__Pyx_INCREF(__pyx_t_2);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
__pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_drain, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9007, __pyx_L18_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
9008: finally:
+9009: result.close()
/*finally:*/ {
/*normal exit:*/{
__pyx_t_2 = __pyx_v_result;
__Pyx_INCREF(__pyx_t_2);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
__pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9009, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L19;
}
__pyx_L18_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_1 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_11 = 0; __pyx_t_17 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 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_ExceptionSwap(&__pyx_t_6, &__pyx_t_11, &__pyx_t_17);
if ( unlikely(__Pyx_GetException(&__pyx_t_1, &__pyx_t_8, &__pyx_t_7) < 0)) __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_8, &__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_t_8);
__Pyx_XGOTREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_11);
__Pyx_XGOTREF(__pyx_t_17);
__pyx_t_14 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
{
__pyx_t_2 = __pyx_v_result;
__Pyx_INCREF(__pyx_t_2);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
__pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9009, __pyx_L21_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_11, __pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ErrRestore(__pyx_t_1, __pyx_t_8, __pyx_t_7);
__pyx_t_1 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_11 = 0; __pyx_t_17 = 0;
__pyx_lineno = __pyx_t_14; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
goto __pyx_L1_error;
__pyx_L21_error:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_11, __pyx_t_17);
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_6 = 0; __pyx_t_11 = 0; __pyx_t_17 = 0;
goto __pyx_L1_error;
}
__pyx_L19:;
}
9010:
+9011: def close(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_12PooledReader_9close(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_12PooledReader_8close, "\n Release the lease's reader connection. Idempotent.\n\n A still-open (undrained) last result is freed first, which\n tears down the connection; a cleanly-drained connection is\n returned to the pool, any other is dropped and the pool refills\n on demand.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_12PooledReader_9close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledReader_9close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_12PooledReader_8close}; static PyObject *__pyx_pw_7questdb_7_client_12PooledReader_9close(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("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); if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("close", 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("close", __pyx_kwds); return NULL;} __pyx_r = __pyx_pf_7questdb_7_client_12PooledReader_8close(((struct __pyx_obj_7questdb_7_client_PooledReader *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_12PooledReader_8close(struct __pyx_obj_7questdb_7_client_PooledReader *__pyx_v_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.PooledReader.close", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledReader_9close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledReader_close, 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_13)) __PYX_ERR(0, 9011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13); #endif if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledReader, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_13) < (0)) __PYX_ERR(0, 9011, __pyx_L1_error) __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
9012: """
9013: Release the lease's reader connection. Idempotent.
9014:
9015: A still-open (undrained) last result is freed first, which
9016: tears down the connection; a cleanly-drained connection is
9017: returned to the pool, any other is dropped and the pool refills
9018: on demand.
9019: """
+9020: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9020, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9020, __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(0, 9020, __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.PooledReader.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(0, 9020, __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(0, 9020, __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(0, 9020, __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(0, 9020, __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(0, 9020, __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_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[2], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9020, __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:;
}
+9021: self._release_locked()
((struct __pyx_vtabstruct_7questdb_7_client_PooledReader *)__pyx_v_self->__pyx_vtab)->_release_locked(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 9021, __pyx_L7_error)
9022:
+9023: def __exit__(self, exc_type, _exc_val, _exc_tb):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_12PooledReader_11__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_12PooledReader_11__exit__ = {"__exit__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_12PooledReader_11__exit__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_12PooledReader_11__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_val = 0;
CYTHON_UNUSED PyObject *__pyx_v__exc_tb = 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_val_2,&__pyx_mstate_global->__pyx_n_u_exc_tb_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(0, 9023, __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(0, 9023, __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(0, 9023, __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(0, 9023, __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(0, 9023, __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(0, 9023, __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(0, 9023, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9023, __pyx_L3_error)
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9023, __pyx_L3_error)
}
__pyx_v_exc_type = values[0];
__pyx_v__exc_val = values[1];
__pyx_v__exc_tb = values[2];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 9023, __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.PooledReader.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_12PooledReader_10__exit__(((struct __pyx_obj_7questdb_7_client_PooledReader *)__pyx_v_self), __pyx_v_exc_type, __pyx_v__exc_val, __pyx_v__exc_tb);
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_12PooledReader_10__exit__(struct __pyx_obj_7questdb_7_client_PooledReader *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exc_type, CYTHON_UNUSED PyObject *__pyx_v__exc_val, CYTHON_UNUSED PyObject *__pyx_v__exc_tb) {
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_AddTraceback("questdb._client.PooledReader.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_12PooledReader_11__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PooledReader___exit, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[138])); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 9023, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_13);
#endif
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client_PooledReader, __pyx_mstate_global->__pyx_n_u_exit, __pyx_t_13) < (0)) __PYX_ERR(0, 9023, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+9024: 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(0, 9024, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9025:
+9026: def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_7questdb_7_client_12PooledReader_13__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7questdb_7_client_12PooledReader_13__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_12PooledReader_12__dealloc__(((struct __pyx_obj_7questdb_7_client_PooledReader *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
}
static void __pyx_pf_7questdb_7_client_12PooledReader_12__dealloc__(struct __pyx_obj_7questdb_7_client_PooledReader *__pyx_v_self) {
/* … */
/* function exit code */
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_10);
__Pyx_WriteUnraisable("questdb._client.PooledReader.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_RefNannyFinishContext();
}
+9027: if self._lock is not None:
__pyx_t_1 = (__pyx_v_self->_lock != Py_None);
if (__pyx_t_1) {
/* … */
}
+9028: with self._lock:
/*with:*/ {
__pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9028, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_4 = NULL;
__pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9028, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(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, NULL};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9028, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__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;
goto __pyx_L13_try_end;
__pyx_L8_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;
/*except:*/ {
__Pyx_AddTraceback("questdb._client.PooledReader.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 9028, __pyx_L10_except_error)
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_4);
__pyx_t_10 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9028, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9028, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (__pyx_t_1 < (0)) __PYX_ERR(0, 9028, __pyx_L10_except_error)
__pyx_t_12 = (!__pyx_t_1);
if (unlikely(__pyx_t_12)) {
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_GIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_5, __pyx_t_4);
__pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0;
__PYX_ERR(0, 9028, __pyx_L10_except_error)
}
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L9_exception_handled;
}
__pyx_L10_except_error:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L1_error;
__pyx_L9_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
__pyx_L13_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_2) {
__pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[2], NULL);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9028, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
goto __pyx_L7;
}
__pyx_L7:;
}
goto __pyx_L17;
__pyx_L4_error:;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
goto __pyx_L1_error;
__pyx_L17:;
}
+9029: self._release_locked()
((struct __pyx_vtabstruct_7questdb_7_client_PooledReader *)__pyx_v_self->__pyx_vtab)->_release_locked(__pyx_v_self); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 9029, __pyx_L8_error)