diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 3c92fa51..00000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "async_gaussdb/pgproto"] - path = async_gaussdb/pgproto - url = https://github.com/MagicStack/py-pgproto.git diff --git a/.gitmodules.bak b/.gitmodules.bak new file mode 100644 index 00000000..8e1de421 --- /dev/null +++ b/.gitmodules.bak @@ -0,0 +1,3 @@ +[submodule "async_gaussdb/gaussdbproto"] + path = async_gaussdb/gaussdbproto + url = https://github.com/MagicStack/py-gaussdbproto.git diff --git a/Makefile b/Makefile index 3b66ac9a..1a61dc18 100644 --- a/Makefile +++ b/Makefile @@ -10,9 +10,9 @@ all: compile clean: rm -fr dist/ doc/_build/ - rm -fr async_gaussdb/pgproto/*.c async_gaussdb/pgproto/*.html - rm -fr async_gaussdb/pgproto/codecs/*.html - rm -fr async_gaussdb/pgproto/*.so + rm -fr async_gaussdb/gaussdbproto/*.c async_gaussdb/gaussdbproto/*.html + rm -fr async_gaussdb/gaussdbproto/codecs/*.html + rm -fr async_gaussdb/gaussdbproto/*.so rm -fr async_gaussdb/protocol/*.c async_gaussdb/protocol/*.html rm -fr async_gaussdb/protocol/*.so build *.egg-info rm -fr async_gaussdb/protocol/codecs/*.html diff --git a/async_gaussdb/gaussdbproto/LICENSE b/async_gaussdb/gaussdbproto/LICENSE new file mode 100644 index 00000000..d9313861 --- /dev/null +++ b/async_gaussdb/gaussdbproto/LICENSE @@ -0,0 +1,204 @@ +Copyright (C) 2016-present the asyncpg authors and contributors. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (C) 2016-present the asyncpg authors and contributors + + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/async_gaussdb/gaussdbproto/README.rst b/async_gaussdb/gaussdbproto/README.rst new file mode 100644 index 00000000..1f8404b5 --- /dev/null +++ b/async_gaussdb/gaussdbproto/README.rst @@ -0,0 +1 @@ +Low-level IO utilities for GAUSSDB drivers. diff --git a/async_gaussdb/gaussdbproto/__init__.pxd b/async_gaussdb/gaussdbproto/__init__.pxd new file mode 100644 index 00000000..1df403c7 --- /dev/null +++ b/async_gaussdb/gaussdbproto/__init__.pxd @@ -0,0 +1,5 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 diff --git a/async_gaussdb/gaussdbproto/__init__.py b/async_gaussdb/gaussdbproto/__init__.py new file mode 100644 index 00000000..1df403c7 --- /dev/null +++ b/async_gaussdb/gaussdbproto/__init__.py @@ -0,0 +1,5 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 diff --git a/async_gaussdb/gaussdbproto/buffer.pxd b/async_gaussdb/gaussdbproto/buffer.pxd new file mode 100644 index 00000000..c2d4c6e9 --- /dev/null +++ b/async_gaussdb/gaussdbproto/buffer.pxd @@ -0,0 +1,136 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef class WriteBuffer: + cdef: + # Preallocated small buffer + bint _smallbuf_inuse + char _smallbuf[_BUFFER_INITIAL_SIZE] + + char *_buf + + # Allocated size + ssize_t _size + + # Length of data in the buffer + ssize_t _length + + # Number of memoryviews attached to the buffer + int _view_count + + # True is start_message was used + bint _message_mode + + cdef inline len(self): + return self._length + + cdef inline write_len_prefixed_utf8(self, str s): + return self.write_len_prefixed_bytes(s.encode('utf-8')) + + cdef inline _check_readonly(self) + cdef inline _ensure_alloced(self, ssize_t extra_length) + cdef _reallocate(self, ssize_t new_size) + cdef inline reset(self) + cdef inline start_message(self, char type) + cdef inline end_message(self) + cdef write_buffer(self, WriteBuffer buf) + cdef write_byte(self, char b) + cdef write_bytes(self, bytes data) + cdef write_len_prefixed_buffer(self, WriteBuffer buf) + cdef write_len_prefixed_bytes(self, bytes data) + cdef write_bytestring(self, bytes string) + cdef write_str(self, str string, str encoding) + cdef write_frbuf(self, FRBuffer *buf) + cdef write_cstr(self, const char *data, ssize_t len) + cdef write_int16(self, int16_t i) + cdef write_int32(self, int32_t i) + cdef write_int64(self, int64_t i) + cdef write_float(self, float f) + cdef write_double(self, double d) + + @staticmethod + cdef WriteBuffer new_message(char type) + + @staticmethod + cdef WriteBuffer new() + + +ctypedef const char * (*try_consume_message_method)(object, ssize_t*) +ctypedef int32_t (*take_message_type_method)(object, char) except -1 +ctypedef int32_t (*take_message_method)(object) except -1 +ctypedef char (*get_message_type_method)(object) + + +cdef class ReadBuffer: + cdef: + # A deque of buffers (bytes objects) + object _bufs + object _bufs_append + object _bufs_popleft + + # A pointer to the first buffer in `_bufs` + bytes _buf0 + + # A pointer to the previous first buffer + # (used to prolong the life of _buf0 when using + # methods like _try_read_bytes) + bytes _buf0_prev + + # Number of buffers in `_bufs` + int32_t _bufs_len + + # A read position in the first buffer in `_bufs` + ssize_t _pos0 + + # Length of the first buffer in `_bufs` + ssize_t _len0 + + # A total number of buffered bytes in ReadBuffer + ssize_t _length + + char _current_message_type + int32_t _current_message_len + ssize_t _current_message_len_unread + bint _current_message_ready + + cdef inline len(self): + return self._length + + cdef inline char get_message_type(self): + return self._current_message_type + + cdef inline int32_t get_message_length(self): + return self._current_message_len + + cdef feed_data(self, data) + cdef inline _ensure_first_buf(self) + cdef _switch_to_next_buf(self) + cdef inline char read_byte(self) except? -1 + cdef inline const char* _try_read_bytes(self, ssize_t nbytes) + cdef inline _read_into(self, char *buf, ssize_t nbytes) + cdef inline _read_and_discard(self, ssize_t nbytes) + cdef bytes read_bytes(self, ssize_t nbytes) + cdef bytes read_len_prefixed_bytes(self) + cdef str read_len_prefixed_utf8(self) + cdef read_uuid(self) + cdef inline int64_t read_int64(self) except? -1 + cdef inline int32_t read_int32(self) except? -1 + cdef inline int16_t read_int16(self) except? -1 + cdef inline read_null_str(self) + cdef int32_t take_message(self) except -1 + cdef inline int32_t take_message_type(self, char mtype) except -1 + cdef int32_t put_message(self) except -1 + cdef inline const char* try_consume_message(self, ssize_t* len) + cdef bytes consume_message(self) + cdef discard_message(self) + cdef redirect_messages(self, WriteBuffer buf, char mtype, int stop_at=?) + cdef bytearray consume_messages(self, char mtype) + cdef finish_message(self) + cdef inline _finish_message(self) + + @staticmethod + cdef ReadBuffer new_message_parser(object data) diff --git a/async_gaussdb/gaussdbproto/buffer.pyx b/async_gaussdb/gaussdbproto/buffer.pyx new file mode 100644 index 00000000..edced554 --- /dev/null +++ b/async_gaussdb/gaussdbproto/buffer.pyx @@ -0,0 +1,817 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +from libc.string cimport memcpy + +import collections + +class BufferError(Exception): + pass + +@cython.no_gc_clear +@cython.final +@cython.freelist(_BUFFER_FREELIST_SIZE) +cdef class WriteBuffer: + + def __cinit__(self): + self._smallbuf_inuse = True + self._buf = self._smallbuf + self._size = _BUFFER_INITIAL_SIZE + self._length = 0 + self._message_mode = 0 + + def __dealloc__(self): + if self._buf is not NULL and not self._smallbuf_inuse: + cpython.PyMem_Free(self._buf) + self._buf = NULL + self._size = 0 + + if self._view_count: + raise BufferError( + 'Deallocating buffer with attached memoryviews') + + def __getbuffer__(self, Py_buffer *buffer, int flags): + self._view_count += 1 + + cpython.PyBuffer_FillInfo( + buffer, self, self._buf, self._length, + 1, # read-only + flags) + + def __releasebuffer__(self, Py_buffer *buffer): + self._view_count -= 1 + + cdef inline _check_readonly(self): + if self._view_count: + raise BufferError('the buffer is in read-only mode') + + cdef inline _ensure_alloced(self, ssize_t extra_length): + cdef ssize_t new_size = extra_length + self._length + + if new_size > self._size: + self._reallocate(new_size) + + cdef _reallocate(self, ssize_t new_size): + cdef char *new_buf + + if new_size < _BUFFER_MAX_GROW: + new_size = _BUFFER_MAX_GROW + else: + # Add a little extra + new_size += _BUFFER_INITIAL_SIZE + + if self._smallbuf_inuse: + new_buf = cpython.PyMem_Malloc( + sizeof(char) * new_size) + if new_buf is NULL: + self._buf = NULL + self._size = 0 + self._length = 0 + raise MemoryError + memcpy(new_buf, self._buf, self._size) + self._size = new_size + self._buf = new_buf + self._smallbuf_inuse = False + else: + new_buf = cpython.PyMem_Realloc( + self._buf, new_size) + if new_buf is NULL: + cpython.PyMem_Free(self._buf) + self._buf = NULL + self._size = 0 + self._length = 0 + raise MemoryError + self._buf = new_buf + self._size = new_size + + cdef inline start_message(self, char type): + if self._length != 0: + raise BufferError( + 'cannot start_message for a non-empty buffer') + self._ensure_alloced(5) + self._message_mode = 1 + self._buf[0] = type + self._length = 5 + + cdef inline end_message(self): + # "length-1" to exclude the message type byte + cdef ssize_t mlen = self._length - 1 + + self._check_readonly() + if not self._message_mode: + raise BufferError( + 'end_message can only be called with start_message') + if self._length < 5: + raise BufferError('end_message: buffer is too small') + if mlen > _MAXINT32: + raise BufferError('end_message: message is too large') + + hton.pack_int32(&self._buf[1], mlen) + return self + + cdef inline reset(self): + self._length = 0 + self._message_mode = 0 + + cdef write_buffer(self, WriteBuffer buf): + self._check_readonly() + + if not buf._length: + return + + self._ensure_alloced(buf._length) + memcpy(self._buf + self._length, + buf._buf, + buf._length) + self._length += buf._length + + cdef write_byte(self, char b): + self._check_readonly() + + self._ensure_alloced(1) + self._buf[self._length] = b + self._length += 1 + + cdef write_bytes(self, bytes data): + cdef char* buf + cdef ssize_t len + + cpython.PyBytes_AsStringAndSize(data, &buf, &len) + self.write_cstr(buf, len) + + cdef write_bytestring(self, bytes string): + cdef char* buf + cdef ssize_t len + + cpython.PyBytes_AsStringAndSize(string, &buf, &len) + # PyBytes_AsStringAndSize returns a null-terminated buffer, + # but the null byte is not counted in len. hence the + 1 + self.write_cstr(buf, len + 1) + + cdef write_str(self, str string, str encoding): + self.write_bytestring(string.encode(encoding)) + + cdef write_len_prefixed_buffer(self, WriteBuffer buf): + # Write a length-prefixed (not NULL-terminated) bytes sequence. + self.write_int32(buf.len()) + self.write_buffer(buf) + + cdef write_len_prefixed_bytes(self, bytes data): + # Write a length-prefixed (not NULL-terminated) bytes sequence. + cdef: + char *buf + ssize_t size + + cpython.PyBytes_AsStringAndSize(data, &buf, &size) + if size > _MAXINT32: + raise BufferError('string is too large') + # `size` does not account for the NULL at the end. + self.write_int32(size) + self.write_cstr(buf, size) + + cdef write_frbuf(self, FRBuffer *buf): + cdef: + ssize_t buf_len = buf.len + if buf_len > 0: + self.write_cstr(frb_read_all(buf), buf_len) + + cdef write_cstr(self, const char *data, ssize_t len): + self._check_readonly() + self._ensure_alloced(len) + + memcpy(self._buf + self._length, data, len) + self._length += len + + cdef write_int16(self, int16_t i): + self._check_readonly() + self._ensure_alloced(2) + + hton.pack_int16(&self._buf[self._length], i) + self._length += 2 + + cdef write_int32(self, int32_t i): + self._check_readonly() + self._ensure_alloced(4) + + hton.pack_int32(&self._buf[self._length], i) + self._length += 4 + + cdef write_int64(self, int64_t i): + self._check_readonly() + self._ensure_alloced(8) + + hton.pack_int64(&self._buf[self._length], i) + self._length += 8 + + cdef write_float(self, float f): + self._check_readonly() + self._ensure_alloced(4) + + hton.pack_float(&self._buf[self._length], f) + self._length += 4 + + cdef write_double(self, double d): + self._check_readonly() + self._ensure_alloced(8) + + hton.pack_double(&self._buf[self._length], d) + self._length += 8 + + @staticmethod + cdef WriteBuffer new_message(char type): + cdef WriteBuffer buf + buf = WriteBuffer.__new__(WriteBuffer) + buf.start_message(type) + return buf + + @staticmethod + cdef WriteBuffer new(): + cdef WriteBuffer buf + buf = WriteBuffer.__new__(WriteBuffer) + return buf + + +@cython.no_gc_clear +@cython.final +@cython.freelist(_BUFFER_FREELIST_SIZE) +cdef class ReadBuffer: + + def __cinit__(self): + self._bufs = collections.deque() + self._bufs_append = self._bufs.append + self._bufs_popleft = self._bufs.popleft + self._bufs_len = 0 + self._buf0 = None + self._buf0_prev = None + self._pos0 = 0 + self._len0 = 0 + self._length = 0 + + self._current_message_type = 0 + self._current_message_len = 0 + self._current_message_len_unread = 0 + self._current_message_ready = 0 + + cdef feed_data(self, data): + cdef: + ssize_t dlen + bytes data_bytes + + if not cpython.PyBytes_CheckExact(data): + if cpythonx.PyByteArray_CheckExact(data): + # ProactorEventLoop in Python 3.10+ seems to be sending + # bytearray objects instead of bytes. Handle this here + # to avoid duplicating this check in every data_received(). + data = bytes(data) + else: + raise BufferError( + 'feed_data: a bytes or bytearray object expected') + + # Uncomment the below code to test code paths that + # read single int/str/bytes sequences are split over + # multiple received buffers. + # + # ll = 107 + # if len(data) > ll: + # self.feed_data(data[:ll]) + # self.feed_data(data[ll:]) + # return + + data_bytes = data + + dlen = cpython.Py_SIZE(data_bytes) + if dlen == 0: + # EOF? + return + + self._bufs_append(data_bytes) + self._length += dlen + + if self._bufs_len == 0: + # First buffer + self._len0 = dlen + self._buf0 = data_bytes + + self._bufs_len += 1 + + cdef inline _ensure_first_buf(self): + if GAUSSDB_DEBUG: + if self._len0 == 0: + raise BufferError('empty first buffer') + if self._length == 0: + raise BufferError('empty buffer') + + if self._pos0 == self._len0: + self._switch_to_next_buf() + + cdef _switch_to_next_buf(self): + # The first buffer is fully read, discard it + self._bufs_popleft() + self._bufs_len -= 1 + + # Shouldn't fail, since we've checked that `_length >= 1` + # in _ensure_first_buf() + self._buf0_prev = self._buf0 + self._buf0 = self._bufs[0] + + self._pos0 = 0 + self._len0 = len(self._buf0) + + if GAUSSDB_DEBUG: + if self._len0 < 1: + raise BufferError( + 'debug: second buffer of ReadBuffer is empty') + + cdef inline const char* _try_read_bytes(self, ssize_t nbytes): + # Try to read *nbytes* from the first buffer. + # + # Returns pointer to data if there is at least *nbytes* + # in the buffer, NULL otherwise. + # + # Important: caller must call _ensure_first_buf() prior + # to calling try_read_bytes, and must not overread + + cdef: + const char *result + + if GAUSSDB_DEBUG: + if nbytes > self._length: + return NULL + + if self._current_message_ready: + if self._current_message_len_unread < nbytes: + return NULL + + if self._pos0 + nbytes <= self._len0: + result = cpython.PyBytes_AS_STRING(self._buf0) + result += self._pos0 + self._pos0 += nbytes + self._length -= nbytes + if self._current_message_ready: + self._current_message_len_unread -= nbytes + return result + else: + return NULL + + cdef inline _read_into(self, char *buf, ssize_t nbytes): + cdef: + ssize_t nread + char *buf0 + + while True: + buf0 = cpython.PyBytes_AS_STRING(self._buf0) + + if self._pos0 + nbytes > self._len0: + nread = self._len0 - self._pos0 + memcpy(buf, buf0 + self._pos0, nread) + self._pos0 = self._len0 + self._length -= nread + nbytes -= nread + buf += nread + self._ensure_first_buf() + + else: + memcpy(buf, buf0 + self._pos0, nbytes) + self._pos0 += nbytes + self._length -= nbytes + break + + cdef inline _read_and_discard(self, ssize_t nbytes): + cdef: + ssize_t nread + + self._ensure_first_buf() + while True: + if self._pos0 + nbytes > self._len0: + nread = self._len0 - self._pos0 + self._pos0 = self._len0 + self._length -= nread + nbytes -= nread + self._ensure_first_buf() + + else: + self._pos0 += nbytes + self._length -= nbytes + break + + cdef bytes read_bytes(self, ssize_t nbytes): + cdef: + bytes result + ssize_t nread + const char *cbuf + char *buf + + self._ensure_first_buf() + cbuf = self._try_read_bytes(nbytes) + if cbuf != NULL: + return cpython.PyBytes_FromStringAndSize(cbuf, nbytes) + + if nbytes > self._length: + raise BufferError( + 'not enough data to read {} bytes'.format(nbytes)) + + if self._current_message_ready: + self._current_message_len_unread -= nbytes + if self._current_message_len_unread < 0: + raise BufferError('buffer overread') + + result = cpython.PyBytes_FromStringAndSize(NULL, nbytes) + buf = cpython.PyBytes_AS_STRING(result) + self._read_into(buf, nbytes) + return result + + cdef bytes read_len_prefixed_bytes(self): + cdef int32_t size = self.read_int32() + if size < 0: + raise BufferError( + 'negative length for a len-prefixed bytes value') + if size == 0: + return b'' + return self.read_bytes(size) + + cdef str read_len_prefixed_utf8(self): + cdef: + int32_t size + const char *cbuf + + size = self.read_int32() + if size < 0: + raise BufferError( + 'negative length for a len-prefixed bytes value') + + if size == 0: + return '' + + self._ensure_first_buf() + cbuf = self._try_read_bytes(size) + if cbuf != NULL: + return cpython.PyUnicode_DecodeUTF8(cbuf, size, NULL) + else: + return self.read_bytes(size).decode('utf-8') + + cdef read_uuid(self): + cdef: + bytes mem + const char *cbuf + + self._ensure_first_buf() + cbuf = self._try_read_bytes(16) + if cbuf != NULL: + return gaussdb_uuid_from_buf(cbuf) + else: + return gaussdb_UUID(self.read_bytes(16)) + + cdef inline char read_byte(self) except? -1: + cdef const char *first_byte + + if GAUSSDB_DEBUG: + if not self._buf0: + raise BufferError( + 'debug: first buffer of ReadBuffer is empty') + + self._ensure_first_buf() + first_byte = self._try_read_bytes(1) + if first_byte is NULL: + raise BufferError('not enough data to read one byte') + + return first_byte[0] + + cdef inline int64_t read_int64(self) except? -1: + cdef: + bytes mem + const char *cbuf + + self._ensure_first_buf() + cbuf = self._try_read_bytes(8) + if cbuf != NULL: + return hton.unpack_int64(cbuf) + else: + mem = self.read_bytes(8) + return hton.unpack_int64(cpython.PyBytes_AS_STRING(mem)) + + cdef inline int32_t read_int32(self) except? -1: + cdef: + bytes mem + const char *cbuf + + self._ensure_first_buf() + cbuf = self._try_read_bytes(4) + if cbuf != NULL: + return hton.unpack_int32(cbuf) + else: + mem = self.read_bytes(4) + return hton.unpack_int32(cpython.PyBytes_AS_STRING(mem)) + + cdef inline int16_t read_int16(self) except? -1: + cdef: + bytes mem + const char *cbuf + + self._ensure_first_buf() + cbuf = self._try_read_bytes(2) + if cbuf != NULL: + return hton.unpack_int16(cbuf) + else: + mem = self.read_bytes(2) + return hton.unpack_int16(cpython.PyBytes_AS_STRING(mem)) + + cdef inline read_null_str(self): + if not self._current_message_ready: + raise BufferError( + 'read_null_str only works when the message guaranteed ' + 'to be in the buffer') + + cdef: + ssize_t pos + ssize_t nread + bytes result + const char *buf + const char *buf_start + + self._ensure_first_buf() + + buf_start = cpython.PyBytes_AS_STRING(self._buf0) + buf = buf_start + self._pos0 + while buf - buf_start < self._len0: + if buf[0] == 0: + pos = buf - buf_start + nread = pos - self._pos0 + buf = self._try_read_bytes(nread + 1) + if buf != NULL: + return cpython.PyBytes_FromStringAndSize(buf, nread) + else: + break + else: + buf += 1 + + result = b'' + while True: + pos = self._buf0.find(b'\x00', self._pos0) + if pos >= 0: + result += self._buf0[self._pos0 : pos] + nread = pos - self._pos0 + 1 + self._pos0 = pos + 1 + self._length -= nread + + self._current_message_len_unread -= nread + if self._current_message_len_unread < 0: + raise BufferError( + 'read_null_str: buffer overread') + + return result + + else: + result += self._buf0[self._pos0:] + nread = self._len0 - self._pos0 + self._pos0 = self._len0 + self._length -= nread + + self._current_message_len_unread -= nread + if self._current_message_len_unread < 0: + raise BufferError( + 'read_null_str: buffer overread') + + self._ensure_first_buf() + + cdef int32_t take_message(self) except -1: + cdef: + const char *cbuf + + if self._current_message_ready: + return 1 + + if self._current_message_type == 0: + if self._length < 1: + return 0 + self._ensure_first_buf() + cbuf = self._try_read_bytes(1) + if cbuf == NULL: + raise BufferError( + 'failed to read one byte on a non-empty buffer') + self._current_message_type = cbuf[0] + + if self._current_message_len == 0: + if self._length < 4: + return 0 + + self._ensure_first_buf() + cbuf = self._try_read_bytes(4) + if cbuf != NULL: + self._current_message_len = hton.unpack_int32(cbuf) + else: + self._current_message_len = self.read_int32() + + self._current_message_len_unread = self._current_message_len - 4 + + if self._length < self._current_message_len_unread: + return 0 + + self._current_message_ready = 1 + return 1 + + cdef inline int32_t take_message_type(self, char mtype) except -1: + cdef const char *buf0 + + if self._current_message_ready: + return self._current_message_type == mtype + elif self._length >= 1: + self._ensure_first_buf() + buf0 = cpython.PyBytes_AS_STRING(self._buf0) + + return buf0[self._pos0] == mtype and self.take_message() + else: + return 0 + + cdef int32_t put_message(self) except -1: + if not self._current_message_ready: + raise BufferError( + 'cannot put message: no message taken') + self._current_message_ready = False + return 0 + + cdef inline const char* try_consume_message(self, ssize_t* len): + cdef: + ssize_t buf_len + const char *buf + + if not self._current_message_ready: + return NULL + + self._ensure_first_buf() + buf_len = self._current_message_len_unread + buf = self._try_read_bytes(buf_len) + if buf != NULL: + len[0] = buf_len + self._finish_message() + return buf + + cdef discard_message(self): + if not self._current_message_ready: + raise BufferError('no message to discard') + if self._current_message_len_unread > 0: + self._read_and_discard(self._current_message_len_unread) + self._current_message_len_unread = 0 + self._finish_message() + + cdef bytes consume_message(self): + if not self._current_message_ready: + raise BufferError('no message to consume') + if self._current_message_len_unread > 0: + mem = self.read_bytes(self._current_message_len_unread) + else: + mem = b'' + self._finish_message() + return mem + + cdef redirect_messages(self, WriteBuffer buf, char mtype, + int stop_at=0): + if not self._current_message_ready: + raise BufferError( + 'consume_full_messages called on a buffer without a ' + 'complete first message') + if mtype != self._current_message_type: + raise BufferError( + 'consume_full_messages called with a wrong mtype') + if self._current_message_len_unread != self._current_message_len - 4: + raise BufferError( + 'consume_full_messages called on a partially read message') + + cdef: + const char* cbuf + ssize_t cbuf_len + int32_t msg_len + ssize_t new_pos0 + ssize_t pos_delta + int32_t done + + while True: + buf.write_byte(mtype) + buf.write_int32(self._current_message_len) + + cbuf = self.try_consume_message(&cbuf_len) + if cbuf != NULL: + buf.write_cstr(cbuf, cbuf_len) + else: + buf.write_bytes(self.consume_message()) + + if self._length > 0: + self._ensure_first_buf() + else: + return + + if stop_at and buf._length >= stop_at: + return + + # Fast path: exhaust buf0 as efficiently as possible. + if self._pos0 + 5 <= self._len0: + cbuf = cpython.PyBytes_AS_STRING(self._buf0) + new_pos0 = self._pos0 + cbuf_len = self._len0 + + done = 0 + # Scan the first buffer and find the position of the + # end of the last "mtype" message. + while new_pos0 + 5 <= cbuf_len: + if (cbuf + new_pos0)[0] != mtype: + done = 1 + break + if (stop_at and + (buf._length + new_pos0 - self._pos0) > stop_at): + done = 1 + break + msg_len = hton.unpack_int32(cbuf + new_pos0 + 1) + 1 + if new_pos0 + msg_len > cbuf_len: + break + new_pos0 += msg_len + + if new_pos0 != self._pos0: + assert self._pos0 < new_pos0 <= self._len0 + + pos_delta = new_pos0 - self._pos0 + buf.write_cstr( + cbuf + self._pos0, + pos_delta) + + self._pos0 = new_pos0 + self._length -= pos_delta + + assert self._length >= 0 + + if done: + # The next message is of a different type. + return + + # Back to slow path. + if not self.take_message_type(mtype): + return + + cdef bytearray consume_messages(self, char mtype): + """Consume consecutive messages of the same type.""" + cdef: + char *buf + ssize_t nbytes + ssize_t total_bytes = 0 + bytearray result + + if not self.take_message_type(mtype): + return None + + # consume_messages is a volume-oriented method, so + # we assume that the remainder of the buffer will contain + # messages of the requested type. + result = cpythonx.PyByteArray_FromStringAndSize(NULL, self._length) + buf = cpythonx.PyByteArray_AsString(result) + + while self.take_message_type(mtype): + self._ensure_first_buf() + nbytes = self._current_message_len_unread + self._read_into(buf, nbytes) + buf += nbytes + total_bytes += nbytes + self._finish_message() + + # Clamp the result to an actual size read. + cpythonx.PyByteArray_Resize(result, total_bytes) + + return result + + cdef finish_message(self): + if self._current_message_type == 0 or not self._current_message_ready: + # The message has already been finished (e.g by consume_message()), + # or has been put back by put_message(). + return + + if self._current_message_len_unread: + if GAUSSDB_DEBUG: + mtype = chr(self._current_message_type) + + discarded = self.consume_message() + + if GAUSSDB_DEBUG: + print('!!! discarding message {!r} unread data: {!r}'.format( + mtype, + discarded)) + + self._finish_message() + + cdef inline _finish_message(self): + self._current_message_type = 0 + self._current_message_len = 0 + self._current_message_ready = 0 + self._current_message_len_unread = 0 + + @staticmethod + cdef ReadBuffer new_message_parser(object data): + cdef ReadBuffer buf + + buf = ReadBuffer.__new__(ReadBuffer) + buf.feed_data(data) + + buf._current_message_ready = 1 + buf._current_message_len_unread = buf._len0 + + return buf diff --git a/async_gaussdb/gaussdbproto/codecs/__init__.pxd b/async_gaussdb/gaussdbproto/codecs/__init__.pxd new file mode 100644 index 00000000..f6537d9d --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/__init__.pxd @@ -0,0 +1,157 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef class CodecContext: + + cpdef get_text_codec(self) + cdef is_encoding_utf8(self) + cpdef get_json_decoder(self) + cdef is_decoding_json(self) + cpdef get_json_encoder(self) + cdef is_encoding_json(self) + + +ctypedef object (*encode_func)(CodecContext settings, + WriteBuffer buf, + object obj) + +ctypedef object (*decode_func)(CodecContext settings, + FRBuffer *buf) + + +# Datetime +cdef date_encode(CodecContext settings, WriteBuffer buf, obj) +cdef date_decode(CodecContext settings, FRBuffer * buf) +cdef date_encode_tuple(CodecContext settings, WriteBuffer buf, obj) +cdef date_decode_tuple(CodecContext settings, FRBuffer * buf) +cdef timestamp_encode(CodecContext settings, WriteBuffer buf, obj) +cdef timestamp_decode(CodecContext settings, FRBuffer * buf) +cdef timestamp_encode_tuple(CodecContext settings, WriteBuffer buf, obj) +cdef timestamp_decode_tuple(CodecContext settings, FRBuffer * buf) +cdef timestamptz_encode(CodecContext settings, WriteBuffer buf, obj) +cdef timestamptz_decode(CodecContext settings, FRBuffer * buf) +cdef time_encode(CodecContext settings, WriteBuffer buf, obj) +cdef time_decode(CodecContext settings, FRBuffer * buf) +cdef time_encode_tuple(CodecContext settings, WriteBuffer buf, obj) +cdef time_decode_tuple(CodecContext settings, FRBuffer * buf) +cdef timetz_encode(CodecContext settings, WriteBuffer buf, obj) +cdef timetz_decode(CodecContext settings, FRBuffer * buf) +cdef timetz_encode_tuple(CodecContext settings, WriteBuffer buf, obj) +cdef timetz_decode_tuple(CodecContext settings, FRBuffer * buf) +cdef interval_encode(CodecContext settings, WriteBuffer buf, obj) +cdef interval_decode(CodecContext settings, FRBuffer * buf) +cdef interval_encode_tuple(CodecContext settings, WriteBuffer buf, tuple obj) +cdef interval_decode_tuple(CodecContext settings, FRBuffer * buf) + + +# Bits +cdef bits_encode(CodecContext settings, WriteBuffer wbuf, obj) +cdef bits_decode(CodecContext settings, FRBuffer * buf) + + +# Bools +cdef bool_encode(CodecContext settings, WriteBuffer buf, obj) +cdef bool_decode(CodecContext settings, FRBuffer * buf) + + +# Geometry +cdef box_encode(CodecContext settings, WriteBuffer wbuf, obj) +cdef box_decode(CodecContext settings, FRBuffer * buf) +cdef line_encode(CodecContext settings, WriteBuffer wbuf, obj) +cdef line_decode(CodecContext settings, FRBuffer * buf) +cdef lseg_encode(CodecContext settings, WriteBuffer wbuf, obj) +cdef lseg_decode(CodecContext settings, FRBuffer * buf) +cdef point_encode(CodecContext settings, WriteBuffer wbuf, obj) +cdef point_decode(CodecContext settings, FRBuffer * buf) +cdef path_encode(CodecContext settings, WriteBuffer wbuf, obj) +cdef path_decode(CodecContext settings, FRBuffer * buf) +cdef poly_encode(CodecContext settings, WriteBuffer wbuf, obj) +cdef poly_decode(CodecContext settings, FRBuffer * buf) +cdef circle_encode(CodecContext settings, WriteBuffer wbuf, obj) +cdef circle_decode(CodecContext settings, FRBuffer * buf) + + +# Hstore +cdef hstore_encode(CodecContext settings, WriteBuffer buf, obj) +cdef hstore_decode(CodecContext settings, FRBuffer * buf) + + +# Ints +cdef int2_encode(CodecContext settings, WriteBuffer buf, obj) +cdef int2_decode(CodecContext settings, FRBuffer * buf) +cdef int4_encode(CodecContext settings, WriteBuffer buf, obj) +cdef int4_decode(CodecContext settings, FRBuffer * buf) +cdef uint4_encode(CodecContext settings, WriteBuffer buf, obj) +cdef uint4_decode(CodecContext settings, FRBuffer * buf) +cdef int8_encode(CodecContext settings, WriteBuffer buf, obj) +cdef int8_decode(CodecContext settings, FRBuffer * buf) +cdef uint8_encode(CodecContext settings, WriteBuffer buf, obj) +cdef uint8_decode(CodecContext settings, FRBuffer * buf) + + +# Floats +cdef float4_encode(CodecContext settings, WriteBuffer buf, obj) +cdef float4_decode(CodecContext settings, FRBuffer * buf) +cdef float8_encode(CodecContext settings, WriteBuffer buf, obj) +cdef float8_decode(CodecContext settings, FRBuffer * buf) + + +# JSON +cdef jsonb_encode(CodecContext settings, WriteBuffer buf, obj) +cdef jsonb_decode(CodecContext settings, FRBuffer * buf) + + +# JSON path +cdef jsonpath_encode(CodecContext settings, WriteBuffer buf, obj) +cdef jsonpath_decode(CodecContext settings, FRBuffer * buf) + + +# Text +cdef as_gaussdb_string_and_size( + CodecContext settings, obj, char **cstr, ssize_t *size) +cdef text_encode(CodecContext settings, WriteBuffer buf, obj) +cdef text_decode(CodecContext settings, FRBuffer * buf) + +# Bytea +cdef bytea_encode(CodecContext settings, WriteBuffer wbuf, obj) +cdef bytea_decode(CodecContext settings, FRBuffer * buf) + + +# UUID +cdef uuid_encode(CodecContext settings, WriteBuffer wbuf, obj) +cdef uuid_decode(CodecContext settings, FRBuffer * buf) + + +# Numeric +cdef numeric_encode_text(CodecContext settings, WriteBuffer buf, obj) +cdef numeric_decode_text(CodecContext settings, FRBuffer * buf) +cdef numeric_encode_binary(CodecContext settings, WriteBuffer buf, obj) +cdef numeric_decode_binary(CodecContext settings, FRBuffer * buf) +cdef numeric_decode_binary_ex(CodecContext settings, FRBuffer * buf, + bint trail_fract_zero) + + +# Void +cdef void_encode(CodecContext settings, WriteBuffer buf, obj) +cdef void_decode(CodecContext settings, FRBuffer * buf) + + +# tid +cdef tid_encode(CodecContext settings, WriteBuffer buf, obj) +cdef tid_decode(CodecContext settings, FRBuffer * buf) + + +# Network +cdef cidr_encode(CodecContext settings, WriteBuffer buf, obj) +cdef cidr_decode(CodecContext settings, FRBuffer * buf) +cdef inet_encode(CodecContext settings, WriteBuffer buf, obj) +cdef inet_decode(CodecContext settings, FRBuffer * buf) + + +# gaussdb_snapshot +cdef gaussdb_snapshot_encode(CodecContext settings, WriteBuffer buf, obj) +cdef gaussdb_snapshot_decode(CodecContext settings, FRBuffer * buf) diff --git a/async_gaussdb/gaussdbproto/codecs/bits.pyx b/async_gaussdb/gaussdbproto/codecs/bits.pyx new file mode 100644 index 00000000..a977174a --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/bits.pyx @@ -0,0 +1,47 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef bits_encode(CodecContext settings, WriteBuffer wbuf, obj): + cdef: + Py_buffer pybuf + bint pybuf_used = False + char *buf + ssize_t len + ssize_t bitlen + + if cpython.PyBytes_CheckExact(obj): + buf = cpython.PyBytes_AS_STRING(obj) + len = cpython.Py_SIZE(obj) + bitlen = len * 8 + elif isinstance(obj, gaussdbproto_types.BitString): + cpython.PyBytes_AsStringAndSize(obj.bytes, &buf, &len) + bitlen = obj.__len__() + else: + cpython.PyObject_GetBuffer(obj, &pybuf, cpython.PyBUF_SIMPLE) + pybuf_used = True + buf = pybuf.buf + len = pybuf.len + bitlen = len * 8 + + try: + if bitlen > _MAXINT32: + raise ValueError('bit value too long') + wbuf.write_int32(4 + len) + wbuf.write_int32(bitlen) + wbuf.write_cstr(buf, len) + finally: + if pybuf_used: + cpython.PyBuffer_Release(&pybuf) + + +cdef bits_decode(CodecContext settings, FRBuffer *buf): + cdef: + int32_t bitlen = hton.unpack_int32(frb_read(buf, 4)) + ssize_t buf_len = buf.len + + bytes_ = cpython.PyBytes_FromStringAndSize(frb_read_all(buf), buf_len) + return gaussdbproto_types.BitString.frombytes(bytes_, bitlen) diff --git a/async_gaussdb/gaussdbproto/codecs/bytea.pyx b/async_gaussdb/gaussdbproto/codecs/bytea.pyx new file mode 100644 index 00000000..fbc9f9f1 --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/bytea.pyx @@ -0,0 +1,34 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef bytea_encode(CodecContext settings, WriteBuffer wbuf, obj): + cdef: + Py_buffer pybuf + bint pybuf_used = False + char *buf + ssize_t len + + if cpython.PyBytes_CheckExact(obj): + buf = cpython.PyBytes_AS_STRING(obj) + len = cpython.Py_SIZE(obj) + else: + cpython.PyObject_GetBuffer(obj, &pybuf, cpython.PyBUF_SIMPLE) + pybuf_used = True + buf = pybuf.buf + len = pybuf.len + + try: + wbuf.write_int32(len) + wbuf.write_cstr(buf, len) + finally: + if pybuf_used: + cpython.PyBuffer_Release(&pybuf) + + +cdef bytea_decode(CodecContext settings, FRBuffer *buf): + cdef ssize_t buf_len = buf.len + return cpython.PyBytes_FromStringAndSize(frb_read_all(buf), buf_len) \ No newline at end of file diff --git a/async_gaussdb/gaussdbproto/codecs/context.pyx b/async_gaussdb/gaussdbproto/codecs/context.pyx new file mode 100644 index 00000000..c4d4416e --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/context.pyx @@ -0,0 +1,26 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef class CodecContext: + + cpdef get_text_codec(self): + raise NotImplementedError + + cdef is_encoding_utf8(self): + raise NotImplementedError + + cpdef get_json_decoder(self): + raise NotImplementedError + + cdef is_decoding_json(self): + return False + + cpdef get_json_encoder(self): + raise NotImplementedError + + cdef is_encoding_json(self): + return False diff --git a/async_gaussdb/gaussdbproto/codecs/datetime.pyx b/async_gaussdb/gaussdbproto/codecs/datetime.pyx new file mode 100644 index 00000000..2b2d4335 --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/datetime.pyx @@ -0,0 +1,423 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cimport cpython.datetime +import datetime + +cpython.datetime.import_datetime() + +utc = datetime.timezone.utc +date_from_ordinal = datetime.date.fromordinal +timedelta = datetime.timedelta + +gaussdb_epoch_datetime = datetime.datetime(2000, 1, 1) +cdef int32_t gaussdb_epoch_datetime_ts = \ + cpython.PyLong_AsLong(int(gaussdb_epoch_datetime.timestamp())) + +gaussdb_epoch_datetime_utc = datetime.datetime(2000, 1, 1, tzinfo=utc) +cdef int32_t gaussdb_epoch_datetime_utc_ts = \ + cpython.PyLong_AsLong(int(gaussdb_epoch_datetime_utc.timestamp())) + +gaussdb_epoch_date = datetime.date(2000, 1, 1) +cdef int32_t gaussdb_date_offset_ord = \ + cpython.PyLong_AsLong(gaussdb_epoch_date.toordinal()) + +# Binary representations of infinity for datetimes. +cdef int64_t gaussdb_time64_infinity = 0x7fffffffffffffff +cdef int64_t gaussdb_time64_negative_infinity = 0x8000000000000000 +cdef int32_t gaussdb_date_infinity = 0x7fffffff +cdef int32_t gaussdb_date_negative_infinity = 0x80000000 + +infinity_datetime = datetime.datetime( + datetime.MAXYEAR, 12, 31, 23, 59, 59, 999999) + +cdef int32_t infinity_datetime_ord = cpython.PyLong_AsLong( + infinity_datetime.toordinal()) + +cdef int64_t infinity_datetime_ts = 252455615999999999 + +negative_infinity_datetime = datetime.datetime( + datetime.MINYEAR, 1, 1, 0, 0, 0, 0) + +cdef int32_t negative_infinity_datetime_ord = cpython.PyLong_AsLong( + negative_infinity_datetime.toordinal()) + +cdef int64_t negative_infinity_datetime_ts = -63082281600000000 + +infinity_date = datetime.date(datetime.MAXYEAR, 12, 31) + +cdef int32_t infinity_date_ord = cpython.PyLong_AsLong( + infinity_date.toordinal()) + +negative_infinity_date = datetime.date(datetime.MINYEAR, 1, 1) + +cdef int32_t negative_infinity_date_ord = cpython.PyLong_AsLong( + negative_infinity_date.toordinal()) + + +cdef inline _local_timezone(): + d = datetime.datetime.now(datetime.timezone.utc).astimezone() + return datetime.timezone(d.utcoffset()) + + +cdef inline _encode_time(WriteBuffer buf, int64_t seconds, + int32_t microseconds): + # XXX: add support for double timestamps + # int64 timestamps, + cdef int64_t ts = seconds * 1000000 + microseconds + + if ts == infinity_datetime_ts: + buf.write_int64(gaussdb_time64_infinity) + elif ts == negative_infinity_datetime_ts: + buf.write_int64(gaussdb_time64_negative_infinity) + else: + buf.write_int64(ts) + + +cdef inline int32_t _decode_time(FRBuffer *buf, int64_t *seconds, + int32_t *microseconds): + cdef int64_t ts = hton.unpack_int64(frb_read(buf, 8)) + + if ts == gaussdb_time64_infinity: + return 1 + elif ts == gaussdb_time64_negative_infinity: + return -1 + else: + seconds[0] = ts // 1000000 + microseconds[0] = (ts % 1000000) + return 0 + + +cdef date_encode(CodecContext settings, WriteBuffer buf, obj): + cdef: + int32_t ordinal = cpython.PyLong_AsLong(obj.toordinal()) + int32_t gaussdb_ordinal + + if ordinal == infinity_date_ord: + gaussdb_ordinal = gaussdb_date_infinity + elif ordinal == negative_infinity_date_ord: + gaussdb_ordinal = gaussdb_date_negative_infinity + else: + gaussdb_ordinal = ordinal - gaussdb_date_offset_ord + + buf.write_int32(4) + buf.write_int32(gaussdb_ordinal) + + +cdef date_encode_tuple(CodecContext settings, WriteBuffer buf, obj): + cdef: + int32_t gaussdb_ordinal + + if len(obj) != 1: + raise ValueError( + 'date tuple encoder: expecting 1 element ' + 'in tuple, got {}'.format(len(obj))) + + gaussdb_ordinal = obj[0] + buf.write_int32(4) + buf.write_int32(gaussdb_ordinal) + + +cdef date_decode(CodecContext settings, FRBuffer *buf): + cdef int32_t gaussdb_ordinal = hton.unpack_int32(frb_read(buf, 4)) + + if gaussdb_ordinal == gaussdb_date_infinity: + return infinity_date + elif gaussdb_ordinal == gaussdb_date_negative_infinity: + return negative_infinity_date + else: + return date_from_ordinal(gaussdb_ordinal + gaussdb_date_offset_ord) + + +cdef date_decode_tuple(CodecContext settings, FRBuffer *buf): + cdef int32_t gaussdb_ordinal = hton.unpack_int32(frb_read(buf, 4)) + + return (gaussdb_ordinal,) + + +cdef timestamp_encode(CodecContext settings, WriteBuffer buf, obj): + if not cpython.datetime.PyDateTime_Check(obj): + if cpython.datetime.PyDate_Check(obj): + obj = datetime.datetime(obj.year, obj.month, obj.day) + else: + raise TypeError( + 'expected a datetime.date or datetime.datetime instance, ' + 'got {!r}'.format(type(obj).__name__) + ) + + delta = obj - gaussdb_epoch_datetime + cdef: + int64_t seconds = cpython.PyLong_AsLongLong(delta.days) * 86400 + \ + cpython.PyLong_AsLong(delta.seconds) + int32_t microseconds = cpython.PyLong_AsLong( + delta.microseconds) + + buf.write_int32(8) + _encode_time(buf, seconds, microseconds) + + +cdef timestamp_encode_tuple(CodecContext settings, WriteBuffer buf, obj): + cdef: + int64_t microseconds + + if len(obj) != 1: + raise ValueError( + 'timestamp tuple encoder: expecting 1 element ' + 'in tuple, got {}'.format(len(obj))) + + microseconds = obj[0] + + buf.write_int32(8) + buf.write_int64(microseconds) + + +cdef timestamp_decode(CodecContext settings, FRBuffer *buf): + cdef: + int64_t seconds = 0 + int32_t microseconds = 0 + int32_t inf = _decode_time(buf, &seconds, µseconds) + + if inf > 0: + # positive infinity + return infinity_datetime + elif inf < 0: + # negative infinity + return negative_infinity_datetime + else: + return gaussdb_epoch_datetime.__add__( + timedelta(0, seconds, microseconds)) + + +cdef timestamp_decode_tuple(CodecContext settings, FRBuffer *buf): + cdef: + int64_t ts = hton.unpack_int64(frb_read(buf, 8)) + + return (ts,) + + +cdef timestamptz_encode(CodecContext settings, WriteBuffer buf, obj): + if not cpython.datetime.PyDateTime_Check(obj): + if cpython.datetime.PyDate_Check(obj): + obj = datetime.datetime(obj.year, obj.month, obj.day, + tzinfo=_local_timezone()) + else: + raise TypeError( + 'expected a datetime.date or datetime.datetime instance, ' + 'got {!r}'.format(type(obj).__name__) + ) + + buf.write_int32(8) + + if obj == infinity_datetime: + buf.write_int64(gaussdb_time64_infinity) + return + elif obj == negative_infinity_datetime: + buf.write_int64(gaussdb_time64_negative_infinity) + return + + utc_dt = obj.astimezone(utc) + + delta = utc_dt - gaussdb_epoch_datetime_utc + cdef: + int64_t seconds = cpython.PyLong_AsLongLong(delta.days) * 86400 + \ + cpython.PyLong_AsLong(delta.seconds) + int32_t microseconds = cpython.PyLong_AsLong( + delta.microseconds) + + _encode_time(buf, seconds, microseconds) + + +cdef timestamptz_decode(CodecContext settings, FRBuffer *buf): + cdef: + int64_t seconds = 0 + int32_t microseconds = 0 + int32_t inf = _decode_time(buf, &seconds, µseconds) + + if inf > 0: + # positive infinity + return infinity_datetime + elif inf < 0: + # negative infinity + return negative_infinity_datetime + else: + return gaussdb_epoch_datetime_utc.__add__( + timedelta(0, seconds, microseconds)) + + +cdef time_encode(CodecContext settings, WriteBuffer buf, obj): + cdef: + int64_t seconds = cpython.PyLong_AsLong(obj.hour) * 3600 + \ + cpython.PyLong_AsLong(obj.minute) * 60 + \ + cpython.PyLong_AsLong(obj.second) + int32_t microseconds = cpython.PyLong_AsLong(obj.microsecond) + + buf.write_int32(8) + _encode_time(buf, seconds, microseconds) + + +cdef time_encode_tuple(CodecContext settings, WriteBuffer buf, obj): + cdef: + int64_t microseconds + + if len(obj) != 1: + raise ValueError( + 'time tuple encoder: expecting 1 element ' + 'in tuple, got {}'.format(len(obj))) + + microseconds = obj[0] + + buf.write_int32(8) + buf.write_int64(microseconds) + + +cdef time_decode(CodecContext settings, FRBuffer *buf): + cdef: + int64_t seconds = 0 + int32_t microseconds = 0 + + _decode_time(buf, &seconds, µseconds) + + cdef: + int64_t minutes = (seconds / 60) + int64_t sec = seconds % 60 + int64_t hours = (minutes / 60) + int64_t min = minutes % 60 + + return datetime.time(hours, min, sec, microseconds) + + +cdef time_decode_tuple(CodecContext settings, FRBuffer *buf): + cdef: + int64_t ts = hton.unpack_int64(frb_read(buf, 8)) + + return (ts,) + + +cdef timetz_encode(CodecContext settings, WriteBuffer buf, obj): + offset = obj.tzinfo.utcoffset(None) + + cdef: + int32_t offset_sec = \ + cpython.PyLong_AsLong(offset.days) * 24 * 60 * 60 + \ + cpython.PyLong_AsLong(offset.seconds) + + int64_t seconds = cpython.PyLong_AsLong(obj.hour) * 3600 + \ + cpython.PyLong_AsLong(obj.minute) * 60 + \ + cpython.PyLong_AsLong(obj.second) + + int32_t microseconds = cpython.PyLong_AsLong(obj.microsecond) + + buf.write_int32(12) + _encode_time(buf, seconds, microseconds) + # In Python utcoffset() is the difference between the local time + # and the UTC, whereas in GaussDBSQL it's the opposite, + # so we need to flip the sign. + buf.write_int32(-offset_sec) + + +cdef timetz_encode_tuple(CodecContext settings, WriteBuffer buf, obj): + cdef: + int64_t microseconds + int32_t offset_sec + + if len(obj) != 2: + raise ValueError( + 'time tuple encoder: expecting 2 elements2 ' + 'in tuple, got {}'.format(len(obj))) + + microseconds = obj[0] + offset_sec = obj[1] + + buf.write_int32(12) + buf.write_int64(microseconds) + buf.write_int32(offset_sec) + + +cdef timetz_decode(CodecContext settings, FRBuffer *buf): + time = time_decode(settings, buf) + cdef int32_t offset = (hton.unpack_int32(frb_read(buf, 4)) / 60) + # See the comment in the `timetz_encode` method. + return time.replace(tzinfo=datetime.timezone(timedelta(minutes=-offset))) + + +cdef timetz_decode_tuple(CodecContext settings, FRBuffer *buf): + cdef: + int64_t microseconds = hton.unpack_int64(frb_read(buf, 8)) + int32_t offset_sec = hton.unpack_int32(frb_read(buf, 4)) + + return (microseconds, offset_sec) + + +cdef interval_encode(CodecContext settings, WriteBuffer buf, obj): + cdef: + int32_t days = cpython.PyLong_AsLong(obj.days) + int64_t seconds = cpython.PyLong_AsLongLong(obj.seconds) + int32_t microseconds = cpython.PyLong_AsLong(obj.microseconds) + + buf.write_int32(16) + _encode_time(buf, seconds, microseconds) + buf.write_int32(days) + buf.write_int32(0) # Months + + +cdef interval_encode_tuple(CodecContext settings, WriteBuffer buf, + tuple obj): + cdef: + int32_t months + int32_t days + int64_t microseconds + + if len(obj) != 3: + raise ValueError( + 'interval tuple encoder: expecting 3 elements ' + 'in tuple, got {}'.format(len(obj))) + + months = obj[0] + days = obj[1] + microseconds = obj[2] + + buf.write_int32(16) + buf.write_int64(microseconds) + buf.write_int32(days) + buf.write_int32(months) + + +cdef interval_decode(CodecContext settings, FRBuffer *buf): + cdef: + int32_t days + int32_t months + int32_t years + int64_t seconds = 0 + int32_t microseconds = 0 + + _decode_time(buf, &seconds, µseconds) + + days = hton.unpack_int32(frb_read(buf, 4)) + months = hton.unpack_int32(frb_read(buf, 4)) + + if months < 0: + years = -(-months // 12) + months = -(-months % 12) + else: + years = (months // 12) + months = (months % 12) + + return datetime.timedelta(days=days + months * 30 + years * 365, + seconds=seconds, microseconds=microseconds) + + +cdef interval_decode_tuple(CodecContext settings, FRBuffer *buf): + cdef: + int32_t days + int32_t months + int64_t microseconds + + microseconds = hton.unpack_int64(frb_read(buf, 8)) + days = hton.unpack_int32(frb_read(buf, 4)) + months = hton.unpack_int32(frb_read(buf, 4)) + + return (months, days, microseconds) diff --git a/async_gaussdb/gaussdbproto/codecs/float.pyx b/async_gaussdb/gaussdbproto/codecs/float.pyx new file mode 100644 index 00000000..94eda03a --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/float.pyx @@ -0,0 +1,34 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +from libc cimport math + + +cdef float4_encode(CodecContext settings, WriteBuffer buf, obj): + cdef double dval = cpython.PyFloat_AsDouble(obj) + cdef float fval = dval + if math.isinf(fval) and not math.isinf(dval): + raise ValueError('value out of float32 range') + + buf.write_int32(4) + buf.write_float(fval) + + +cdef float4_decode(CodecContext settings, FRBuffer *buf): + cdef float f = hton.unpack_float(frb_read(buf, 4)) + return cpython.PyFloat_FromDouble(f) + + +cdef float8_encode(CodecContext settings, WriteBuffer buf, obj): + cdef double dval = cpython.PyFloat_AsDouble(obj) + buf.write_int32(8) + buf.write_double(dval) + + +cdef float8_decode(CodecContext settings, FRBuffer *buf): + cdef double f = hton.unpack_double(frb_read(buf, 8)) + return cpython.PyFloat_FromDouble(f) diff --git a/async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx b/async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx new file mode 100644 index 00000000..56853ed8 --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx @@ -0,0 +1,63 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef gaussdb_snapshot_encode(CodecContext settings, WriteBuffer buf, obj): + cdef: + ssize_t nxip + uint64_t xmin + uint64_t xmax + int i + WriteBuffer xip_buf = WriteBuffer.new() + + if not (cpython.PyTuple_Check(obj) or cpython.PyList_Check(obj)): + raise TypeError( + 'list or tuple expected (got type {})'.format(type(obj))) + + if len(obj) != 3: + raise ValueError( + 'invalid number of elements in txid_snapshot tuple, expecting 4') + + nxip = len(obj[2]) + if nxip > _MAXINT32: + raise ValueError('txid_snapshot value is too long') + + xmin = obj[0] + xmax = obj[1] + + for i in range(nxip): + xip_buf.write_int64( + cpython.PyLong_AsUnsignedLongLong(obj[2][i])) + + buf.write_int32(20 + xip_buf.len()) + + buf.write_int32(nxip) + buf.write_int64(xmin) + buf.write_int64(xmax) + buf.write_buffer(xip_buf) + + +cdef gaussdb_snapshot_decode(CodecContext settings, FRBuffer *buf): + cdef: + int32_t nxip + uint64_t xmin + uint64_t xmax + tuple xip_tup + int32_t i + object xip + + nxip = hton.unpack_int32(frb_read(buf, 4)) + xmin = hton.unpack_int64(frb_read(buf, 8)) + xmax = hton.unpack_int64(frb_read(buf, 8)) + + xip_tup = cpython.PyTuple_New(nxip) + for i in range(nxip): + xip = cpython.PyLong_FromUnsignedLongLong( + hton.unpack_int64(frb_read(buf, 8))) + cpython.Py_INCREF(xip) + cpython.PyTuple_SET_ITEM(xip_tup, i, xip) + + return (xmin, xmax, xip_tup) diff --git a/async_gaussdb/gaussdbproto/codecs/geometry.pyx b/async_gaussdb/gaussdbproto/codecs/geometry.pyx new file mode 100644 index 00000000..1f2495f9 --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/geometry.pyx @@ -0,0 +1,164 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef inline _encode_points(WriteBuffer wbuf, object points): + cdef object point + + for point in points: + wbuf.write_double(point[0]) + wbuf.write_double(point[1]) + + +cdef inline _decode_points(FRBuffer *buf): + cdef: + int32_t npts = hton.unpack_int32(frb_read(buf, 4)) + pts = cpython.PyTuple_New(npts) + int32_t i + object point + double x + double y + + for i in range(npts): + x = hton.unpack_double(frb_read(buf, 8)) + y = hton.unpack_double(frb_read(buf, 8)) + point = gaussdbproto_types.Point(x, y) + cpython.Py_INCREF(point) + cpython.PyTuple_SET_ITEM(pts, i, point) + + return pts + + +cdef box_encode(CodecContext settings, WriteBuffer wbuf, obj): + wbuf.write_int32(32) + _encode_points(wbuf, (obj[0], obj[1])) + + +cdef box_decode(CodecContext settings, FRBuffer *buf): + cdef: + double high_x = hton.unpack_double(frb_read(buf, 8)) + double high_y = hton.unpack_double(frb_read(buf, 8)) + double low_x = hton.unpack_double(frb_read(buf, 8)) + double low_y = hton.unpack_double(frb_read(buf, 8)) + + return gaussdbproto_types.Box( + gaussdbproto_types.Point(high_x, high_y), + gaussdbproto_types.Point(low_x, low_y)) + + +cdef line_encode(CodecContext settings, WriteBuffer wbuf, obj): + wbuf.write_int32(24) + wbuf.write_double(obj[0]) + wbuf.write_double(obj[1]) + wbuf.write_double(obj[2]) + + +cdef line_decode(CodecContext settings, FRBuffer *buf): + cdef: + double A = hton.unpack_double(frb_read(buf, 8)) + double B = hton.unpack_double(frb_read(buf, 8)) + double C = hton.unpack_double(frb_read(buf, 8)) + + return gaussdbproto_types.Line(A, B, C) + + +cdef lseg_encode(CodecContext settings, WriteBuffer wbuf, obj): + wbuf.write_int32(32) + _encode_points(wbuf, (obj[0], obj[1])) + + +cdef lseg_decode(CodecContext settings, FRBuffer *buf): + cdef: + double p1_x = hton.unpack_double(frb_read(buf, 8)) + double p1_y = hton.unpack_double(frb_read(buf, 8)) + double p2_x = hton.unpack_double(frb_read(buf, 8)) + double p2_y = hton.unpack_double(frb_read(buf, 8)) + + return gaussdbproto_types.LineSegment((p1_x, p1_y), (p2_x, p2_y)) + + +cdef point_encode(CodecContext settings, WriteBuffer wbuf, obj): + wbuf.write_int32(16) + wbuf.write_double(obj[0]) + wbuf.write_double(obj[1]) + + +cdef point_decode(CodecContext settings, FRBuffer *buf): + cdef: + double x = hton.unpack_double(frb_read(buf, 8)) + double y = hton.unpack_double(frb_read(buf, 8)) + + return gaussdbproto_types.Point(x, y) + + +cdef path_encode(CodecContext settings, WriteBuffer wbuf, obj): + cdef: + int8_t is_closed = 0 + ssize_t npts + ssize_t encoded_len + int32_t i + + if cpython.PyTuple_Check(obj): + is_closed = 1 + elif cpython.PyList_Check(obj): + is_closed = 0 + elif isinstance(obj, gaussdbproto_types.Path): + is_closed = obj.is_closed + + npts = len(obj) + encoded_len = 1 + 4 + 16 * npts + if encoded_len > _MAXINT32: + raise ValueError('path value too long') + + wbuf.write_int32(encoded_len) + wbuf.write_byte(is_closed) + wbuf.write_int32(npts) + + _encode_points(wbuf, obj) + + +cdef path_decode(CodecContext settings, FRBuffer *buf): + cdef: + int8_t is_closed = (frb_read(buf, 1)[0]) + + return gaussdbproto_types.Path(*_decode_points(buf), is_closed=is_closed == 1) + + +cdef poly_encode(CodecContext settings, WriteBuffer wbuf, obj): + cdef: + bint is_closed + ssize_t npts + ssize_t encoded_len + int32_t i + + npts = len(obj) + encoded_len = 4 + 16 * npts + if encoded_len > _MAXINT32: + raise ValueError('polygon value too long') + + wbuf.write_int32(encoded_len) + wbuf.write_int32(npts) + _encode_points(wbuf, obj) + + +cdef poly_decode(CodecContext settings, FRBuffer *buf): + return gaussdbproto_types.Polygon(*_decode_points(buf)) + + +cdef circle_encode(CodecContext settings, WriteBuffer wbuf, obj): + wbuf.write_int32(24) + wbuf.write_double(obj[0][0]) + wbuf.write_double(obj[0][1]) + wbuf.write_double(obj[1]) + + +cdef circle_decode(CodecContext settings, FRBuffer *buf): + cdef: + double center_x = hton.unpack_double(frb_read(buf, 8)) + double center_y = hton.unpack_double(frb_read(buf, 8)) + double radius = hton.unpack_double(frb_read(buf, 8)) + + return gaussdbproto_types.Circle((center_x, center_y), radius) diff --git a/async_gaussdb/gaussdbproto/codecs/hstore.pyx b/async_gaussdb/gaussdbproto/codecs/hstore.pyx new file mode 100644 index 00000000..0a5489b6 --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/hstore.pyx @@ -0,0 +1,73 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef hstore_encode(CodecContext settings, WriteBuffer buf, obj): + cdef: + char *str + ssize_t size + ssize_t count + object items + WriteBuffer item_buf = WriteBuffer.new() + + count = len(obj) + if count > _MAXINT32: + raise ValueError('hstore value is too large') + item_buf.write_int32(count) + + if hasattr(obj, 'items'): + items = obj.items() + else: + items = obj + + for k, v in items: + if k is None: + raise ValueError('null value not allowed in hstore key') + as_gaussdb_string_and_size(settings, k, &str, &size) + item_buf.write_int32(size) + item_buf.write_cstr(str, size) + if v is None: + item_buf.write_int32(-1) + else: + as_gaussdb_string_and_size(settings, v, &str, &size) + item_buf.write_int32(size) + item_buf.write_cstr(str, size) + + buf.write_int32(item_buf.len()) + buf.write_buffer(item_buf) + + +cdef hstore_decode(CodecContext settings, FRBuffer *buf): + cdef: + dict result + uint32_t elem_count + int32_t elem_len + uint32_t i + str k + str v + + result = {} + + elem_count = hton.unpack_int32(frb_read(buf, 4)) + if elem_count == 0: + return result + + for i in range(elem_count): + elem_len = hton.unpack_int32(frb_read(buf, 4)) + if elem_len < 0: + raise ValueError('null value not allowed in hstore key') + + k = decode_gaussdb_string(settings, frb_read(buf, elem_len), elem_len) + + elem_len = hton.unpack_int32(frb_read(buf, 4)) + if elem_len < 0: + v = None + else: + v = decode_gaussdb_string(settings, frb_read(buf, elem_len), elem_len) + + result[k] = v + + return result diff --git a/async_gaussdb/gaussdbproto/codecs/int.pyx b/async_gaussdb/gaussdbproto/codecs/int.pyx new file mode 100644 index 00000000..99972444 --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/int.pyx @@ -0,0 +1,144 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef bool_encode(CodecContext settings, WriteBuffer buf, obj): + if not cpython.PyBool_Check(obj): + raise TypeError('a boolean is required (got type {})'.format( + type(obj).__name__)) + + buf.write_int32(1) + buf.write_byte(b'\x01' if obj is True else b'\x00') + + +cdef bool_decode(CodecContext settings, FRBuffer *buf): + return frb_read(buf, 1)[0] is b'\x01' + + +cdef int2_encode(CodecContext settings, WriteBuffer buf, obj): + cdef int overflow = 0 + cdef long val + + try: + if type(obj) is not int and hasattr(type(obj), '__int__'): + # Silence a Python warning about implicit __int__ + # conversion. + obj = int(obj) + val = cpython.PyLong_AsLong(obj) + except OverflowError: + overflow = 1 + + if overflow or val < INT16_MIN or val > INT16_MAX: + raise OverflowError('value out of int16 range') + + buf.write_int32(2) + buf.write_int16(val) + + +cdef int2_decode(CodecContext settings, FRBuffer *buf): + return cpython.PyLong_FromLong(hton.unpack_int16(frb_read(buf, 2))) + + +cdef int4_encode(CodecContext settings, WriteBuffer buf, obj): + cdef int overflow = 0 + cdef long val = 0 + + try: + if type(obj) is not int and hasattr(type(obj), '__int__'): + # Silence a Python warning about implicit __int__ + # conversion. + obj = int(obj) + val = cpython.PyLong_AsLong(obj) + except OverflowError: + overflow = 1 + + # "long" and "long long" have the same size for x86_64, need an extra check + if overflow or (sizeof(val) > 4 and (val < INT32_MIN or val > INT32_MAX)): + raise OverflowError('value out of int32 range') + + buf.write_int32(4) + buf.write_int32(val) + + +cdef int4_decode(CodecContext settings, FRBuffer *buf): + return cpython.PyLong_FromLong(hton.unpack_int32(frb_read(buf, 4))) + + +cdef uint4_encode(CodecContext settings, WriteBuffer buf, obj): + cdef int overflow = 0 + cdef unsigned long val = 0 + + try: + if type(obj) is not int and hasattr(type(obj), '__int__'): + # Silence a Python warning about implicit __int__ + # conversion. + obj = int(obj) + val = cpython.PyLong_AsUnsignedLong(obj) + except OverflowError: + overflow = 1 + + # "long" and "long long" have the same size for x86_64, need an extra check + if overflow or (sizeof(val) > 4 and val > UINT32_MAX): + raise OverflowError('value out of uint32 range') + + buf.write_int32(4) + buf.write_int32(val) + + +cdef uint4_decode(CodecContext settings, FRBuffer *buf): + return cpython.PyLong_FromUnsignedLong( + hton.unpack_int32(frb_read(buf, 4))) + + +cdef int8_encode(CodecContext settings, WriteBuffer buf, obj): + cdef int overflow = 0 + cdef long long val + + try: + if type(obj) is not int and hasattr(type(obj), '__int__'): + # Silence a Python warning about implicit __int__ + # conversion. + obj = int(obj) + val = cpython.PyLong_AsLongLong(obj) + except OverflowError: + overflow = 1 + + # Just in case for systems with "long long" bigger than 8 bytes + if overflow or (sizeof(val) > 8 and (val < INT64_MIN or val > INT64_MAX)): + raise OverflowError('value out of int64 range') + + buf.write_int32(8) + buf.write_int64(val) + + +cdef int8_decode(CodecContext settings, FRBuffer *buf): + return cpython.PyLong_FromLongLong(hton.unpack_int64(frb_read(buf, 8))) + + +cdef uint8_encode(CodecContext settings, WriteBuffer buf, obj): + cdef int overflow = 0 + cdef unsigned long long val = 0 + + try: + if type(obj) is not int and hasattr(type(obj), '__int__'): + # Silence a Python warning about implicit __int__ + # conversion. + obj = int(obj) + val = cpython.PyLong_AsUnsignedLongLong(obj) + except OverflowError: + overflow = 1 + + # Just in case for systems with "long long" bigger than 8 bytes + if overflow or (sizeof(val) > 8 and val > UINT64_MAX): + raise OverflowError('value out of uint64 range') + + buf.write_int32(8) + buf.write_int64(val) + + +cdef uint8_decode(CodecContext settings, FRBuffer *buf): + return cpython.PyLong_FromUnsignedLongLong( + hton.unpack_int64(frb_read(buf, 8))) \ No newline at end of file diff --git a/async_gaussdb/gaussdbproto/codecs/json.pyx b/async_gaussdb/gaussdbproto/codecs/json.pyx new file mode 100644 index 00000000..49899050 --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/json.pyx @@ -0,0 +1,57 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef jsonb_encode(CodecContext settings, WriteBuffer buf, obj): + cdef: + char *str + ssize_t size + + if settings.is_encoding_json(): + obj = settings.get_json_encoder().encode(obj) + + as_gaussdb_string_and_size(settings, obj, &str, &size) + + if size > 0x7fffffff - 1: + raise ValueError('string too long') + + buf.write_int32(size + 1) + buf.write_byte(1) # JSONB format version + buf.write_cstr(str, size) + + +cdef jsonb_decode(CodecContext settings, FRBuffer *buf): + cdef uint8_t format = (frb_read(buf, 1)[0]) + + if format != 1: + raise ValueError('unexpected JSONB format: {}'.format(format)) + + rv = text_decode(settings, buf) + + if settings.is_decoding_json(): + rv = settings.get_json_decoder().decode(rv) + + return rv + + +cdef json_encode(CodecContext settings, WriteBuffer buf, obj): + cdef: + char *str + ssize_t size + + if settings.is_encoding_json(): + obj = settings.get_json_encoder().encode(obj) + + text_encode(settings, buf, obj) + + +cdef json_decode(CodecContext settings, FRBuffer *buf): + rv = text_decode(settings, buf) + + if settings.is_decoding_json(): + rv = settings.get_json_decoder().decode(rv) + + return rv diff --git a/async_gaussdb/gaussdbproto/codecs/jsonpath.pyx b/async_gaussdb/gaussdbproto/codecs/jsonpath.pyx new file mode 100644 index 00000000..279286e2 --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/jsonpath.pyx @@ -0,0 +1,29 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef jsonpath_encode(CodecContext settings, WriteBuffer buf, obj): + cdef: + char *str + ssize_t size + + as_gaussdb_string_and_size(settings, obj, &str, &size) + + if size > 0x7fffffff - 1: + raise ValueError('string too long') + + buf.write_int32(size + 1) + buf.write_byte(1) # jsonpath format version + buf.write_cstr(str, size) + + +cdef jsonpath_decode(CodecContext settings, FRBuffer *buf): + cdef uint8_t format = (frb_read(buf, 1)[0]) + + if format != 1: + raise ValueError('unexpected jsonpath format: {}'.format(format)) + + return text_decode(settings, buf) diff --git a/async_gaussdb/gaussdbproto/codecs/misc.pyx b/async_gaussdb/gaussdbproto/codecs/misc.pyx new file mode 100644 index 00000000..99b19c99 --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/misc.pyx @@ -0,0 +1,16 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef void_encode(CodecContext settings, WriteBuffer buf, obj): + # Void is zero bytes + buf.write_int32(0) + + +cdef void_decode(CodecContext settings, FRBuffer *buf): + # Do nothing; void will be passed as NULL so this function + # will never be called. + pass diff --git a/async_gaussdb/gaussdbproto/codecs/network.pyx b/async_gaussdb/gaussdbproto/codecs/network.pyx new file mode 100644 index 00000000..906e1190 --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/network.pyx @@ -0,0 +1,139 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +import ipaddress + + +# defined in GaussDBsql/src/include/inet.h +# +DEF GAUSSDBSQL_AF_INET = 2 # AF_INET +DEF GAUSSDBSQL_AF_INET6 = 3 # AF_INET + 1 + + +_ipaddr = ipaddress.ip_address +_ipiface = ipaddress.ip_interface +_ipnet = ipaddress.ip_network + + +cdef inline uint8_t _ip_max_prefix_len(int32_t family): + # Maximum number of bits in the network prefix of the specified + # IP protocol version. + if family == GAUSSDBSQL_AF_INET: + return 32 + else: + return 128 + + +cdef inline int32_t _ip_addr_len(int32_t family): + # Length of address in bytes for the specified IP protocol version. + if family == GAUSSDBSQL_AF_INET: + return 4 + else: + return 16 + + +cdef inline int8_t _ver_to_family(int32_t version): + if version == 4: + return GAUSSDBSQL_AF_INET + else: + return GAUSSDBSQL_AF_INET6 + + +cdef inline _net_encode(WriteBuffer buf, int8_t family, uint32_t bits, + int8_t is_cidr, bytes addr): + + cdef: + char *addrbytes + ssize_t addrlen + + cpython.PyBytes_AsStringAndSize(addr, &addrbytes, &addrlen) + + buf.write_int32(4 + addrlen) + buf.write_byte(family) + buf.write_byte(bits) + buf.write_byte(is_cidr) + buf.write_byte(addrlen) + buf.write_cstr(addrbytes, addrlen) + + +cdef net_decode(CodecContext settings, FRBuffer *buf, bint as_cidr): + cdef: + int32_t family = frb_read(buf, 1)[0] + uint8_t bits = frb_read(buf, 1)[0] + int prefix_len + int32_t is_cidr = frb_read(buf, 1)[0] + int32_t addrlen = frb_read(buf, 1)[0] + bytes addr + uint8_t max_prefix_len = _ip_max_prefix_len(family) + + if is_cidr != as_cidr: + raise ValueError('unexpected CIDR flag set in non-cidr value') + + if family != GAUSSDBSQL_AF_INET and family != GAUSSDBSQL_AF_INET6: + raise ValueError('invalid address family in "{}" value'.format( + 'cidr' if is_cidr else 'inet' + )) + + max_prefix_len = _ip_max_prefix_len(family) + + if bits > max_prefix_len: + raise ValueError('invalid network prefix length in "{}" value'.format( + 'cidr' if is_cidr else 'inet' + )) + + if addrlen != _ip_addr_len(family): + raise ValueError('invalid address length in "{}" value'.format( + 'cidr' if is_cidr else 'inet' + )) + + addr = cpython.PyBytes_FromStringAndSize(frb_read(buf, addrlen), addrlen) + + if as_cidr or bits != max_prefix_len: + prefix_len = cpython.PyLong_FromLong(bits) + + if as_cidr: + return _ipnet((addr, prefix_len)) + else: + return _ipiface((addr, prefix_len)) + else: + return _ipaddr(addr) + + +cdef cidr_encode(CodecContext settings, WriteBuffer buf, obj): + cdef: + object ipnet + int8_t family + + ipnet = _ipnet(obj) + family = _ver_to_family(ipnet.version) + _net_encode(buf, family, ipnet.prefixlen, 1, ipnet.network_address.packed) + + +cdef cidr_decode(CodecContext settings, FRBuffer *buf): + return net_decode(settings, buf, True) + + +cdef inet_encode(CodecContext settings, WriteBuffer buf, obj): + cdef: + object ipaddr + int8_t family + + try: + ipaddr = _ipaddr(obj) + except ValueError: + # GaussDBSQL accepts *both* CIDR and host values + # for the host datatype. + ipaddr = _ipiface(obj) + family = _ver_to_family(ipaddr.version) + _net_encode(buf, family, ipaddr.network.prefixlen, 1, ipaddr.packed) + else: + family = _ver_to_family(ipaddr.version) + _net_encode(buf, family, _ip_max_prefix_len(family), 0, ipaddr.packed) + + +cdef inet_decode(CodecContext settings, FRBuffer *buf): + return net_decode(settings, buf, False) diff --git a/async_gaussdb/gaussdbproto/codecs/numeric.pyx b/async_gaussdb/gaussdbproto/codecs/numeric.pyx new file mode 100644 index 00000000..1aae66b2 --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/numeric.pyx @@ -0,0 +1,356 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +from libc.math cimport abs, log10 +from libc.stdio cimport snprintf + +import decimal + +# defined in GaussDBsql/src/backend/utils/adt/numeric.c +DEF DEC_DIGITS = 4 +DEF MAX_DSCALE = 0x3FFF +DEF NUMERIC_POS = 0x0000 +DEF NUMERIC_NEG = 0x4000 +DEF NUMERIC_NAN = 0xC000 +DEF NUMERIC_PINF = 0xD000 +DEF NUMERIC_NINF = 0xF000 + +_Dec = decimal.Decimal + + +cdef numeric_encode_text(CodecContext settings, WriteBuffer buf, obj): + text_encode(settings, buf, str(obj)) + + +cdef numeric_decode_text(CodecContext settings, FRBuffer *buf): + return _Dec(text_decode(settings, buf)) + + +cdef numeric_encode_binary(CodecContext settings, WriteBuffer buf, obj): + cdef: + object dec + object dt + int64_t exponent + int64_t i + int64_t j + tuple pydigits + int64_t num_pydigits + int16_t gaussdbdigit + int64_t num_gaussdbdigits + int16_t dscale + int64_t dweight + int64_t weight + uint16_t sign + int64_t padding_size = 0 + + if isinstance(obj, _Dec): + dec = obj + else: + dec = _Dec(obj) + + dt = dec.as_tuple() + + if dt.exponent == 'n' or dt.exponent == 'N': + # NaN + sign = NUMERIC_NAN + num_gaussdbdigits = 0 + weight = 0 + dscale = 0 + elif dt.exponent == 'F': + # Infinity + if dt.sign: + sign = NUMERIC_NINF + else: + sign = NUMERIC_PINF + num_gaussdbdigits = 0 + weight = 0 + dscale = 0 + else: + exponent = dt.exponent + if exponent < 0 and -exponent > MAX_DSCALE: + raise ValueError( + 'cannot encode Decimal value into numeric: ' + 'exponent is too small') + + if dt.sign: + sign = NUMERIC_NEG + else: + sign = NUMERIC_POS + + pydigits = dt.digits + num_pydigits = len(pydigits) + + dweight = num_pydigits + exponent - 1 + if dweight >= 0: + weight = (dweight + DEC_DIGITS) // DEC_DIGITS - 1 + else: + weight = -((-dweight - 1) // DEC_DIGITS + 1) + + if weight > 2 ** 16 - 1: + raise ValueError( + 'cannot encode Decimal value into numeric: ' + 'exponent is too large') + + padding_size = \ + (weight + 1) * DEC_DIGITS - (dweight + 1) + num_gaussdbdigits = \ + (num_pydigits + padding_size + DEC_DIGITS - 1) // DEC_DIGITS + + if num_gaussdbdigits > 2 ** 16 - 1: + raise ValueError( + 'cannot encode Decimal value into numeric: ' + 'number of digits is too large') + + # Pad decimal digits to provide room for correct GaussDB + # digit alignment in the digit computation loop. + pydigits = (0,) * DEC_DIGITS + pydigits + (0,) * DEC_DIGITS + + if exponent < 0: + if -exponent > MAX_DSCALE: + raise ValueError( + 'cannot encode Decimal value into numeric: ' + 'exponent is too small') + dscale = -exponent + else: + dscale = 0 + + buf.write_int32(2 + 2 + 2 + 2 + 2 * num_gaussdbdigits) + buf.write_int16(num_gaussdbdigits) + buf.write_int16(weight) + buf.write_int16(sign) + buf.write_int16(dscale) + + j = DEC_DIGITS - padding_size + + for i in range(num_gaussdbdigits): + gaussdbdigit = (pydigits[j] * 1000 + pydigits[j + 1] * 100 + + pydigits[j + 2] * 10 + pydigits[j + 3]) + j += DEC_DIGITS + buf.write_int16(gaussdbdigit) + + +# The decoding strategy here is to form a string representation of +# the numeric var, as it is faster than passing an iterable of digits. +# For this reason the below code is pure overhead and is ~25% slower +# than the simple text decoder above. That said, we need the binary +# decoder to support binary COPY with numeric values. +cdef numeric_decode_binary_ex( + CodecContext settings, + FRBuffer *buf, + bint trail_fract_zero, +): + cdef: + uint16_t num_gaussdbdigits = hton.unpack_int16(frb_read(buf, 2)) + int16_t weight = hton.unpack_int16(frb_read(buf, 2)) + uint16_t sign = hton.unpack_int16(frb_read(buf, 2)) + uint16_t dscale = hton.unpack_int16(frb_read(buf, 2)) + int16_t gaussdbdigit0 + ssize_t i + int16_t gaussdbdigit + object pydigits + ssize_t num_pydigits + ssize_t actual_num_pydigits + ssize_t buf_size + int64_t exponent + int64_t abs_exponent + ssize_t exponent_chars + ssize_t front_padding = 0 + ssize_t num_fract_digits + ssize_t trailing_fract_zeros_adj + char smallbuf[_NUMERIC_DECODER_SMALLBUF_SIZE] + char *charbuf + char *bufptr + bint buf_allocated = False + + if sign == NUMERIC_NAN: + # Not-a-number + return _Dec('NaN') + elif sign == NUMERIC_PINF: + # +Infinity + return _Dec('Infinity') + elif sign == NUMERIC_NINF: + # -Infinity + return _Dec('-Infinity') + + if num_gaussdbdigits == 0: + # Zero + return _Dec('0e-' + str(dscale)) + + gaussdbdigit0 = hton.unpack_int16(frb_read(buf, 2)) + if weight >= 0: + if gaussdbdigit0 < 10: + front_padding = 3 + elif gaussdbdigit0 < 100: + front_padding = 2 + elif gaussdbdigit0 < 1000: + front_padding = 1 + + # The number of fractional decimal digits actually encoded in + # base-DEC_DEIGITS digits sent by GaussDB. + num_fract_digits = (num_gaussdbdigits - weight - 1) * DEC_DIGITS + + # The trailing zero adjustment necessary to obtain exactly + # dscale number of fractional digits in output. May be negative, + # which indicates that trailing zeros in the last input digit + # should be discarded. + trailing_fract_zeros_adj = dscale - num_fract_digits + + # Maximum possible number of decimal digits in base 10. + # The actual number might be up to 3 digits smaller due to + # leading zeros in first input digit. + num_pydigits = num_gaussdbdigits * DEC_DIGITS + if trailing_fract_zeros_adj > 0: + num_pydigits += trailing_fract_zeros_adj + + # Exponent. + exponent = (weight + 1) * DEC_DIGITS - front_padding + abs_exponent = abs(exponent) + if abs_exponent != 0: + # Number of characters required to render absolute exponent value + # in decimal. + exponent_chars = log10(abs_exponent) + 1 + else: + exponent_chars = 0 + + # Output buffer size. + buf_size = ( + 1 + # sign + 1 + # leading zero + 1 + # decimal dot + num_pydigits + # digits + 1 + # possible trailing zero padding + 2 + # exponent indicator (E-,E+) + exponent_chars + # exponent + 1 # null terminator char + ) + + if buf_size > _NUMERIC_DECODER_SMALLBUF_SIZE: + charbuf = cpython.PyMem_Malloc(buf_size) + buf_allocated = True + else: + charbuf = smallbuf + + try: + bufptr = charbuf + + if sign == NUMERIC_NEG: + bufptr[0] = b'-' + bufptr += 1 + + bufptr[0] = b'0' + bufptr[1] = b'.' + bufptr += 2 + + if weight >= 0: + bufptr = _unpack_digit_stripping_lzeros(bufptr, gaussdbdigit0) + else: + bufptr = _unpack_digit(bufptr, gaussdbdigit0) + + for i in range(1, num_gaussdbdigits): + gaussdbdigit = hton.unpack_int16(frb_read(buf, 2)) + bufptr = _unpack_digit(bufptr, gaussdbdigit) + + if dscale: + if trailing_fract_zeros_adj > 0: + for i in range(trailing_fract_zeros_adj): + bufptr[i] = b'0' + + # If display scale is _less_ than the number of rendered digits, + # trailing_fract_zeros_adj will be negative and this will strip + # the excess trailing zeros. + bufptr += trailing_fract_zeros_adj + + if trail_fract_zero: + # Check if the number of rendered digits matches the exponent, + # and if so, add another trailing zero, so the result always + # appears with a decimal point. + actual_num_pydigits = bufptr - charbuf - 2 + if sign == NUMERIC_NEG: + actual_num_pydigits -= 1 + + if actual_num_pydigits == abs_exponent: + bufptr[0] = b'0' + bufptr += 1 + + if exponent != 0: + bufptr[0] = b'E' + if exponent < 0: + bufptr[1] = b'-' + else: + bufptr[1] = b'+' + bufptr += 2 + snprintf(bufptr, exponent_chars + 1, '%d', + abs_exponent) + bufptr += exponent_chars + + bufptr[0] = 0 + + pydigits = cpythonx.PyUnicode_FromString(charbuf) + + return _Dec(pydigits) + + finally: + if buf_allocated: + cpython.PyMem_Free(charbuf) + + +cdef numeric_decode_binary(CodecContext settings, FRBuffer *buf): + return numeric_decode_binary_ex(settings, buf, False) + + +cdef inline char *_unpack_digit_stripping_lzeros(char *buf, int64_t gaussdbdigit): + cdef: + int64_t d + bint significant + + d = gaussdbdigit // 1000 + significant = (d > 0) + if significant: + gaussdbdigit -= d * 1000 + buf[0] = (d + b'0') + buf += 1 + + d = gaussdbdigit // 100 + significant |= (d > 0) + if significant: + gaussdbdigit -= d * 100 + buf[0] = (d + b'0') + buf += 1 + + d = gaussdbdigit // 10 + significant |= (d > 0) + if significant: + gaussdbdigit -= d * 10 + buf[0] = (d + b'0') + buf += 1 + + buf[0] = (gaussdbdigit + b'0') + buf += 1 + + return buf + + +cdef inline char *_unpack_digit(char *buf, int64_t gaussdbdigit): + cdef: + int64_t d + + d = gaussdbdigit // 1000 + gaussdbdigit -= d * 1000 + buf[0] = (d + b'0') + + d = gaussdbdigit // 100 + gaussdbdigit -= d * 100 + buf[1] = (d + b'0') + + d = gaussdbdigit // 10 + gaussdbdigit -= d * 10 + buf[2] = (d + b'0') + + buf[3] = (gaussdbdigit + b'0') + buf += 4 + + return buf diff --git a/async_gaussdb/gaussdbproto/codecs/text.pyx b/async_gaussdb/gaussdbproto/codecs/text.pyx new file mode 100644 index 00000000..43206f8f --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/text.pyx @@ -0,0 +1,48 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef inline as_gaussdb_string_and_size( + CodecContext settings, obj, char **cstr, ssize_t *size): + + if not cpython.PyUnicode_Check(obj): + raise TypeError('expected str, got {}'.format(type(obj).__name__)) + + if settings.is_encoding_utf8(): + cstr[0] = cpythonx.PyUnicode_AsUTF8AndSize(obj, size) + else: + encoded = settings.get_text_codec().encode(obj)[0] + cpython.PyBytes_AsStringAndSize(encoded, cstr, size) + + if size[0] > 0x7fffffff: + raise ValueError('string too long') + + +cdef text_encode(CodecContext settings, WriteBuffer buf, obj): + cdef: + char *str + ssize_t size + + as_gaussdb_string_and_size(settings, obj, &str, &size) + + buf.write_int32(size) + buf.write_cstr(str, size) + + +cdef inline decode_gaussdb_string(CodecContext settings, const char* data, + ssize_t len): + + if settings.is_encoding_utf8(): + # decode UTF-8 in strict mode + return cpython.PyUnicode_DecodeUTF8(data, len, NULL) + else: + bytes = cpython.PyBytes_FromStringAndSize(data, len) + return settings.get_text_codec().decode(bytes)[0] + + +cdef text_decode(CodecContext settings, FRBuffer *buf): + cdef ssize_t buf_len = buf.len + return decode_gaussdb_string(settings, frb_read_all(buf), buf_len) diff --git a/async_gaussdb/gaussdbproto/codecs/tid.pyx b/async_gaussdb/gaussdbproto/codecs/tid.pyx new file mode 100644 index 00000000..b39bddc4 --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/tid.pyx @@ -0,0 +1,51 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef tid_encode(CodecContext settings, WriteBuffer buf, obj): + cdef int overflow = 0 + cdef unsigned long block, offset + + if not (cpython.PyTuple_Check(obj) or cpython.PyList_Check(obj)): + raise TypeError( + 'list or tuple expected (got type {})'.format(type(obj))) + + if len(obj) != 2: + raise ValueError( + 'invalid number of elements in tid tuple, expecting 2') + + try: + block = cpython.PyLong_AsUnsignedLong(obj[0]) + except OverflowError: + overflow = 1 + + # "long" and "long long" have the same size for x86_64, need an extra check + if overflow or (sizeof(block) > 4 and block > UINT32_MAX): + raise OverflowError('tuple id block value out of uint32 range') + + try: + offset = cpython.PyLong_AsUnsignedLong(obj[1]) + overflow = 0 + except OverflowError: + overflow = 1 + + if overflow or offset > 65535: + raise OverflowError('tuple id offset value out of uint16 range') + + buf.write_int32(6) + buf.write_int32(block) + buf.write_int16(offset) + + +cdef tid_decode(CodecContext settings, FRBuffer *buf): + cdef: + uint32_t block + uint16_t offset + + block = hton.unpack_int32(frb_read(buf, 4)) + offset = hton.unpack_int16(frb_read(buf, 2)) + + return (block, offset) diff --git a/async_gaussdb/gaussdbproto/codecs/uuid.pyx b/async_gaussdb/gaussdbproto/codecs/uuid.pyx new file mode 100644 index 00000000..3a163bf6 --- /dev/null +++ b/async_gaussdb/gaussdbproto/codecs/uuid.pyx @@ -0,0 +1,27 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef uuid_encode(CodecContext settings, WriteBuffer wbuf, obj): + cdef: + char buf[16] + + if type(obj) is gaussdb_UUID: + wbuf.write_int32(16) + wbuf.write_cstr((obj)._data, 16) + elif cpython.PyUnicode_Check(obj): + gaussdb_uuid_bytes_from_str(obj, buf) + wbuf.write_int32(16) + wbuf.write_cstr(buf, 16) + else: + bytea_encode(settings, wbuf, obj.bytes) + + +cdef uuid_decode(CodecContext settings, FRBuffer *buf): + if buf.len != 16: + raise TypeError( + f'cannot decode UUID, expected 16 bytes, got {buf.len}') + return gaussdb_uuid_from_buf(frb_read_all(buf)) diff --git a/async_gaussdb/gaussdbproto/consts.pxi b/async_gaussdb/gaussdbproto/consts.pxi new file mode 100644 index 00000000..dbce0851 --- /dev/null +++ b/async_gaussdb/gaussdbproto/consts.pxi @@ -0,0 +1,12 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +DEF _BUFFER_INITIAL_SIZE = 1024 +DEF _BUFFER_MAX_GROW = 65536 +DEF _BUFFER_FREELIST_SIZE = 256 +DEF _MAXINT32 = 2**31 - 1 +DEF _NUMERIC_DECODER_SMALLBUF_SIZE = 256 diff --git a/async_gaussdb/gaussdbproto/cpythonx.pxd b/async_gaussdb/gaussdbproto/cpythonx.pxd new file mode 100644 index 00000000..7b4f4f30 --- /dev/null +++ b/async_gaussdb/gaussdbproto/cpythonx.pxd @@ -0,0 +1,23 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +from cpython cimport Py_buffer + +cdef extern from "Python.h": + int PyUnicode_1BYTE_KIND + + int PyByteArray_CheckExact(object) + int PyByteArray_Resize(object, ssize_t) except -1 + object PyByteArray_FromStringAndSize(const char *, ssize_t) + char* PyByteArray_AsString(object) + + object PyUnicode_FromString(const char *u) + const char* PyUnicode_AsUTF8AndSize( + object unicode, ssize_t *size) except NULL + + object PyUnicode_FromKindAndData( + int kind, const void *buffer, Py_ssize_t size) diff --git a/async_gaussdb/gaussdbproto/debug.h b/async_gaussdb/gaussdbproto/debug.h new file mode 100644 index 00000000..b16878bc --- /dev/null +++ b/async_gaussdb/gaussdbproto/debug.h @@ -0,0 +1,3 @@ +#ifndef GAUSSDB_DEBUG +#define GAUSSDB_DEBUG 0 +#endif diff --git a/async_gaussdb/gaussdbproto/debug.pxd b/async_gaussdb/gaussdbproto/debug.pxd new file mode 100644 index 00000000..4dd2044b --- /dev/null +++ b/async_gaussdb/gaussdbproto/debug.pxd @@ -0,0 +1,10 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef extern from "debug.h": + + cdef int GAUSSDB_DEBUG diff --git a/async_gaussdb/gaussdbproto/frb.pxd b/async_gaussdb/gaussdbproto/frb.pxd new file mode 100644 index 00000000..9ff8d10d --- /dev/null +++ b/async_gaussdb/gaussdbproto/frb.pxd @@ -0,0 +1,48 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef: + + struct FRBuffer: + const char* buf + ssize_t len + + inline ssize_t frb_get_len(FRBuffer *frb): + return frb.len + + inline void frb_set_len(FRBuffer *frb, ssize_t new_len): + frb.len = new_len + + inline void frb_init(FRBuffer *frb, const char *buf, ssize_t len): + frb.buf = buf + frb.len = len + + inline const char* frb_read(FRBuffer *frb, ssize_t n) except NULL: + cdef const char *result + + frb_check(frb, n) + + result = frb.buf + frb.buf += n + frb.len -= n + + return result + + inline const char* frb_read_all(FRBuffer *frb): + cdef const char *result + result = frb.buf + frb.buf += frb.len + frb.len = 0 + return result + + inline FRBuffer *frb_slice_from(FRBuffer *frb, + FRBuffer* source, ssize_t len): + frb.buf = frb_read(source, len) + frb.len = len + return frb + + object frb_check(FRBuffer *frb, ssize_t n) diff --git a/async_gaussdb/gaussdbproto/frb.pyx b/async_gaussdb/gaussdbproto/frb.pyx new file mode 100644 index 00000000..f11f6b92 --- /dev/null +++ b/async_gaussdb/gaussdbproto/frb.pyx @@ -0,0 +1,12 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef object frb_check(FRBuffer *frb, ssize_t n): + if n > frb.len: + raise AssertionError( + f'insufficient data in buffer: requested {n} ' + f'remaining {frb.len}') diff --git a/async_gaussdb/gaussdbproto/gaussdbproto.c b/async_gaussdb/gaussdbproto/gaussdbproto.c new file mode 100644 index 00000000..7d48f7e4 --- /dev/null +++ b/async_gaussdb/gaussdbproto/gaussdbproto.c @@ -0,0 +1,52585 @@ +/* Generated by Cython 3.1.2 */ + +/* BEGIN: Cython Metadata +{ + "distutils": { + "depends": [ + "async_gaussdb/gaussdbproto/debug.h", + "async_gaussdb/gaussdbproto/tohex.h" + ], + "extra_compile_args": [ + "-O2", + "-fsigned-char", + "-Wall", + "-Wsign-compare", + "-Wconversion" + ], + "include_dirs": [ + "async_gaussdb/gaussdbproto" + ], + "name": "async_gaussdb.gaussdbproto.gaussdbproto", + "sources": [ + "async_gaussdb/gaussdbproto/gaussdbproto.pyx" + ] + }, + "module_name": "async_gaussdb.gaussdbproto.gaussdbproto" +} +END: Cython Metadata */ + +#ifndef PY_SSIZE_T_CLEAN +#define PY_SSIZE_T_CLEAN +#endif /* PY_SSIZE_T_CLEAN */ +/* InitLimitedAPI */ +#if defined(Py_LIMITED_API) && !defined(CYTHON_LIMITED_API) + #define CYTHON_LIMITED_API 1 +#endif + +#include "Python.h" +#ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. +#elif PY_VERSION_HEX < 0x03080000 + #error Cython requires Python 3.8+. +#else +#define __PYX_ABI_VERSION "3_1_2" +#define CYTHON_HEX_VERSION 0x030102F0 +#define CYTHON_FUTURE_DIVISION 1 +/* CModulePreamble */ +#include +#ifndef offsetof + #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) +#endif +#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS) + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif + #ifndef __fastcall + #define __fastcall + #endif +#endif +#ifndef DL_IMPORT + #define DL_IMPORT(t) t +#endif +#ifndef DL_EXPORT + #define DL_EXPORT(t) t +#endif +#define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #define HAVE_LONG_LONG +#endif +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#ifndef Py_HUGE_VAL + #define Py_HUGE_VAL HUGE_VAL +#endif +#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX +#if defined(GRAALVM_PYTHON) + /* For very preliminary testing purposes. Most variables are set the same as PyPy. + The existence of this section does not imply that anything works or is even tested */ + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 1 + #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_ASSUME_SAFE_SIZE + #define CYTHON_ASSUME_SAFE_SIZE 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_SYS_MONITORING + #define CYTHON_USE_SYS_MONITORING 0 + #undef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #undef CYTHON_USE_AM_SEND + #define CYTHON_USE_AM_SEND 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 1 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(PYPY_VERSION) + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #undef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 1 + #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1 + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #ifndef CYTHON_ASSUME_SAFE_SIZE + #define CYTHON_ASSUME_SAFE_SIZE 1 + #endif + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 0 + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #if PY_VERSION_HEX < 0x03090000 + #undef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 0 + #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT) + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #undef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #undef CYTHON_USE_SYS_MONITORING + #define CYTHON_USE_SYS_MONITORING 0 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE (PYPY_VERSION_NUM >= 0x07030C00) + #endif + #undef CYTHON_USE_AM_SEND + #define CYTHON_USE_AM_SEND 0 + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC (PYPY_VERSION_NUM >= 0x07031100) + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#elif defined(CYTHON_LIMITED_API) + #ifdef Py_LIMITED_API + #undef __PYX_LIMITED_VERSION_HEX + #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API + #endif + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 + #define CYTHON_COMPILING_IN_LIMITED_API 1 + #define CYTHON_COMPILING_IN_GRAAL 0 + #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0 + #undef CYTHON_CLINE_IN_TRACEBACK + #define CYTHON_CLINE_IN_TRACEBACK 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 1 + #undef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 0 + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #undef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 0 + #ifndef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #endif + #undef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 0 + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #ifndef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0 + #endif + #undef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 0 + #undef CYTHON_ASSUME_SAFE_SIZE + #define CYTHON_ASSUME_SAFE_SIZE 0 + #undef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 0 + #undef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 0 + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #undef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL (__PYX_LIMITED_VERSION_HEX >= 0x030C0000) + #undef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 0 + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #undef CYTHON_USE_SYS_MONITORING + #define CYTHON_USE_SYS_MONITORING 0 + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 0 + #endif + #ifndef CYTHON_USE_AM_SEND + #define CYTHON_USE_AM_SEND (__PYX_LIMITED_VERSION_HEX >= 0x030A0000) + #endif + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 + #endif + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 +#else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 + #define CYTHON_COMPILING_IN_LIMITED_API 0 + #define CYTHON_COMPILING_IN_GRAAL 0 + #ifdef Py_GIL_DISABLED + #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 1 + #else + #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0 + #endif + #if PY_VERSION_HEX < 0x030A0000 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #elif !defined(CYTHON_USE_TYPE_SLOTS) + #define CYTHON_USE_TYPE_SLOTS 1 + #endif + #ifndef CYTHON_USE_TYPE_SPECS + #define CYTHON_USE_TYPE_SPECS 0 + #endif + #ifndef CYTHON_USE_PYTYPE_LOOKUP + #define CYTHON_USE_PYTYPE_LOOKUP 1 + #endif + #ifndef CYTHON_USE_PYLONG_INTERNALS + #define CYTHON_USE_PYLONG_INTERNALS 1 + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + #undef CYTHON_USE_PYLIST_INTERNALS + #define CYTHON_USE_PYLIST_INTERNALS 0 + #elif !defined(CYTHON_USE_PYLIST_INTERNALS) + #define CYTHON_USE_PYLIST_INTERNALS 1 + #endif + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) + #define CYTHON_USE_UNICODE_WRITER 1 + #endif + #ifndef CYTHON_AVOID_BORROWED_REFS + #define CYTHON_AVOID_BORROWED_REFS 0 + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1 + #elif !defined(CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS) + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0 + #endif + #ifndef CYTHON_ASSUME_SAFE_MACROS + #define CYTHON_ASSUME_SAFE_MACROS 1 + #endif + #ifndef CYTHON_ASSUME_SAFE_SIZE + #define CYTHON_ASSUME_SAFE_SIZE 1 + #endif + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif + #ifndef CYTHON_FAST_THREAD_STATE + #define CYTHON_FAST_THREAD_STATE 1 + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + #undef CYTHON_FAST_GIL + #define CYTHON_FAST_GIL 0 + #elif !defined(CYTHON_FAST_GIL) + #define CYTHON_FAST_GIL (PY_VERSION_HEX < 0x030C00A6) + #endif + #ifndef CYTHON_METH_FASTCALL + #define CYTHON_METH_FASTCALL 1 + #endif + #ifndef CYTHON_FAST_PYCALL + #define CYTHON_FAST_PYCALL 1 + #endif + #ifndef CYTHON_PEP487_INIT_SUBCLASS + #define CYTHON_PEP487_INIT_SUBCLASS 1 + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT 1 + #endif + #ifndef CYTHON_USE_MODULE_STATE + #define CYTHON_USE_MODULE_STATE 0 + #endif + #ifndef CYTHON_USE_SYS_MONITORING + #define CYTHON_USE_SYS_MONITORING (PY_VERSION_HEX >= 0x030d00B1) + #endif + #ifndef CYTHON_USE_TP_FINALIZE + #define CYTHON_USE_TP_FINALIZE 1 + #endif + #ifndef CYTHON_USE_AM_SEND + #define CYTHON_USE_AM_SEND 1 + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + #undef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS 0 + #elif !defined(CYTHON_USE_DICT_VERSIONS) + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX < 0x030C00A5 && !CYTHON_USE_MODULE_STATE) + #endif + #ifndef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 1 + #endif + #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC + #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 + #endif + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS (!CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) + #endif +#endif +#ifndef CYTHON_FAST_PYCCALL +#define CYTHON_FAST_PYCCALL CYTHON_FAST_PYCALL +#endif +#ifndef CYTHON_VECTORCALL +#if CYTHON_COMPILING_IN_LIMITED_API +#define CYTHON_VECTORCALL (__PYX_LIMITED_VERSION_HEX >= 0x030C0000) +#else +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) +#endif +#endif +#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) +#if CYTHON_USE_PYLONG_INTERNALS + #undef SHIFT + #undef BASE + #undef MASK + #ifdef SIZEOF_VOID_P + enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; + #endif +#endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) && _MSC_VER >= 1400 + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifndef CYTHON_UNUSED + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(maybe_unused) + #define CYTHON_UNUSED [[maybe_unused]] + #endif + #endif + #endif +#endif +#ifndef CYTHON_UNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) +# define CYTHON_UNUSED __attribute__ ((__unused__)) +# else +# define CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_UNUSED_VAR +# if defined(__cplusplus) + template void CYTHON_UNUSED_VAR( const T& ) { } +# else +# define CYTHON_UNUSED_VAR(x) (void)(x) +# endif +#endif +#ifndef CYTHON_MAYBE_UNUSED_VAR + #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x) +#endif +#ifndef CYTHON_NCP_UNUSED +# if CYTHON_COMPILING_IN_CPYTHON && !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +# define CYTHON_NCP_UNUSED +# else +# define CYTHON_NCP_UNUSED CYTHON_UNUSED +# endif +#endif +#ifndef CYTHON_USE_CPP_STD_MOVE + #if defined(__cplusplus) && (\ + __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)) + #define CYTHON_USE_CPP_STD_MOVE 1 + #else + #define CYTHON_USE_CPP_STD_MOVE 0 + #endif +#endif +#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + #endif + #endif + #if _MSC_VER < 1300 + #ifdef _WIN64 + typedef unsigned long long __pyx_uintptr_t; + #else + typedef unsigned int __pyx_uintptr_t; + #endif + #else + #ifdef _WIN64 + typedef unsigned __int64 __pyx_uintptr_t; + #else + typedef unsigned __int32 __pyx_uintptr_t; + #endif + #endif +#else + #include + typedef uintptr_t __pyx_uintptr_t; +#endif +#ifndef CYTHON_FALLTHROUGH + #if defined(__cplusplus) + /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 + * but leads to warnings with -pedantic, since it is a C++17 feature */ + #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L) + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] + #endif + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif + #if defined(__clang__) && defined(__apple_build_version__) + #if __apple_build_version__ < 7000000 + #undef CYTHON_FALLTHROUGH + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif +#ifndef Py_UNREACHABLE + #define Py_UNREACHABLE() assert(0); abort() +#endif +#ifdef __cplusplus + template + struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);}; + #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL::value) +#else + #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) +#endif +#if CYTHON_COMPILING_IN_PYPY == 1 + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) +#else + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) +#endif +#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) + +/* CInitCode */ +#ifndef CYTHON_INLINE + #if defined(__clang__) + #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) + #elif defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif + +/* PythonCompatibility */ +#define __PYX_BUILD_PY_SSIZE_T "n" +#define CYTHON_FORMAT_SSIZE_T "z" +#define __Pyx_BUILTIN_MODULE_NAME "builtins" +#define __Pyx_DefaultClassType PyType_Type +#if CYTHON_COMPILING_IN_LIMITED_API + #ifndef CO_OPTIMIZED + static int CO_OPTIMIZED; + #endif + #ifndef CO_NEWLOCALS + static int CO_NEWLOCALS; + #endif + #ifndef CO_VARARGS + static int CO_VARARGS; + #endif + #ifndef CO_VARKEYWORDS + static int CO_VARKEYWORDS; + #endif + #ifndef CO_ASYNC_GENERATOR + static int CO_ASYNC_GENERATOR; + #endif + #ifndef CO_GENERATOR + static int CO_GENERATOR; + #endif + #ifndef CO_COROUTINE + static int CO_COROUTINE; + #endif +#else + #ifndef CO_COROUTINE + #define CO_COROUTINE 0x80 + #endif + #ifndef CO_ASYNC_GENERATOR + #define CO_ASYNC_GENERATOR 0x200 + #endif +#endif +static int __Pyx_init_co_variables(void); +#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE) + #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type) +#else + #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is) + #define __Pyx_Py_Is(x, y) Py_Is(x, y) +#else + #define __Pyx_Py_Is(x, y) ((x) == (y)) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone) + #define __Pyx_Py_IsNone(ob) Py_IsNone(ob) +#else + #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue) + #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob) +#else + #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True) +#endif +#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse) + #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob) +#else + #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False) +#endif +#define __Pyx_NoneAsNull(obj) (__Pyx_Py_IsNone(obj) ? NULL : (obj)) +#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o) +#else + #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o) +#endif +#ifndef Py_TPFLAGS_CHECKTYPES + #define Py_TPFLAGS_CHECKTYPES 0 +#endif +#ifndef Py_TPFLAGS_HAVE_INDEX + #define Py_TPFLAGS_HAVE_INDEX 0 +#endif +#ifndef Py_TPFLAGS_HAVE_NEWBUFFER + #define Py_TPFLAGS_HAVE_NEWBUFFER 0 +#endif +#ifndef Py_TPFLAGS_HAVE_FINALIZE + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif +#ifndef Py_TPFLAGS_SEQUENCE + #define Py_TPFLAGS_SEQUENCE 0 +#endif +#ifndef Py_TPFLAGS_MAPPING + #define Py_TPFLAGS_MAPPING 0 +#endif +#ifndef METH_STACKLESS + #define METH_STACKLESS 0 +#endif +#ifndef METH_FASTCALL + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, + Py_ssize_t nargs, PyObject *kwnames); +#else + #if PY_VERSION_HEX >= 0x030d00A4 + # define __Pyx_PyCFunctionFast PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords + #else + # define __Pyx_PyCFunctionFast _PyCFunctionFast + # define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords + #endif +#endif +#if CYTHON_METH_FASTCALL + #define __Pyx_METH_FASTCALL METH_FASTCALL + #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast + #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords +#else + #define __Pyx_METH_FASTCALL METH_VARARGS + #define __Pyx_PyCFunction_FastCall PyCFunction + #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords +#endif +#if CYTHON_VECTORCALL + #define __pyx_vectorcallfunc vectorcallfunc + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET + #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) +#elif CYTHON_BACKPORT_VECTORCALL + typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, + size_t nargsf, PyObject *kwnames); + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) +#else + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) +#endif +#if PY_VERSION_HEX >= 0x030900B1 +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_CheckExact(func) +#else +#define __Pyx_PyCFunction_CheckExact(func) PyCFunction_Check(func) +#endif +#define __Pyx_CyOrPyCFunction_Check(func) PyCFunction_Check(func) +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) (((PyCFunctionObject*)(func))->m_ml->ml_meth) +#elif !CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func) PyCFunction_GET_FUNCTION(func) +#endif +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_CyOrPyCFunction_GET_FLAGS(func) (((PyCFunctionObject*)(func))->m_ml->ml_flags) +static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) { + return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self; +} +#endif +static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void (*cfunc)(void)) { +#if CYTHON_COMPILING_IN_LIMITED_API + return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc; +#else + return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +#endif +} +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) +#if __PYX_LIMITED_VERSION_HEX < 0x03090000 + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) + typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); +#else + #define __Pyx_PyType_FromModuleAndSpec(m, s, b) PyType_FromModuleAndSpec(m, s, b) + #define __Pyx_PyCMethod PyCMethod +#endif +#ifndef METH_METHOD + #define METH_METHOD 0x200 +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) + #define PyObject_Malloc(s) PyMem_Malloc(s) + #define PyObject_Free(p) PyMem_Free(p) + #define PyObject_Realloc(p) PyMem_Realloc(p) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) +#elif CYTHON_COMPILING_IN_GRAAL + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) _PyFrame_SetLineNumber((frame), (lineno)) +#else + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyThreadState_Current PyThreadState_Get() +#elif !CYTHON_FAST_THREAD_STATE + #define __Pyx_PyThreadState_Current PyThreadState_GET() +#elif PY_VERSION_HEX >= 0x030d00A1 + #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked() +#else + #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() +#endif +#if CYTHON_USE_MODULE_STATE +static CYTHON_INLINE void *__Pyx__PyModule_GetState(PyObject *op) +{ + void *result; + result = PyModule_GetState(op); + if (!result) + Py_FatalError("Couldn't find the module state"); + return result; +} +#define __Pyx_PyModule_GetState(o) (__pyx_mstatetype *)__Pyx__PyModule_GetState(o) +#else +#define __Pyx_PyModule_GetState(op) ((void)op,__pyx_mstate_global) +#endif +#define __Pyx_PyObject_GetSlot(obj, name, func_ctype) __Pyx_PyType_GetSlot(Py_TYPE((PyObject *) obj), name, func_ctype) +#define __Pyx_PyObject_TryGetSlot(obj, name, func_ctype) __Pyx_PyType_TryGetSlot(Py_TYPE(obj), name, func_ctype) +#define __Pyx_PyObject_GetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_GetSubSlot(Py_TYPE(obj), sub, name, func_ctype) +#define __Pyx_PyObject_TryGetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_TryGetSubSlot(Py_TYPE(obj), sub, name, func_ctype) +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((type)->name) + #define __Pyx_PyType_TryGetSlot(type, name, func_ctype) __Pyx_PyType_GetSlot(type, name, func_ctype) + #define __Pyx_PyType_GetSubSlot(type, sub, name, func_ctype) (((type)->sub) ? ((type)->sub->name) : NULL) + #define __Pyx_PyType_TryGetSubSlot(type, sub, name, func_ctype) __Pyx_PyType_GetSubSlot(type, sub, name, func_ctype) +#else + #define __Pyx_PyType_GetSlot(type, name, func_ctype) ((func_ctype) PyType_GetSlot((type), Py_##name)) + #define __Pyx_PyType_TryGetSlot(type, name, func_ctype)\ + ((__PYX_LIMITED_VERSION_HEX >= 0x030A0000 ||\ + (PyType_GetFlags(type) & Py_TPFLAGS_HEAPTYPE) || __Pyx_get_runtime_version() >= 0x030A0000) ?\ + __Pyx_PyType_GetSlot(type, name, func_ctype) : NULL) + #define __Pyx_PyType_GetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_GetSlot(obj, name, func_ctype) + #define __Pyx_PyType_TryGetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_TryGetSlot(obj, name, func_ctype) +#endif +#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) +#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) +#else +#define __Pyx_PyDict_NewPresized(n) PyDict_New() +#endif +#define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) +#define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_UNICODE_INTERNALS +#define __Pyx_PyDict_GetItemStrWithError(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) { + PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name); + if (res == NULL) PyErr_Clear(); + return res; +} +#elif !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000 +#define __Pyx_PyDict_GetItemStrWithError PyDict_GetItemWithError +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#else +static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) { +#if CYTHON_COMPILING_IN_PYPY + return PyDict_GetItem(dict, name); +#else + PyDictEntry *ep; + PyDictObject *mp = (PyDictObject*) dict; + long hash = ((PyStringObject *) name)->ob_shash; + assert(hash != -1); + ep = (mp->ma_lookup)(mp, name, hash); + if (ep == NULL) { + return NULL; + } + return ep->me_value; +#endif +} +#define __Pyx_PyDict_GetItemStr PyDict_GetItem +#endif +#if CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyType_GetFlags(tp) (((PyTypeObject *)tp)->tp_flags) + #define __Pyx_PyType_HasFeature(type, feature) ((__Pyx_PyType_GetFlags(type) & (feature)) != 0) +#else + #define __Pyx_PyType_GetFlags(tp) (PyType_GetFlags((PyTypeObject *)tp)) + #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) +#endif +#define __Pyx_PyObject_GetIterNextFunc(iterator) __Pyx_PyObject_GetSlot(iterator, tp_iternext, iternextfunc) +#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 +#define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ + PyTypeObject *type = Py_TYPE((PyObject*)obj);\ + assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ + PyObject_GC_Del(obj);\ + Py_DECREF(type);\ +} +#else +#define __Pyx_PyHeapTypeObject_GC_Del(obj) PyObject_GC_Del(obj) +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_PyUnicode_READY(op) (0) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((void)u, 1114111U) + #define __Pyx_PyUnicode_KIND(u) ((void)u, (0)) + #define __Pyx_PyUnicode_DATA(u) ((void*)u) + #define __Pyx_PyUnicode_READ(k, d, i) ((void)k, PyUnicode_ReadChar((PyObject*)(d), i)) + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GetLength(u)) +#else + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_READY(op) (0) + #else + #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) + #endif + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) + #define __Pyx_PyUnicode_KIND(u) ((int)PyUnicode_KIND(u)) + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, (Py_UCS4) ch) + #if PY_VERSION_HEX >= 0x030C0000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #else + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) + #endif + #endif +#endif +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) +#else + #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) + #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ + PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) +#endif +#if CYTHON_COMPILING_IN_PYPY + #if !defined(PyUnicode_DecodeUnicodeEscape) + #define PyUnicode_DecodeUnicodeEscape(s, size, errors) PyUnicode_Decode(s, size, "unicode_escape", errors) + #endif + #if !defined(PyUnicode_Contains) + #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) + #endif + #if !defined(PyByteArray_Check) + #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) + #endif + #if !defined(PyObject_Format) + #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) + #endif +#endif +#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) +#if CYTHON_COMPILING_IN_CPYTHON + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#else + #define __Pyx_PySequence_ListKeepNew(obj) PySequence_List(obj) +#endif +#ifndef PySet_CheckExact + #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type) +#endif +#if PY_VERSION_HEX >= 0x030900A4 + #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) +#else + #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) + #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) +#endif +#if CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i) + #elif CYTHON_COMPILING_IN_LIMITED_API || !CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PyList_GetItemRef(o, i) (likely((i) >= 0) ? PySequence_GetItem(o, i) : (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) + #else + #define __Pyx_PyList_GetItemRef(o, i) PySequence_ITEM(o, i) + #endif +#elif CYTHON_COMPILING_IN_LIMITED_API || !CYTHON_ASSUME_SAFE_MACROS + #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i) + #else + #define __Pyx_PyList_GetItemRef(o, i) __Pyx_XNewRef(PyList_GetItem(o, i)) + #endif +#else + #define __Pyx_PyList_GetItemRef(o, i) __Pyx_NewRef(PyList_GET_ITEM(o, i)) +#endif +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 +#define __Pyx_PyDict_GetItemRef(dict, key, result) PyDict_GetItemRef(dict, key, result) +#elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS +static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, PyObject **result) { + *result = PyObject_GetItem(dict, key); + if (*result == NULL) { + if (PyErr_ExceptionMatches(PyExc_KeyError)) { + PyErr_Clear(); + return 0; + } + return -1; + } + return 1; +} +#else +static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, PyObject **result) { + *result = PyDict_GetItemWithError(dict, key); + if (*result == NULL) { + return PyErr_Occurred() ? -1 : 0; + } + Py_INCREF(*result); + return 1; +} +#endif +#if defined(CYTHON_DEBUG_VISIT_CONST) && CYTHON_DEBUG_VISIT_CONST + #define __Pyx_VISIT_CONST(obj) Py_VISIT(obj) +#else + #define __Pyx_VISIT_CONST(obj) +#endif +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i) + #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyTuple_GET_ITEM(o, i) PyTuple_GET_ITEM(o, i) + #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0)) + #define __Pyx_PyList_GET_ITEM(o, i) PyList_GET_ITEM(o, i) +#else + #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i) + #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) + #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v) + #define __Pyx_PyTuple_GET_ITEM(o, i) PyTuple_GetItem(o, i) + #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v) + #define __Pyx_PyList_GET_ITEM(o, i) PyList_GetItem(o, i) +#endif +#if CYTHON_ASSUME_SAFE_SIZE + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o) + #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GET_LENGTH(o) +#else + #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o) + #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o) + #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o) + #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o) + #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) + #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GetLength(o) +#endif +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#else + static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *module = PyImport_AddModule(name); + Py_XINCREF(module); + return module; + } +#endif +#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_InternFromString) + #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) +#endif +#define __Pyx_PyLong_FromHash_t PyLong_FromSsize_t +#define __Pyx_PyLong_AsHash_t __Pyx_PyIndex_AsSsize_t +#if __PYX_LIMITED_VERSION_HEX >= 0x030A0000 + #define __Pyx_PySendResult PySendResult +#else + typedef enum { + PYGEN_RETURN = 0, + PYGEN_ERROR = -1, + PYGEN_NEXT = 1, + } __Pyx_PySendResult; +#endif +#if CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX < 0x030A00A3 + typedef __Pyx_PySendResult (*__Pyx_pyiter_sendfunc)(PyObject *iter, PyObject *value, PyObject **result); +#else + #define __Pyx_pyiter_sendfunc sendfunc +#endif +#if !CYTHON_USE_AM_SEND +#define __PYX_HAS_PY_AM_SEND 0 +#elif __PYX_LIMITED_VERSION_HEX >= 0x030A0000 +#define __PYX_HAS_PY_AM_SEND 1 +#else +#define __PYX_HAS_PY_AM_SEND 2 // our own backported implementation +#endif +#if __PYX_HAS_PY_AM_SEND < 2 + #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods +#else + typedef struct { + unaryfunc am_await; + unaryfunc am_aiter; + unaryfunc am_anext; + __Pyx_pyiter_sendfunc am_send; + } __Pyx_PyAsyncMethodsStruct; + #define __Pyx_SlotTpAsAsync(s) ((PyAsyncMethods*)(s)) +#endif +#if CYTHON_USE_AM_SEND && PY_VERSION_HEX < 0x030A00F0 + #define __Pyx_TPFLAGS_HAVE_AM_SEND (1UL << 21) +#else + #define __Pyx_TPFLAGS_HAVE_AM_SEND (0) +#endif +#if PY_VERSION_HEX >= 0x03090000 +#define __Pyx_PyInterpreterState_Get() PyInterpreterState_Get() +#else +#define __Pyx_PyInterpreterState_Get() PyThreadState_Get()->interp +#endif +#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030A0000 +#ifdef __cplusplus +extern "C" +#endif +PyAPI_FUNC(void *) PyMem_Calloc(size_t nelem, size_t elsize); +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static int __Pyx_init_co_variable(PyObject *inspect, const char* name, int *write_to) { + int value; + PyObject *py_value = PyObject_GetAttrString(inspect, name); + if (!py_value) return 0; + value = (int) PyLong_AsLong(py_value); + Py_DECREF(py_value); + *write_to = value; + return value != -1 || !PyErr_Occurred(); +} +static int __Pyx_init_co_variables(void) { + PyObject *inspect; + int result; + inspect = PyImport_ImportModule("inspect"); + result = +#if !defined(CO_OPTIMIZED) + __Pyx_init_co_variable(inspect, "CO_OPTIMIZED", &CO_OPTIMIZED) && +#endif +#if !defined(CO_NEWLOCALS) + __Pyx_init_co_variable(inspect, "CO_NEWLOCALS", &CO_NEWLOCALS) && +#endif +#if !defined(CO_VARARGS) + __Pyx_init_co_variable(inspect, "CO_VARARGS", &CO_VARARGS) && +#endif +#if !defined(CO_VARKEYWORDS) + __Pyx_init_co_variable(inspect, "CO_VARKEYWORDS", &CO_VARKEYWORDS) && +#endif +#if !defined(CO_ASYNC_GENERATOR) + __Pyx_init_co_variable(inspect, "CO_ASYNC_GENERATOR", &CO_ASYNC_GENERATOR) && +#endif +#if !defined(CO_GENERATOR) + __Pyx_init_co_variable(inspect, "CO_GENERATOR", &CO_GENERATOR) && +#endif +#if !defined(CO_COROUTINE) + __Pyx_init_co_variable(inspect, "CO_COROUTINE", &CO_COROUTINE) && +#endif + 1; + Py_DECREF(inspect); + return result ? 0 : -1; +} +#else +static int __Pyx_init_co_variables(void) { + return 0; // It's a limited API-only feature +} +#endif + +/* MathInitCode */ +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #ifndef _USE_MATH_DEFINES + #define _USE_MATH_DEFINES + #endif +#endif +#include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif +#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) +#define __Pyx_truncl trunc +#else +#define __Pyx_truncl truncl +#endif + +#ifndef CYTHON_CLINE_IN_TRACEBACK_RUNTIME +#define CYTHON_CLINE_IN_TRACEBACK_RUNTIME 0 +#endif +#ifndef CYTHON_CLINE_IN_TRACEBACK +#define CYTHON_CLINE_IN_TRACEBACK CYTHON_CLINE_IN_TRACEBACK_RUNTIME +#endif +#if CYTHON_CLINE_IN_TRACEBACK +#define __PYX_MARK_ERR_POS(f_index, lineno) { __pyx_filename = __pyx_f[f_index]; (void) __pyx_filename; __pyx_lineno = lineno; (void) __pyx_lineno; __pyx_clineno = __LINE__; (void) __pyx_clineno; } +#else +#define __PYX_MARK_ERR_POS(f_index, lineno) { __pyx_filename = __pyx_f[f_index]; (void) __pyx_filename; __pyx_lineno = lineno; (void) __pyx_lineno; (void) __pyx_clineno; } +#endif +#define __PYX_ERR(f_index, lineno, Ln_error) \ + { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } + +#ifdef CYTHON_EXTERN_C + #undef __PYX_EXTERN_C + #define __PYX_EXTERN_C CYTHON_EXTERN_C +#elif defined(__PYX_EXTERN_C) + #ifdef _MSC_VER + #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") + #else + #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. + #endif +#else + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#define __PYX_HAVE__async_gaussdb__gaussdbproto__gaussdbproto +#define __PYX_HAVE_API__async_gaussdb__gaussdbproto__gaussdbproto +/* Early includes */ +#include +#include + + #if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyFloat_FromString(obj) PyFloat_FromString(obj) + #else + #define __Pyx_PyFloat_FromString(obj) PyFloat_FromString(obj, NULL) + #endif + +#include + + #if PY_MAJOR_VERSION <= 2 + #define PyDict_GetItemWithError _PyDict_GetItemWithError + #endif + + + #if PY_VERSION_HEX < 0x030d0000 + static CYTHON_INLINE int __Pyx_PyWeakref_GetRef(PyObject *ref, PyObject **pobj) + { + PyObject *obj = PyWeakref_GetObject(ref); + if (obj == NULL) { + // SystemError if ref is NULL + *pobj = NULL; + return -1; + } + if (obj == Py_None) { + *pobj = NULL; + return 0; + } + Py_INCREF(obj); + *pobj = obj; + return 1; + } + #else + #define __Pyx_PyWeakref_GetRef PyWeakref_GetRef + #endif + +#include "pythread.h" + + #if (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030600) && !defined(PyContextVar_Get) + #define PyContextVar_Get(var, d, v) ((d) ? ((void)(var), Py_INCREF(d), (v)[0] = (d), 0) : ((v)[0] = NULL, 0) ) + #endif + +#include +#include "./hton.h" +#include "./tohex.h" +#include "debug.h" + + #if CYTHON_COMPILING_IN_LIMITED_API + #ifdef _MSC_VER + #pragma message ("This module uses CPython specific internals of 'datetime.datetime', which are not available in the limited API.") + #else + #warning This module uses CPython specific internals of 'datetime.datetime', which are not available in the limited API. + #endif + #endif + +#include "datetime.h" + + #define __Pyx_DateTime_DateTimeWithFold(year, month, day, hour, minute, second, microsecond, tz, fold) PyDateTimeAPI->DateTime_FromDateAndTimeAndFold(year, month, day, hour, minute, second, microsecond, tz, fold, PyDateTimeAPI->DateTimeType) + #define __Pyx_DateTime_TimeWithFold(hour, minute, second, microsecond, tz, fold) PyDateTimeAPI->Time_FromTimeAndFold(hour, minute, second, microsecond, tz, fold, PyDateTimeAPI->TimeType) + + #define __Pyx_TimeZone_UTC PyDateTime_TimeZone_UTC + #define __Pyx_TimeZone_FromOffsetAndName(offset, name) PyTimeZone_FromOffsetAndName(offset, name) + + /* Backport for Python < 3.10 */ + #if PY_VERSION_HEX < 0x030a00a1 + #ifndef PyDateTime_TIME_GET_TZINFO + #define PyDateTime_TIME_GET_TZINFO(o) ((((PyDateTime_Time*)o)->hastzinfo) ? ((PyDateTime_Time*)o)->tzinfo : Py_None) + #endif + #ifndef PyDateTime_DATE_GET_TZINFO + #define PyDateTime_DATE_GET_TZINFO(o) ((((PyDateTime_DateTime*)o)->hastzinfo) ? ((PyDateTime_DateTime*)o)->tzinfo : Py_None) + #endif + #endif + +#include +#ifdef _OPENMP +#include +#endif /* _OPENMP */ + +#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) +#define CYTHON_WITHOUT_ASSERTIONS +#endif + +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#define __Pyx_uchar_cast(c) ((unsigned char)c) +#define __Pyx_long_cast(x) ((long)x) +#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ + (sizeof(type) < sizeof(Py_ssize_t)) ||\ + (sizeof(type) > sizeof(Py_ssize_t) &&\ + likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX) &&\ + (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ + v == (type)PY_SSIZE_T_MIN))) ||\ + (sizeof(type) == sizeof(Py_ssize_t) &&\ + (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ + v == (type)PY_SSIZE_T_MAX))) ) +static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { + return (size_t) i < (size_t) limit; +} +#if defined (__cplusplus) && __cplusplus >= 201103L + #include + #define __Pyx_sst_abs(value) std::abs(value) +#elif SIZEOF_INT >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) abs(value) +#elif SIZEOF_LONG >= SIZEOF_SIZE_T + #define __Pyx_sst_abs(value) labs(value) +#elif defined (_MSC_VER) + #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) +#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define __Pyx_sst_abs(value) llabs(value) +#elif defined (__GNUC__) + #define __Pyx_sst_abs(value) __builtin_llabs(value) +#else + #define __Pyx_sst_abs(value) ((value<0) ? -value : value) +#endif +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s); +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*); +#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); +#if CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) + #define __Pyx_PyByteArray_AsString(s) PyByteArray_AS_STRING(s) +#else + #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AsString(s)) + #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AsString(s)) + #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AsString(s)) + #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AsString(s)) + #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AsString(s)) + #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AsString(s)) + #define __Pyx_PyByteArray_AsString(s) PyByteArray_AsString(s) +#endif +#define __Pyx_PyObject_AsWritableString(s) ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) +#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) +#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) +#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) +#define __Pyx_PyUnicode_FromOrdinal(o) PyUnicode_FromOrdinal((int)o) +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode +static CYTHON_INLINE PyObject *__Pyx_NewRef(PyObject *obj) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030a0000 || defined(Py_NewRef) + return Py_NewRef(obj); +#else + Py_INCREF(obj); + return obj; +#endif +} +static CYTHON_INLINE PyObject *__Pyx_XNewRef(PyObject *obj) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030a0000 || defined(Py_XNewRef) + return Py_XNewRef(obj); +#else + Py_XINCREF(obj); + return obj; +#endif +} +static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b); +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); +static CYTHON_INLINE PyObject* __Pyx_PyNumber_Long(PyObject* x); +#define __Pyx_PySequence_Tuple(obj)\ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); +static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t); +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); +#if CYTHON_ASSUME_SAFE_MACROS +#define __Pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) +#define __Pyx_PyFloat_AS_DOUBLE(x) PyFloat_AS_DOUBLE(x) +#else +#define __Pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) +#define __Pyx_PyFloat_AS_DOUBLE(x) PyFloat_AsDouble(x) +#endif +#define __Pyx_PyFloat_AsFloat(x) ((float) __Pyx_PyFloat_AsDouble(x)) +#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) +#if CYTHON_USE_PYLONG_INTERNALS + #if PY_VERSION_HEX >= 0x030C00A7 + #ifndef _PyLong_SIGN_MASK + #define _PyLong_SIGN_MASK 3 + #endif + #ifndef _PyLong_NON_SIZE_BITS + #define _PyLong_NON_SIZE_BITS 3 + #endif + #define __Pyx_PyLong_Sign(x) (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK) + #define __Pyx_PyLong_IsNeg(x) ((__Pyx_PyLong_Sign(x) & 2) != 0) + #define __Pyx_PyLong_IsNonNeg(x) (!__Pyx_PyLong_IsNeg(x)) + #define __Pyx_PyLong_IsZero(x) (__Pyx_PyLong_Sign(x) & 1) + #define __Pyx_PyLong_IsPos(x) (__Pyx_PyLong_Sign(x) == 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) (__Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_SignedDigitCount(x)\ + ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x)) + #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue) + #define __Pyx_PyLong_IsCompact(x) PyUnstable_Long_IsCompact((PyLongObject*) x) + #define __Pyx_PyLong_CompactValue(x) PyUnstable_Long_CompactValue((PyLongObject*) x) + #else + #define __Pyx_PyLong_IsCompact(x) (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS)) + #define __Pyx_PyLong_CompactValue(x) ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0]) + #endif + typedef Py_ssize_t __Pyx_compact_pylong; + typedef size_t __Pyx_compact_upylong; + #else + #define __Pyx_PyLong_IsNeg(x) (Py_SIZE(x) < 0) + #define __Pyx_PyLong_IsNonNeg(x) (Py_SIZE(x) >= 0) + #define __Pyx_PyLong_IsZero(x) (Py_SIZE(x) == 0) + #define __Pyx_PyLong_IsPos(x) (Py_SIZE(x) > 0) + #define __Pyx_PyLong_CompactValueUnsigned(x) ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0]) + #define __Pyx_PyLong_DigitCount(x) __Pyx_sst_abs(Py_SIZE(x)) + #define __Pyx_PyLong_SignedDigitCount(x) Py_SIZE(x) + #define __Pyx_PyLong_IsCompact(x) (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1) + #define __Pyx_PyLong_CompactValue(x)\ + ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0])) + typedef sdigit __Pyx_compact_pylong; + typedef digit __Pyx_compact_upylong; + #endif + #if PY_VERSION_HEX >= 0x030C00A5 + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->long_value.ob_digit) + #else + #define __Pyx_PyLong_Digits(x) (((PyLongObject*)x)->ob_digit) + #endif +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 + #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#elif __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeASCII(c_str, size, NULL) +#else + #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#endif + + +/* Test for GCC > 2.95 */ +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) +#else /* !__GNUC__ or GCC < 2.95 */ + #define likely(x) (x) + #define unlikely(x) (x) +#endif /* __GNUC__ */ +/* PretendToInitialize */ +#ifdef __cplusplus +#if __cplusplus > 201103L +#include +#endif +template +static void __Pyx_pretend_to_initialize(T* ptr) { +#if __cplusplus > 201103L + if ((std::is_trivially_default_constructible::value)) +#endif + *ptr = T(); + (void)ptr; +} +#else +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } +#endif + + +#if !CYTHON_USE_MODULE_STATE +static PyObject *__pyx_m = NULL; +#endif +static int __pyx_lineno; +static int __pyx_clineno = 0; +static const char * const __pyx_cfilenm = __FILE__; +static const char *__pyx_filename; + +/* #### Code section: filename_table ### */ + +static const char* const __pyx_f[] = { + "async_gaussdb/gaussdbproto/gaussdbproto.pyx", + "async_gaussdb/gaussdbproto/uuid.pyx", + "async_gaussdb/gaussdbproto/buffer.pyx", + "", + "async_gaussdb/gaussdbproto/codecs/context.pyx", + "async_gaussdb/gaussdbproto/codecs/int.pyx", + ".eggs/cython-3.1.2-py3.13-linux-x86_64.egg/Cython/Includes/cpython/contextvars.pxd", + "async_gaussdb/gaussdbproto/frb.pxd", + "async_gaussdb/gaussdbproto/buffer.pxd", + ".eggs/cython-3.1.2-py3.13-linux-x86_64.egg/Cython/Includes/cpython/datetime.pxd", + "async_gaussdb/gaussdbproto/frb.pyx", + "async_gaussdb/gaussdbproto/codecs/bytea.pyx", + "async_gaussdb/gaussdbproto/codecs/text.pyx", + "async_gaussdb/gaussdbproto/codecs/datetime.pyx", + "async_gaussdb/gaussdbproto/codecs/float.pyx", + "async_gaussdb/gaussdbproto/codecs/json.pyx", + "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx", + "async_gaussdb/gaussdbproto/codecs/uuid.pyx", + "async_gaussdb/gaussdbproto/codecs/numeric.pyx", + "async_gaussdb/gaussdbproto/codecs/bits.pyx", + "async_gaussdb/gaussdbproto/codecs/geometry.pyx", + "async_gaussdb/gaussdbproto/codecs/hstore.pyx", + "async_gaussdb/gaussdbproto/codecs/misc.pyx", + "async_gaussdb/gaussdbproto/codecs/network.pyx", + "async_gaussdb/gaussdbproto/codecs/tid.pyx", + "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx", + ".eggs/cython-3.1.2-py3.13-linux-x86_64.egg/Cython/Includes/cpython/type.pxd", + ".eggs/cython-3.1.2-py3.13-linux-x86_64.egg/Cython/Includes/cpython/bool.pxd", + ".eggs/cython-3.1.2-py3.13-linux-x86_64.egg/Cython/Includes/cpython/complex.pxd", +}; +/* #### Code section: utility_code_proto_before_types ### */ +/* Atomics.proto */ +#include +#ifndef CYTHON_ATOMICS + #define CYTHON_ATOMICS 1 +#endif +#define __PYX_CYTHON_ATOMICS_ENABLED() CYTHON_ATOMICS +#define __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING() CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +#define __pyx_atomic_int_type int +#define __pyx_nonatomic_int_type int +#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\ + (__STDC_VERSION__ >= 201112L) &&\ + !defined(__STDC_NO_ATOMICS__)) + #include +#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\ + (__cplusplus >= 201103L) ||\ + (defined(_MSC_VER) && _MSC_VER >= 1700))) + #include +#endif +#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\ + (__STDC_VERSION__ >= 201112L) &&\ + !defined(__STDC_NO_ATOMICS__) &&\ + ATOMIC_INT_LOCK_FREE == 2) + #undef __pyx_atomic_int_type + #define __pyx_atomic_int_type atomic_int + #define __pyx_atomic_ptr_type atomic_uintptr_t + #define __pyx_nonatomic_ptr_type uintptr_t + #define __pyx_atomic_incr_relaxed(value) atomic_fetch_add_explicit(value, 1, memory_order_relaxed) + #define __pyx_atomic_incr_acq_rel(value) atomic_fetch_add_explicit(value, 1, memory_order_acq_rel) + #define __pyx_atomic_decr_acq_rel(value) atomic_fetch_sub_explicit(value, 1, memory_order_acq_rel) + #define __pyx_atomic_sub(value, arg) atomic_fetch_sub(value, arg) + #define __pyx_atomic_int_cmp_exchange(value, expected, desired) atomic_compare_exchange_strong(value, expected, desired) + #define __pyx_atomic_load(value) atomic_load(value) + #define __pyx_atomic_store(value, new_value) atomic_store(value, new_value) + #define __pyx_atomic_pointer_load_relaxed(value) atomic_load_explicit(value, memory_order_relaxed) + #define __pyx_atomic_pointer_load_acquire(value) atomic_load_explicit(value, memory_order_acquire) + #define __pyx_atomic_pointer_exchange(value, new_value) atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value) + #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER) + #pragma message ("Using standard C atomics") + #elif defined(__PYX_DEBUG_ATOMICS) + #warning "Using standard C atomics" + #endif +#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\ + (__cplusplus >= 201103L) ||\ +\ + (defined(_MSC_VER) && _MSC_VER >= 1700)) &&\ + ATOMIC_INT_LOCK_FREE == 2) + #undef __pyx_atomic_int_type + #define __pyx_atomic_int_type std::atomic_int + #define __pyx_atomic_ptr_type std::atomic_uintptr_t + #define __pyx_nonatomic_ptr_type uintptr_t + #define __pyx_atomic_incr_relaxed(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_relaxed) + #define __pyx_atomic_incr_acq_rel(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_acq_rel) + #define __pyx_atomic_decr_acq_rel(value) std::atomic_fetch_sub_explicit(value, 1, std::memory_order_acq_rel) + #define __pyx_atomic_sub(value, arg) std::atomic_fetch_sub(value, arg) + #define __pyx_atomic_int_cmp_exchange(value, expected, desired) std::atomic_compare_exchange_strong(value, expected, desired) + #define __pyx_atomic_load(value) std::atomic_load(value) + #define __pyx_atomic_store(value, new_value) std::atomic_store(value, new_value) + #define __pyx_atomic_pointer_load_relaxed(value) std::atomic_load_explicit(value, std::memory_order_relaxed) + #define __pyx_atomic_pointer_load_acquire(value) std::atomic_load_explicit(value, std::memory_order_acquire) + #define __pyx_atomic_pointer_exchange(value, new_value) std::atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value) + #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER) + #pragma message ("Using standard C++ atomics") + #elif defined(__PYX_DEBUG_ATOMICS) + #warning "Using standard C++ atomics" + #endif +#elif CYTHON_ATOMICS && (__GNUC__ >= 5 || (__GNUC__ == 4 &&\ + (__GNUC_MINOR__ > 1 ||\ + (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ >= 2)))) + #define __pyx_atomic_ptr_type void* + #define __pyx_atomic_incr_relaxed(value) __sync_fetch_and_add(value, 1) + #define __pyx_atomic_incr_acq_rel(value) __sync_fetch_and_add(value, 1) + #define __pyx_atomic_decr_acq_rel(value) __sync_fetch_and_sub(value, 1) + #define __pyx_atomic_sub(value, arg) __sync_fetch_and_sub(value, arg) + static CYTHON_INLINE int __pyx_atomic_int_cmp_exchange(__pyx_atomic_int_type* value, __pyx_nonatomic_int_type* expected, __pyx_nonatomic_int_type desired) { + __pyx_nonatomic_int_type old = __sync_val_compare_and_swap(value, *expected, desired); + int result = old == *expected; + *expected = old; + return result; + } + #define __pyx_atomic_load(value) __sync_fetch_and_add(value, 0) + #define __pyx_atomic_store(value, new_value) __sync_lock_test_and_set(value, new_value) + #define __pyx_atomic_pointer_load_relaxed(value) __sync_fetch_and_add(value, 0) + #define __pyx_atomic_pointer_load_acquire(value) __sync_fetch_and_add(value, 0) + #define __pyx_atomic_pointer_exchange(value, new_value) __sync_lock_test_and_set(value, (__pyx_atomic_ptr_type)new_value) + #ifdef __PYX_DEBUG_ATOMICS + #warning "Using GNU atomics" + #endif +#elif CYTHON_ATOMICS && defined(_MSC_VER) + #include + #undef __pyx_atomic_int_type + #define __pyx_atomic_int_type long + #define __pyx_atomic_ptr_type void* + #undef __pyx_nonatomic_int_type + #define __pyx_nonatomic_int_type long + #pragma intrinsic (_InterlockedExchangeAdd, _InterlockedExchange, _InterlockedCompareExchange, _InterlockedCompareExchangePointer, _InterlockedExchangePointer) + #define __pyx_atomic_incr_relaxed(value) _InterlockedExchangeAdd(value, 1) + #define __pyx_atomic_incr_acq_rel(value) _InterlockedExchangeAdd(value, 1) + #define __pyx_atomic_decr_acq_rel(value) _InterlockedExchangeAdd(value, -1) + #define __pyx_atomic_sub(value, arg) _InterlockedExchangeAdd(value, -arg) + static CYTHON_INLINE int __pyx_atomic_int_cmp_exchange(__pyx_atomic_int_type* value, __pyx_nonatomic_int_type* expected, __pyx_nonatomic_int_type desired) { + __pyx_nonatomic_int_type old = _InterlockedCompareExchange(value, desired, *expected); + int result = old == *expected; + *expected = old; + return result; + } + #define __pyx_atomic_load(value) _InterlockedExchangeAdd(value, 0) + #define __pyx_atomic_store(value, new_value) _InterlockedExchange(value, new_value) + #define __pyx_atomic_pointer_load_relaxed(value) *(void * volatile *)value + #define __pyx_atomic_pointer_load_acquire(value) _InterlockedCompareExchangePointer(value, 0, 0) + #define __pyx_atomic_pointer_exchange(value, new_value) _InterlockedExchangePointer(value, (__pyx_atomic_ptr_type)new_value) + #ifdef __PYX_DEBUG_ATOMICS + #pragma message ("Using MSVC atomics") + #endif +#else + #undef CYTHON_ATOMICS + #define CYTHON_ATOMICS 0 + #ifdef __PYX_DEBUG_ATOMICS + #warning "Not using atomics" + #endif +#endif +#if CYTHON_ATOMICS + #define __pyx_add_acquisition_count(memview)\ + __pyx_atomic_incr_relaxed(__pyx_get_slice_count_pointer(memview)) + #define __pyx_sub_acquisition_count(memview)\ + __pyx_atomic_decr_acq_rel(__pyx_get_slice_count_pointer(memview)) +#else + #define __pyx_add_acquisition_count(memview)\ + __pyx_add_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) + #define __pyx_sub_acquisition_count(memview)\ + __pyx_sub_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) +#endif + +/* IncludeStructmemberH.proto */ +#include + +/* CriticalSections.proto */ +#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +#define __Pyx_PyCriticalSection void* +#define __Pyx_PyCriticalSection2 void* +#define __Pyx_PyCriticalSection_Begin1(cs, arg) (void)cs +#define __Pyx_PyCriticalSection_Begin2(cs, arg1, arg2) (void)cs +#define __Pyx_PyCriticalSection_End1(cs) +#define __Pyx_PyCriticalSection_End2(cs) +#else +#define __Pyx_PyCriticalSection PyCriticalSection +#define __Pyx_PyCriticalSection2 PyCriticalSection2 +#define __Pyx_PyCriticalSection_Begin1 PyCriticalSection_Begin +#define __Pyx_PyCriticalSection_Begin2 PyCriticalSection2_Begin +#define __Pyx_PyCriticalSection_End1 PyCriticalSection_End +#define __Pyx_PyCriticalSection_End2 PyCriticalSection2_End +#endif +#if PY_VERSION_HEX < 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_BEGIN_CRITICAL_SECTION(o) { +#define __Pyx_END_CRITICAL_SECTION() } +#else +#define __Pyx_BEGIN_CRITICAL_SECTION Py_BEGIN_CRITICAL_SECTION +#define __Pyx_END_CRITICAL_SECTION Py_END_CRITICAL_SECTION +#endif + +/* #### Code section: numeric_typedefs ### */ +/* #### Code section: complex_type_declarations ### */ +/* #### Code section: type_declarations ### */ + +/*--- Type declarations ---*/ +struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer; +struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer; +struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext; +struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe; +struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID; +struct __pyx_opt_args_7cpython_11contextvars_get_value; +struct __pyx_opt_args_7cpython_11contextvars_get_value_no_default; + +/* "cpython/contextvars.pxd":116 + * + * @_cython.c_compile_guard("!CYTHON_COMPILING_IN_LIMITED_API") + * cdef inline object get_value(var, default_value=None): # <<<<<<<<<<<<<< + * """Return a new reference to the value of the context variable, + * or the default value of the context variable, +*/ +struct __pyx_opt_args_7cpython_11contextvars_get_value { + int __pyx_n; + PyObject *default_value; +}; + +/* "cpython/contextvars.pxd":134 + * + * @_cython.c_compile_guard("!CYTHON_COMPILING_IN_LIMITED_API") + * cdef inline object get_value_no_default(var, default_value=None): # <<<<<<<<<<<<<< + * """Return a new reference to the value of the context variable, + * or the provided default value if no such value was found. +*/ +struct __pyx_opt_args_7cpython_11contextvars_get_value_no_default { + int __pyx_n; + PyObject *default_value; +}; +struct __pyx_opt_args_7cpython_8datetime_time_new; +struct __pyx_opt_args_7cpython_8datetime_datetime_new; +struct __pyx_opt_args_7cpython_8datetime_timezone_new; +struct __pyx_opt_args_7cpython_8datetime_datetime_from_timestamp; + +/* "cpython/datetime.pxd":265 + * # Create time object using DateTime CAPI factory function + * # Note, there are no range checks for any of the arguments. + * cdef inline time time_new(int hour, int minute, int second, int microsecond, object tz, int fold=0): # <<<<<<<<<<<<<< + * return __Pyx_DateTime_TimeWithFold(hour, minute, second, microsecond, tz, fold) + * +*/ +struct __pyx_opt_args_7cpython_8datetime_time_new { + int __pyx_n; + int fold; +}; + +/* "cpython/datetime.pxd":270 + * # Create datetime object using DateTime CAPI factory function. + * # Note, there are no range checks for any of the arguments. + * cdef inline datetime datetime_new(int year, int month, int day, int hour, int minute, int second, int microsecond, object tz, int fold=0): # <<<<<<<<<<<<<< + * return __Pyx_DateTime_DateTimeWithFold(year, month, day, hour, minute, second, microsecond, tz, fold) + * +*/ +struct __pyx_opt_args_7cpython_8datetime_datetime_new { + int __pyx_n; + int fold; +}; + +/* "cpython/datetime.pxd":279 + * + * # Create timedelta object using DateTime CAPI factory function. + * cdef inline object timezone_new(object offset, object name=None): # <<<<<<<<<<<<<< + * return __Pyx_TimeZone_FromOffsetAndName(offset, name if name is not None else NULL) + * +*/ +struct __pyx_opt_args_7cpython_8datetime_timezone_new { + int __pyx_n; + PyObject *name; +}; + +/* "cpython/datetime.pxd":283 + * + * # Create datetime object using DB API constructor. + * cdef inline datetime datetime_from_timestamp(timestamp, tz=None): # <<<<<<<<<<<<<< + * return PyDateTimeAPI.DateTime_FromTimestamp( + * PyDateTimeAPI.DateTimeType, (timestamp, tz) if tz is not None else (timestamp,), NULL) +*/ +struct __pyx_opt_args_7cpython_8datetime_datetime_from_timestamp { + int __pyx_n; + PyObject *tz; +}; +struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer; +struct __pyx_opt_args_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_redirect_messages; + +/* "async_gaussdb/gaussdbproto/frb.pxd":10 + * cdef: + * + * struct FRBuffer: # <<<<<<<<<<<<<< + * const char* buf + * ssize_t len +*/ +struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer { + char const *buf; + Py_ssize_t len; +}; + +/* "async_gaussdb/gaussdbproto/buffer.pxd":62 + * + * + * ctypedef const char * (*try_consume_message_method)(object, ssize_t*) # <<<<<<<<<<<<<< + * ctypedef int32_t (*take_message_type_method)(object, char) except -1 + * ctypedef int32_t (*take_message_method)(object) except -1 +*/ +typedef char const *(*__pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_try_consume_message_method)(PyObject *, Py_ssize_t *); + +/* "async_gaussdb/gaussdbproto/buffer.pxd":63 + * + * ctypedef const char * (*try_consume_message_method)(object, ssize_t*) + * ctypedef int32_t (*take_message_type_method)(object, char) except -1 # <<<<<<<<<<<<<< + * ctypedef int32_t (*take_message_method)(object) except -1 + * ctypedef char (*get_message_type_method)(object) +*/ +typedef int32_t (*__pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_take_message_type_method)(PyObject *, char); + +/* "async_gaussdb/gaussdbproto/buffer.pxd":64 + * ctypedef const char * (*try_consume_message_method)(object, ssize_t*) + * ctypedef int32_t (*take_message_type_method)(object, char) except -1 + * ctypedef int32_t (*take_message_method)(object) except -1 # <<<<<<<<<<<<<< + * ctypedef char (*get_message_type_method)(object) + * +*/ +typedef int32_t (*__pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_take_message_method)(PyObject *); + +/* "async_gaussdb/gaussdbproto/buffer.pxd":65 + * ctypedef int32_t (*take_message_type_method)(object, char) except -1 + * ctypedef int32_t (*take_message_method)(object) except -1 + * ctypedef char (*get_message_type_method)(object) # <<<<<<<<<<<<<< + * + * +*/ +typedef char (*__pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_get_message_type_method)(PyObject *); + +/* "async_gaussdb/gaussdbproto/buffer.pxd":130 + * cdef bytes consume_message(self) + * cdef discard_message(self) + * cdef redirect_messages(self, WriteBuffer buf, char mtype, int stop_at=?) # <<<<<<<<<<<<<< + * cdef bytearray consume_messages(self, char mtype) + * cdef finish_message(self) +*/ +struct __pyx_opt_args_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_redirect_messages { + int __pyx_n; + int stop_at; +}; + +/* "async_gaussdb/gaussdbproto/codecs/__init__.pxd":18 + * + * + * ctypedef object (*encode_func)(CodecContext settings, # <<<<<<<<<<<<<< + * WriteBuffer buf, + * object obj) +*/ +typedef PyObject *(*__pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_encode_func)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *); + +/* "async_gaussdb/gaussdbproto/codecs/__init__.pxd":22 + * object obj) + * + * ctypedef object (*decode_func)(CodecContext settings, # <<<<<<<<<<<<<< + * FRBuffer *buf) + * +*/ +typedef PyObject *(*__pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_decode_func)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *); + +/* "async_gaussdb/gaussdbproto/buffer.pxd":8 + * + * + * cdef class WriteBuffer: # <<<<<<<<<<<<<< + * cdef: + * # Preallocated small buffer +*/ +struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer { + PyObject_HEAD + struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_vtab; + int _smallbuf_inuse; + char _smallbuf[0x400]; + char *_buf; + Py_ssize_t _size; + Py_ssize_t _length; + int _view_count; + int _message_mode; +}; + + +/* "async_gaussdb/gaussdbproto/buffer.pxd":68 + * + * + * cdef class ReadBuffer: # <<<<<<<<<<<<<< + * cdef: + * # A deque of buffers (bytes objects) +*/ +struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer { + PyObject_HEAD + struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_vtab; + PyObject *_bufs; + PyObject *_bufs_append; + PyObject *_bufs_popleft; + PyObject *_buf0; + PyObject *_buf0_prev; + int32_t _bufs_len; + Py_ssize_t _pos0; + Py_ssize_t _len0; + Py_ssize_t _length; + char _current_message_type; + int32_t _current_message_len; + Py_ssize_t _current_message_len_unread; + int _current_message_ready; +}; + + +/* "async_gaussdb/gaussdbproto/codecs/__init__.pxd":8 + * + * + * cdef class CodecContext: # <<<<<<<<<<<<<< + * + * cpdef get_text_codec(self) +*/ +struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext { + PyObject_HEAD + struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_vtab; +}; + + +/* "async_gaussdb/gaussdbproto/uuid.pyx":125 + * + * + * cdef class __UUIDReplaceMe: # <<<<<<<<<<<<<< + * pass + * +*/ +struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe { + PyObject_HEAD +}; + + +/* "async_gaussdb/gaussdbproto/uuid.pyx":136 + * + * + * @cython.final # <<<<<<<<<<<<<< + * @cython.no_gc_clear + * cdef class UUID(__UUIDReplaceMe): +*/ +struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID { + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe __pyx_base; + char _data[16]; + PyObject *_int; + PyObject *_hash; + PyObject *__weakref__; +}; + + + +/* "async_gaussdb/gaussdbproto/buffer.pyx":15 + * pass + * + * @cython.no_gc_clear # <<<<<<<<<<<<<< + * @cython.final + * @cython.freelist(_BUFFER_FREELIST_SIZE) +*/ + +struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer { + PyObject *(*len)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *); + PyObject *(*write_len_prefixed_utf8)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *); + PyObject *(*_check_readonly)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *); + PyObject *(*_ensure_alloced)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, Py_ssize_t); + PyObject *(*_reallocate)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, Py_ssize_t); + PyObject *(*reset)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *); + PyObject *(*start_message)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, char); + PyObject *(*end_message)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *); + PyObject *(*write_buffer)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *); + PyObject *(*write_byte)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, char); + PyObject *(*write_bytes)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *); + PyObject *(*write_len_prefixed_buffer)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *); + PyObject *(*write_len_prefixed_bytes)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *); + PyObject *(*write_bytestring)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *); + PyObject *(*write_str)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *, PyObject *); + PyObject *(*write_frbuf)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *); + PyObject *(*write_cstr)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, char const *, Py_ssize_t); + PyObject *(*write_int16)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, int16_t); + PyObject *(*write_int32)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, int32_t); + PyObject *(*write_int64)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, int64_t); + PyObject *(*write_float)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, float); + PyObject *(*write_double)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, double); + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *(*new_message)(char); + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *(*__pyx_new)(void); +}; +static struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_vtabptr_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer; +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_len(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *); +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_len_prefixed_utf8(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *); +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__check_readonly(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *); +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__ensure_alloced(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, Py_ssize_t); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__reallocate(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, Py_ssize_t); +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_reset(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *); +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_start_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, char); +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_end_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_buffer(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_byte(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, char); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_bytes(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_len_prefixed_buffer(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_len_prefixed_bytes(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_bytestring(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_str(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *, PyObject *); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_frbuf(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, char const *, Py_ssize_t); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int16(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, int16_t); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, int32_t); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, int64_t); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_float(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, float); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_double(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, double); +static struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_new_message(char); +static struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_new(void); + + +/* "async_gaussdb/gaussdbproto/buffer.pyx":238 + * + * + * @cython.no_gc_clear # <<<<<<<<<<<<<< + * @cython.final + * @cython.freelist(_BUFFER_FREELIST_SIZE) +*/ + +struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer { + PyObject *(*len)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + char (*get_message_type)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + int32_t (*get_message_length)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + PyObject *(*feed_data)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, PyObject *); + PyObject *(*_ensure_first_buf)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + PyObject *(*_switch_to_next_buf)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + char (*read_byte)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + char const *(*_try_read_bytes)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, Py_ssize_t); + PyObject *(*_read_into)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, char *, Py_ssize_t); + PyObject *(*_read_and_discard)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, Py_ssize_t); + PyObject *(*read_bytes)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, Py_ssize_t); + PyObject *(*read_len_prefixed_bytes)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + PyObject *(*read_len_prefixed_utf8)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + PyObject *(*read_uuid)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + int64_t (*read_int64)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + int32_t (*read_int32)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + int16_t (*read_int16)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + PyObject *(*read_null_str)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + int32_t (*take_message)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + int32_t (*take_message_type)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, char); + int32_t (*put_message)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + char const *(*try_consume_message)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, Py_ssize_t *); + PyObject *(*consume_message)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + PyObject *(*discard_message)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + PyObject *(*redirect_messages)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, char, struct __pyx_opt_args_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_redirect_messages *__pyx_optional_args); + PyObject *(*consume_messages)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, char); + PyObject *(*finish_message)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + PyObject *(*_finish_message)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *(*new_message_parser)(PyObject *); +}; +static struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_vtabptr_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer; +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_len(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static CYTHON_INLINE char __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_get_message_type(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static CYTHON_INLINE int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_get_message_length(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_feed_data(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, PyObject *); +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__switch_to_next_buf(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static CYTHON_INLINE char __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_byte(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static CYTHON_INLINE char const *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__try_read_bytes(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, Py_ssize_t); +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__read_into(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, char *, Py_ssize_t); +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__read_and_discard(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, Py_ssize_t); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_bytes(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, Py_ssize_t); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_len_prefixed_bytes(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_len_prefixed_utf8(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_uuid(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static CYTHON_INLINE int64_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_int64(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static CYTHON_INLINE int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_int32(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static CYTHON_INLINE int16_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_int16(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_null_str(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_take_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static CYTHON_INLINE int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_take_message_type(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, char); +static int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_put_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static CYTHON_INLINE char const *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_try_consume_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, Py_ssize_t *); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_consume_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_discard_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_redirect_messages(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, char, struct __pyx_opt_args_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_redirect_messages *__pyx_optional_args); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_consume_messages(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, char); +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_finish_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__finish_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *); +static struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_new_message_parser(PyObject *); + + +/* "async_gaussdb/gaussdbproto/codecs/context.pyx":8 + * + * + * cdef class CodecContext: # <<<<<<<<<<<<<< + * + * cpdef get_text_codec(self): +*/ + +struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext { + PyObject *(*get_text_codec)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, int __pyx_skip_dispatch); + PyObject *(*is_encoding_utf8)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *); + PyObject *(*get_json_decoder)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, int __pyx_skip_dispatch); + PyObject *(*is_decoding_json)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *); + PyObject *(*get_json_encoder)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, int __pyx_skip_dispatch); + PyObject *(*is_encoding_json)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *); +}; +static struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_vtabptr_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext; +/* #### Code section: utility_code_proto ### */ + +/* --- Runtime support code (head) --- */ +/* Refnanny.proto */ +#ifndef CYTHON_REFNANNY + #define CYTHON_REFNANNY 0 +#endif +#if CYTHON_REFNANNY + typedef struct { + void (*INCREF)(void*, PyObject*, Py_ssize_t); + void (*DECREF)(void*, PyObject*, Py_ssize_t); + void (*GOTREF)(void*, PyObject*, Py_ssize_t); + void (*GIVEREF)(void*, PyObject*, Py_ssize_t); + void* (*SetupContext)(const char*, Py_ssize_t, const char*); + void (*FinishContext)(void**); + } __Pyx_RefNannyAPIStruct; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; + static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); + #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; + #define __Pyx_RefNannySetupContext(name, acquire_gil)\ + if (acquire_gil) {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + PyGILState_Release(__pyx_gilstate_save);\ + } else {\ + __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContextNogil() {\ + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ + __Pyx_RefNannyFinishContext();\ + PyGILState_Release(__pyx_gilstate_save);\ + } + #define __Pyx_RefNannyFinishContext()\ + __Pyx_RefNanny->FinishContext(&__pyx_refnanny) + #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__)) + #define __Pyx_XINCREF(r) do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0) + #define __Pyx_XDECREF(r) do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0) + #define __Pyx_XGOTREF(r) do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0) + #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0) +#else + #define __Pyx_RefNannyDeclarations + #define __Pyx_RefNannySetupContext(name, acquire_gil) + #define __Pyx_RefNannyFinishContextNogil() + #define __Pyx_RefNannyFinishContext() + #define __Pyx_INCREF(r) Py_INCREF(r) + #define __Pyx_DECREF(r) Py_DECREF(r) + #define __Pyx_GOTREF(r) + #define __Pyx_GIVEREF(r) + #define __Pyx_XINCREF(r) Py_XINCREF(r) + #define __Pyx_XDECREF(r) Py_XDECREF(r) + #define __Pyx_XGOTREF(r) + #define __Pyx_XGIVEREF(r) +#endif +#define __Pyx_Py_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; Py_XDECREF(tmp);\ + } while (0) +#define __Pyx_XDECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_XDECREF(tmp);\ + } while (0) +#define __Pyx_DECREF_SET(r, v) do {\ + PyObject *tmp = (PyObject *) r;\ + r = v; __Pyx_DECREF(tmp);\ + } while (0) +#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) +#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) + +/* PyErrExceptionMatches.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); +#else +#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) +#endif + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* ExtTypeTest.proto */ +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); + +/* BuildPyUnicode.proto */ +static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* chars, int clength, + int prepend_sign, char padding_char); + +/* COrdinalToPyUnicode.proto */ +static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value); +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t width, char padding_char); + +/* GCCDiagnostics.proto */ +#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* IncludeStdlibH.proto */ +#include + +/* IncludeStringH.proto */ +#include + +/* CIntToPyUnicode.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char); + +/* JoinPyUnicode.proto */ +static PyObject* __Pyx_PyUnicode_Join(PyObject** values, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char); + +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#if !CYTHON_VECTORCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject *const *args, Py_ssize_t nargs, PyObject *kwargs); +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif +#if !CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03080000 + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets() + #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) +#else + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) +#endif +#endif +#endif + +/* PyObjectCall.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); +#else +#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) +#endif + +/* PyObjectCallMethO.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); +#endif + +/* PyObjectFastCall.proto */ +#define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject * const*args, size_t nargs, PyObject *kwargs); + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* TupleAndListFromArray.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); +#endif +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); +#endif + +/* BytesEquals.proto */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); + +/* UnicodeEquals.proto */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); + +/* fastcall.proto */ +#if CYTHON_AVOID_BORROWED_REFS + #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_PySequence_ITEM(args, i) +#elif CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_NewRef(__Pyx_PyTuple_GET_ITEM(args, i)) +#else + #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_XNewRef(PyTuple_GetItem(args, i)) +#endif +#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds) +#define __Pyx_KwValues_VARARGS(args, nargs) NULL +#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s) +#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw) +#if CYTHON_METH_FASTCALL + #define __Pyx_ArgRef_FASTCALL(args, i) __Pyx_NewRef(args[i]) + #define __Pyx_NumKwargs_FASTCALL(kwds) __Pyx_PyTuple_GET_SIZE(kwds) + #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs)) + static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API + CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues); + #else + #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw) + #endif +#else + #define __Pyx_ArgRef_FASTCALL __Pyx_ArgRef_VARARGS + #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS + #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS + #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS + #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS +#endif +#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop) +#if CYTHON_METH_FASTCALL || (CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(args + start, stop - start) +#else +#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) +#endif + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* RejectKeywords.proto */ +static void __Pyx_RejectKeywords(const char* function_name, PyObject *kwds); + +/* PyDictVersioning.proto */ +#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS +#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) +#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ + (version_var) = __PYX_GET_DICT_VERSION(dict);\ + (cache_var) = (value); +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ + (VAR) = __pyx_dict_cached_value;\ + } else {\ + (VAR) = __pyx_dict_cached_value = (LOOKUP);\ + __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ + }\ +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); +#else +#define __PYX_GET_DICT_VERSION(dict) (0) +#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) +#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); +#endif + +/* GetModuleGlobalName.proto */ +#if CYTHON_USE_DICT_VERSIONS +#define __Pyx_GetModuleGlobalName(var, name) do {\ + static PY_UINT64_T __pyx_dict_version = 0;\ + static PyObject *__pyx_dict_cached_value = NULL;\ + (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_mstate_global->__pyx_d))) ?\ + (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ + __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +#define __Pyx_GetModuleGlobalNameUncached(var, name) do {\ + PY_UINT64_T __pyx_dict_version;\ + PyObject *__pyx_dict_cached_value;\ + (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ +} while(0) +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); +#else +#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) +#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); +#endif + +/* WriteUnraisableException.proto */ +static void __Pyx_WriteUnraisable(const char *name, int clineno, + int lineno, const char *filename, + int full_traceback, int nogil); + +/* PyObjectFastCallMethod.proto */ +#if CYTHON_VECTORCALL && PY_VERSION_HEX >= 0x03090000 +#define __Pyx_PyObject_FastCallMethod(name, args, nargsf) PyObject_VectorcallMethod(name, args, nargsf, NULL) +#else +static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf); +#endif + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static CYTHON_INLINE int __Pyx_ParseKeywords( + PyObject *kwds, PyObject *const *kwvalues, PyObject ** const argnames[], + PyObject *kwds2, PyObject *values[], + Py_ssize_t num_pos_args, Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs +); + +/* CallCFunction.proto */ +#define __Pyx_CallCFunction(cfunc, self, args)\ + ((PyCFunction)(void(*)(void))(cfunc)->func)(self, args) +#define __Pyx_CallCFunctionWithKeywords(cfunc, self, args, kwargs)\ + ((PyCFunctionWithKeywords)(void(*)(void))(cfunc)->func)(self, args, kwargs) +#define __Pyx_CallCFunctionFast(cfunc, self, args, nargs)\ + ((__Pyx_PyCFunctionFast)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs) +#define __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, nargs, kwnames)\ + ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs, kwnames) + +/* UnpackUnboundCMethod.proto */ +typedef struct { + PyObject *type; + PyObject **method_name; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && CYTHON_ATOMICS + __pyx_atomic_int_type initialized; +#endif + PyCFunction func; + PyObject *method; + int flag; +} __Pyx_CachedCFunction; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +static CYTHON_INLINE int __Pyx_CachedCFunction_GetAndSetInitializing(__Pyx_CachedCFunction *cfunc) { +#if !CYTHON_ATOMICS + return 1; +#else + __pyx_nonatomic_int_type expected = 0; + if (__pyx_atomic_int_cmp_exchange(&cfunc->initialized, &expected, 1)) { + return 0; + } + return expected; +#endif +} +static CYTHON_INLINE void __Pyx_CachedCFunction_SetFinishedInitializing(__Pyx_CachedCFunction *cfunc) { +#if CYTHON_ATOMICS + __pyx_atomic_store(&cfunc->initialized, 2); +#endif +} +#else +#define __Pyx_CachedCFunction_GetAndSetInitializing(cfunc) 2 +#define __Pyx_CachedCFunction_SetFinishedInitializing(cfunc) +#endif + +/* CallUnboundCMethod2.proto */ +CYTHON_UNUSED +static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2); +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2); +#else +#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2) +#endif + +/* GetItemInt.proto */ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ + __Pyx_GetItemInt_Generic(o, to_py_func(i)))) +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\ + (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); + +/* decode_c_string_utf16.proto */ +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) { + int byteorder = 0; + return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); +} +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) { + int byteorder = -1; + return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); +} +static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) { + int byteorder = 1; + return PyUnicode_DecodeUTF16(s, size, errors, &byteorder); +} + +/* decode_c_bytes.proto */ +static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes( + const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop, + const char* encoding, const char* errors, + PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)); + +/* decode_bytes.proto */ +static CYTHON_INLINE PyObject* __Pyx_decode_bytes( + PyObject* string, Py_ssize_t start, Py_ssize_t stop, + const char* encoding, const char* errors, + PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) { + char* as_c_string; + Py_ssize_t size; +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE + as_c_string = PyBytes_AS_STRING(string); + size = PyBytes_GET_SIZE(string); +#else + if (PyBytes_AsStringAndSize(string, &as_c_string, &size) < 0) { + return NULL; + } +#endif + return __Pyx_decode_c_bytes( + as_c_string, size, + start, stop, encoding, errors, decode_func); +} + +/* AssertionsEnabled.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API || (CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030C0000) + static int __pyx_assertions_enabled_flag; + #define __pyx_assertions_enabled() (__pyx_assertions_enabled_flag) + static int __Pyx_init_assertions_enabled(void) { + PyObject *builtins, *debug, *debug_str; + int flag; + builtins = PyEval_GetBuiltins(); + if (!builtins) goto bad; + debug_str = PyUnicode_FromStringAndSize("__debug__", 9); + if (!debug_str) goto bad; + debug = PyObject_GetItem(builtins, debug_str); + Py_DECREF(debug_str); + if (!debug) goto bad; + flag = PyObject_IsTrue(debug); + Py_DECREF(debug); + if (flag == -1) goto bad; + __pyx_assertions_enabled_flag = flag; + return 0; + bad: + __pyx_assertions_enabled_flag = 1; + return -1; + } +#else + #define __Pyx_init_assertions_enabled() (0) + #define __pyx_assertions_enabled() (!Py_OptimizeFlag) +#endif + +/* RaiseUnexpectedTypeError.proto */ +static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj); + +/* RaiseUnboundLocalError.proto */ +static void __Pyx_RaiseUnboundLocalError(const char *varname); + +/* PyObjectFormatAndDecref.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f); +static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObject* f); + +/* GetAttr3.proto */ +static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); + +/* PyObjectFormatSimple.proto */ +#if CYTHON_COMPILING_IN_PYPY + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#elif CYTHON_USE_TYPE_SLOTS + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\ + likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\ + PyObject_Format(s, f)) +#else + #define __Pyx_PyObject_FormatSimple(s, f) (\ + likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\ + PyObject_Format(s, f)) +#endif + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* ObjectGetItem.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key); +#else +#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) +#endif + +/* SliceObject.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice( + PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop, + PyObject** py_start, PyObject** py_stop, PyObject** py_slice, + int has_cstart, int has_cstop, int wraparound); + +/* PyLongBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static CYTHON_INLINE PyObject* __Pyx_PyLong_AndObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyLong_AndObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceAnd(op1, op2) : PyNumber_And(op1, op2)) +#endif + +/* PyLongBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static CYTHON_INLINE PyObject* __Pyx_PyLong_RshiftObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyLong_RshiftObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceRshift(op1, op2) : PyNumber_Rshift(op1, op2)) +#endif + +/* PyLongBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static CYTHON_INLINE PyObject* __Pyx_PyLong_LshiftObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyLong_LshiftObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceLshift(op1, op2) : PyNumber_Lshift(op1, op2)) +#endif + +/* PyObject_Unicode.proto */ +#define __Pyx_PyObject_Unicode(obj)\ + (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj)) + +/* GetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* SwapException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); +#endif + +/* GetTopmostException.proto */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); +#endif + +/* SaveResetException.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +#else +#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) +#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) +#endif + +/* DivInt[int64_t].proto */ +static CYTHON_INLINE int64_t __Pyx_div_int64_t(int64_t, int64_t, int b_is_constant); + +/* ModInt[int64_t].proto */ +static CYTHON_INLINE int64_t __Pyx_mod_int64_t(int64_t, int64_t, int b_is_constant); + +/* PyObjectVectorCallKwBuilder.proto */ +CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n); +#if CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03090000 +#define __Pyx_Object_Vectorcall_CallFromBuilder PyObject_Vectorcall +#else +#define __Pyx_Object_Vectorcall_CallFromBuilder _PyObject_Vectorcall +#endif +#define __Pyx_MakeVectorcallBuilderKwds(n) PyTuple_New(n) +static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n); +static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n); +#else +#define __Pyx_Object_Vectorcall_CallFromBuilder __Pyx_PyObject_FastCallDict +#define __Pyx_MakeVectorcallBuilderKwds(n) __Pyx_PyDict_NewPresized(n) +#define __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n) PyDict_SetItem(builder, key, value) +#define __Pyx_VectorcallBuilder_AddArgStr(key, value, builder, args, n) PyDict_SetItemString(builder, key, value) +#endif + +/* PyObjectVectorCallMethodKwBuilder.proto */ +#if CYTHON_VECTORCALL && PY_VERSION_HEX >= 0x03090000 +#define __Pyx_Object_VectorcallMethod_CallFromBuilder PyObject_VectorcallMethod +#else +static PyObject *__Pyx_Object_VectorcallMethod_CallFromBuilder(PyObject *name, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#endif + +/* DivInt[long].proto */ +static CYTHON_INLINE long __Pyx_div_long(long, long, int b_is_constant); + +/* ModInt[long].proto */ +static CYTHON_INLINE long __Pyx_mod_long(long, long, int b_is_constant); + +/* HasAttr.proto */ +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 +#define __Pyx_HasAttr(o, n) PyObject_HasAttrWithError(o, n) +#else +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); +#endif + +/* PyLongBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static CYTHON_INLINE PyObject* __Pyx_PyLong_MultiplyObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyLong_MultiplyObjC(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceMultiply(op1, op2) : PyNumber_Multiply(op1, op2)) +#endif + +/* py_abs.proto */ +#if CYTHON_USE_PYLONG_INTERNALS +static PyObject *__Pyx_PyLong_AbsNeg(PyObject *num); +#define __Pyx_PyNumber_Absolute(x)\ + ((likely(PyLong_CheckExact(x))) ?\ + (likely(__Pyx_PyLong_IsNonNeg(x)) ? (Py_INCREF(x), (x)) : __Pyx_PyLong_AbsNeg(x)) :\ + PyNumber_Absolute(x)) +#else +#define __Pyx_PyNumber_Absolute(x) PyNumber_Absolute(x) +#endif + +/* RaiseTooManyValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); + +/* RaiseNeedMoreValuesToUnpack.proto */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); + +/* IterFinish.proto */ +static CYTHON_INLINE int __Pyx_IterFinish(void); + +/* UnpackItemEndCheck.proto */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); + +/* PyLongBinop.proto */ +#if !CYTHON_COMPILING_IN_PYPY +static CYTHON_INLINE PyObject* __Pyx_PyLong_AddCObj(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); +#else +#define __Pyx_PyLong_AddCObj(op1, op2, intval, inplace, zerodivision_check)\ + (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) +#endif + +/* PySequenceContains.proto */ +static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { + int result = PySequence_Contains(seq, item); + return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); +} + +/* Import.proto */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* CallTypeTraverse.proto */ +#if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000) +#define __Pyx_call_type_traverse(o, always_call, visit, arg) 0 +#else +static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg); +#endif + +/* CallNextTpTraverse.proto */ +static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse); + +/* LimitedApiGetTypeDict.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp); +#endif + +/* SetItemOnTypeDict.proto */ +static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v); +#define __Pyx_SetItemOnTypeDict(tp, k, v) __Pyx__SetItemOnTypeDict((PyTypeObject*)tp, k, v) + +/* FixUpExtensionType.proto */ +static CYTHON_INLINE int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); + +/* PyObjectCallNoArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); + +/* PyObjectGetMethod.proto */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); + +/* PyObjectCallMethod0.proto */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); + +/* ValidateBasesTuple.proto */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); +#endif + +/* PyType_Ready.proto */ +CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); + +/* SetVTable.proto */ +static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable); + +/* GetVTable.proto */ +static void* __Pyx_GetVtable(PyTypeObject *type); + +/* MergeVTables.proto */ +static int __Pyx_MergeVtables(PyTypeObject *type); + +/* DelItemOnTypeDict.proto */ +static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k); +#define __Pyx_DelItemOnTypeDict(tp, k) __Pyx__DelItemOnTypeDict((PyTypeObject*)tp, k) + +/* SetupReduce.proto */ +static int __Pyx_setup_reduce(PyObject* type_obj); + +/* TypeImport.proto */ +#ifndef __PYX_HAVE_RT_ImportType_proto_3_1_2 +#define __PYX_HAVE_RT_ImportType_proto_3_1_2 +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +#include +#endif +#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L +#define __PYX_GET_STRUCT_ALIGNMENT_3_1_2(s) alignof(s) +#else +#define __PYX_GET_STRUCT_ALIGNMENT_3_1_2(s) sizeof(void*) +#endif +enum __Pyx_ImportType_CheckSize_3_1_2 { + __Pyx_ImportType_CheckSize_Error_3_1_2 = 0, + __Pyx_ImportType_CheckSize_Warn_3_1_2 = 1, + __Pyx_ImportType_CheckSize_Ignore_3_1_2 = 2 +}; +static PyTypeObject *__Pyx_ImportType_3_1_2(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_1_2 check_size); +#endif + +/* ListPack.proto */ +static PyObject *__Pyx_PyList_Pack(Py_ssize_t n, ...); + +/* ImportDottedModule.proto */ +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple); +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple); + +/* Py3UpdateBases.proto */ +static PyObject* __Pyx_PEP560_update_bases(PyObject *bases); + +/* CalculateMetaclass.proto */ +static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); + +/* PyObjectCall2Args.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* PyObjectLookupSpecial.proto */ +#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 0) +#define __Pyx_PyObject_LookupSpecial(obj, attr_name) __Pyx__PyObject_LookupSpecial(obj, attr_name, 1) +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error); +#else +#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n) +#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n) +#endif + +/* Py3ClassCreate.proto */ +static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, + PyObject *mkw, PyObject *modname, PyObject *doc); +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, + PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); + +/* FetchSharedCythonModule.proto */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void); + +/* dict_setdefault.proto */ +static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value, int is_safe_type); + +/* FetchCommonType.proto */ +static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases); + +/* CommonTypesMetaclass.proto */ +static int __pyx_CommonTypesMetaclass_init(PyObject *module); +#define __Pyx_CommonTypesMetaclass_USED + +/* PyMethodNew.proto */ +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ); + +/* PyVectorcallFastCallDict.proto */ +#if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL) +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); +#endif + +/* CythonFunctionShared.proto */ +#define __Pyx_CyFunction_USED +#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 +#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 +#define __Pyx_CYFUNCTION_CCLASS 0x04 +#define __Pyx_CYFUNCTION_COROUTINE 0x08 +#define __Pyx_CyFunction_GetClosure(f)\ + (((__pyx_CyFunctionObject *) (f))->func_closure) +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_CyFunction_GetClassObj(f)\ + (((__pyx_CyFunctionObject *) (f))->func_classobj) +#else + #define __Pyx_CyFunction_GetClassObj(f)\ + ((PyObject*) ((PyCMethodObject *) (f))->mm_class) +#endif +#define __Pyx_CyFunction_SetClassObj(f, classobj)\ + __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj)) +#define __Pyx_CyFunction_Defaults(type, f)\ + ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) +#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ + ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) +typedef struct { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject_HEAD + PyObject *func; +#elif PY_VERSION_HEX < 0x030900B1 + PyCFunctionObject func; +#else + PyCMethodObject func; +#endif +#if CYTHON_BACKPORT_VECTORCALL ||\ + (CYTHON_COMPILING_IN_LIMITED_API && CYTHON_METH_FASTCALL) + __pyx_vectorcallfunc func_vectorcall; +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_weakreflist; +#endif + PyObject *func_dict; + PyObject *func_name; + PyObject *func_qualname; + PyObject *func_doc; + PyObject *func_globals; + PyObject *func_code; + PyObject *func_closure; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + PyObject *func_classobj; +#endif + PyObject *defaults; + int flags; + PyObject *defaults_tuple; + PyObject *defaults_kwdict; + PyObject *(*defaults_getter)(PyObject *); + PyObject *func_annotations; + PyObject *func_is_coroutine; +} __pyx_CyFunctionObject; +#undef __Pyx_CyOrPyCFunction_Check +#define __Pyx_CyFunction_Check(obj) __Pyx_TypeCheck(obj, __pyx_mstate_global->__pyx_CyFunctionType) +#define __Pyx_CyOrPyCFunction_Check(obj) __Pyx_TypeCheck2(obj, __pyx_mstate_global->__pyx_CyFunctionType, &PyCFunction_Type) +#define __Pyx_CyFunction_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_mstate_global->__pyx_CyFunctionType) +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)); +#undef __Pyx_IsSameCFunction +#define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCyOrCFunction(func, cfunc) +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj); +static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func, + PyTypeObject *defaults_type); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, + PyObject *tuple); +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, + PyObject *dict); +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, + PyObject *dict); +static int __pyx_CyFunction_init(PyObject *module); +#if CYTHON_METH_FASTCALL +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); +#if CYTHON_BACKPORT_VECTORCALL || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) +#else +#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) +#endif +#endif + +/* CythonFunction.proto */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, + int flags, PyObject* qualname, + PyObject *closure, + PyObject *module, PyObject *globals, + PyObject* code); + +/* CLineInTraceback.proto */ +#if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); +#else +#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) +#endif + +/* CodeObjectCache.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject __Pyx_CachedCodeObjectType; +#else +typedef PyCodeObject __Pyx_CachedCodeObjectType; +#endif +typedef struct { + __Pyx_CachedCodeObjectType* code_object; + int code_line; +} __Pyx_CodeObjectCacheEntry; +struct __Pyx_CodeObjectCache { + int count; + int max_count; + __Pyx_CodeObjectCacheEntry* entries; + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_atomic_int_type accessor_count; + #endif +}; +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); +static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line); +static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object); + +/* AddTraceback.proto */ +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_long(long value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int64_t __Pyx_PyLong_As_int64_t(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int32_t __Pyx_PyLong_As_int32_t(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int32_t(int32_t value); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int(int value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE unsigned char __Pyx_PyLong_As_unsigned_char(PyObject *); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint8_t(uint8_t value); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int64_t(int64_t value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int16_t __Pyx_PyLong_As_int16_t(PyObject *); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint16_t(uint16_t value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE char __Pyx_PyLong_As_char(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE int8_t __Pyx_PyLong_As_int8_t(PyObject *); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint32_t(uint32_t value); + +/* CIntFromPy.proto */ +static CYTHON_INLINE uint32_t __Pyx_PyLong_As_uint32_t(PyObject *); + +/* CIntFromPy.proto */ +static CYTHON_INLINE uint64_t __Pyx_PyLong_As_uint64_t(PyObject *); + +/* CIntToPy.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint64_t(uint64_t value); + +/* FormatTypeName.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API +typedef PyObject *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%U" +#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj) +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 +#define __Pyx_PyType_GetFullyQualifiedName PyType_GetFullyQualifiedName +#else +static __Pyx_TypeName __Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp); +#endif +#else // !LIMITED_API +typedef const char *__Pyx_TypeName; +#define __Pyx_FMT_TYPENAME "%.200s" +#define __Pyx_PyType_GetFullyQualifiedName(tp) ((tp)->tp_name) +#define __Pyx_DECREF_TypeName(obj) +#endif + +/* FastTypeChecks.proto */ +#if CYTHON_COMPILING_IN_CPYTHON +#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2) +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); +#else +#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) +#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2)) +#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) +static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2) { + return PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2); +} +#endif +#define __Pyx_PyErr_ExceptionMatches2(err1, err2) __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2) +#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) +#ifdef PyExceptionInstance_Check + #define __Pyx_PyBaseException_Check(obj) PyExceptionInstance_Check(obj) +#else + #define __Pyx_PyBaseException_Check(obj) __Pyx_TypeCheck(obj, PyExc_BaseException) +#endif + +/* GetRuntimeVersion.proto */ +static unsigned long __Pyx_get_runtime_version(void); + +/* CheckBinaryVersion.proto */ +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); + +/* FunctionExport.proto */ +static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); + +/* MultiPhaseInitModuleState.proto */ +#if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE +static PyObject *__Pyx_State_FindModule(void*); +static int __Pyx_State_AddModule(PyObject* module, void*); +static int __Pyx_State_RemoveModule(void*); +#elif CYTHON_USE_MODULE_STATE +#define __Pyx_State_FindModule PyState_FindModule +#define __Pyx_State_AddModule PyState_AddModule +#define __Pyx_State_RemoveModule PyState_RemoveModule +#endif + +/* #### Code section: module_declarations ### */ +/* CythonABIVersion.proto */ +#if CYTHON_COMPILING_IN_LIMITED_API + #if CYTHON_METH_FASTCALL + #define __PYX_FASTCALL_ABI_SUFFIX "_fastcall" + #else + #define __PYX_FASTCALL_ABI_SUFFIX + #endif + #define __PYX_LIMITED_ABI_SUFFIX "limited" __PYX_FASTCALL_ABI_SUFFIX __PYX_AM_SEND_ABI_SUFFIX +#else + #define __PYX_LIMITED_ABI_SUFFIX +#endif +#if __PYX_HAS_PY_AM_SEND == 1 + #define __PYX_AM_SEND_ABI_SUFFIX +#elif __PYX_HAS_PY_AM_SEND == 2 + #define __PYX_AM_SEND_ABI_SUFFIX "amsendbackport" +#else + #define __PYX_AM_SEND_ABI_SUFFIX "noamsend" +#endif +#ifndef __PYX_MONITORING_ABI_SUFFIX + #define __PYX_MONITORING_ABI_SUFFIX +#endif +#if CYTHON_USE_TP_FINALIZE + #define __PYX_TP_FINALIZE_ABI_SUFFIX +#else + #define __PYX_TP_FINALIZE_ABI_SUFFIX "nofinalize" +#endif +#if CYTHON_USE_FREELISTS || !defined(__Pyx_AsyncGen_USED) + #define __PYX_FREELISTS_ABI_SUFFIX +#else + #define __PYX_FREELISTS_ABI_SUFFIX "nofreelists" +#endif +#define CYTHON_ABI __PYX_ABI_VERSION __PYX_LIMITED_ABI_SUFFIX __PYX_MONITORING_ABI_SUFFIX __PYX_TP_FINALIZE_ABI_SUFFIX __PYX_FREELISTS_ABI_SUFFIX __PYX_AM_SEND_ABI_SUFFIX +#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI +#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "." + +#if !CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE double __pyx_f_7cpython_7complex_7complex_4real_real(PyComplexObject *__pyx_v_self); /* proto*/ +#endif +#if !CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE double __pyx_f_7cpython_7complex_7complex_4imag_imag(PyComplexObject *__pyx_v_self); /* proto*/ +#endif +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_len(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_len_prefixed_utf8(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, PyObject *__pyx_v_s); /* proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_len(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE char __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_get_message_type(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_get_message_length(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4date_4year_year(PyDateTime_Date *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4date_5month_month(PyDateTime_Date *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4date_3day_day(PyDateTime_Date *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4time_4hour_hour(PyDateTime_Time *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4time_6minute_minute(PyDateTime_Time *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4time_6second_second(PyDateTime_Time *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4time_11microsecond_microsecond(PyDateTime_Time *__pyx_v_self); /* proto*/ +static CYTHON_INLINE PyObject *__pyx_f_7cpython_8datetime_4time_6tzinfo_tzinfo(PyDateTime_Time *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4time_4fold_fold(PyDateTime_Time *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_4year_year(PyDateTime_DateTime *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_5month_month(PyDateTime_DateTime *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_3day_day(PyDateTime_DateTime *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_4hour_hour(PyDateTime_DateTime *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_6minute_minute(PyDateTime_DateTime *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_6second_second(PyDateTime_DateTime *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_11microsecond_microsecond(PyDateTime_DateTime *__pyx_v_self); /* proto*/ +static CYTHON_INLINE PyObject *__pyx_f_7cpython_8datetime_8datetime_6tzinfo_tzinfo(PyDateTime_DateTime *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_4fold_fold(PyDateTime_DateTime *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_9timedelta_3day_day(PyDateTime_Delta *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_9timedelta_6second_second(PyDateTime_Delta *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_9timedelta_11microsecond_microsecond(PyDateTime_Delta *__pyx_v_self); /* proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__check_readonly(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__ensure_alloced(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, Py_ssize_t __pyx_v_extra_length); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__reallocate(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, Py_ssize_t __pyx_v_new_size); /* proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_start_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, char __pyx_v_type); /* proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_end_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_reset(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_buffer(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_byte(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, char __pyx_v_b); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_bytes(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, PyObject *__pyx_v_data); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_bytestring(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, PyObject *__pyx_v_string); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_str(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, PyObject *__pyx_v_string, PyObject *__pyx_v_encoding); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_len_prefixed_buffer(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_len_prefixed_bytes(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, PyObject *__pyx_v_data); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_frbuf(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, char const *__pyx_v_data, Py_ssize_t __pyx_v_len); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int16(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, int16_t __pyx_v_i); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, int32_t __pyx_v_i); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, int64_t __pyx_v_i); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_float(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, float __pyx_v_f); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_double(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, double __pyx_v_d); /* proto*/ +static struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_new_message(char __pyx_v_type); /* proto*/ +static struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_new(void); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_feed_data(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, PyObject *__pyx_v_data); /* proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__switch_to_next_buf(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE char const *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__try_read_bytes(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, Py_ssize_t __pyx_v_nbytes); /* proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__read_into(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, char *__pyx_v_buf, Py_ssize_t __pyx_v_nbytes); /* proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__read_and_discard(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, Py_ssize_t __pyx_v_nbytes); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_bytes(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, Py_ssize_t __pyx_v_nbytes); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_len_prefixed_bytes(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_len_prefixed_utf8(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_uuid(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE char __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_byte(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int64_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_int64(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_int32(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int16_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_int16(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_null_str(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_take_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_take_message_type(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, char __pyx_v_mtype); /* proto*/ +static int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_put_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE char const *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_try_consume_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, Py_ssize_t *__pyx_v_len); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_discard_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_consume_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_redirect_messages(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, char __pyx_v_mtype, struct __pyx_opt_args_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_redirect_messages *__pyx_optional_args); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_consume_messages(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, char __pyx_v_mtype); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_finish_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__finish_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto*/ +static struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_new_message_parser(PyObject *__pyx_v_data); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_get_text_codec(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_is_encoding_utf8(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_get_json_decoder(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_is_decoding_json(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_get_json_encoder(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_is_encoding_json(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self); /* proto*/ + +/* Module declarations from "cython" */ + +/* Module declarations from "cpython.version" */ + +/* Module declarations from "__builtin__" */ + +/* Module declarations from "cpython.type" */ + +/* Module declarations from "libc.string" */ + +/* Module declarations from "libc.stdio" */ + +/* Module declarations from "cpython.object" */ + +/* Module declarations from "cpython.ref" */ + +/* Module declarations from "cpython.exc" */ + +/* Module declarations from "cpython.module" */ + +/* Module declarations from "cpython.mem" */ + +/* Module declarations from "cpython.tuple" */ + +/* Module declarations from "cpython.list" */ + +/* Module declarations from "cpython.sequence" */ + +/* Module declarations from "cpython.mapping" */ + +/* Module declarations from "cpython.iterator" */ + +/* Module declarations from "cpython.number" */ + +/* Module declarations from "__builtin__" */ + +/* Module declarations from "cpython.bool" */ + +/* Module declarations from "cpython.long" */ + +/* Module declarations from "cpython.float" */ + +/* Module declarations from "__builtin__" */ + +/* Module declarations from "cpython.complex" */ + +/* Module declarations from "libc.stddef" */ + +/* Module declarations from "cpython.unicode" */ + +/* Module declarations from "cpython.pyport" */ + +/* Module declarations from "cpython.dict" */ + +/* Module declarations from "cpython.instance" */ + +/* Module declarations from "cpython.function" */ + +/* Module declarations from "cpython.method" */ + +/* Module declarations from "cpython.weakref" */ + +/* Module declarations from "cpython.getargs" */ + +/* Module declarations from "cpython.pythread" */ + +/* Module declarations from "cpython.pystate" */ + +/* Module declarations from "cpython.set" */ + +/* Module declarations from "cpython.buffer" */ + +/* Module declarations from "cpython.bytes" */ + +/* Module declarations from "cpython.pycapsule" */ + +/* Module declarations from "cpython.contextvars" */ + +/* Module declarations from "datetime" */ + +/* Module declarations from "cpython.datetime" */ +static CYTHON_INLINE void __pyx_f_7cpython_8datetime_import_datetime(void); /*proto*/ + +/* Module declarations from "cpython" */ + +/* Module declarations from "libc.stdint" */ + +/* Module declarations from "async_gaussdb.gaussdbproto" */ + +/* Module declarations from "async_gaussdb.gaussdbproto.cpythonx" */ + +/* Module declarations from "async_gaussdb.gaussdbproto.hton" */ + +/* Module declarations from "async_gaussdb.gaussdbproto.tohex" */ + +/* Module declarations from "async_gaussdb.gaussdbproto.debug" */ + +/* Module declarations from "libc" */ + +/* Module declarations from "libc.math" */ + +/* Module declarations from "async_gaussdb.gaussdbproto.gaussdbproto" */ +static char __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto__hextable[0x100]; +static PyObject *__pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_std_UUID = 0; +static PyObject *__pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_UUID = 0; +static int32_t __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_epoch_datetime_ts; +static int32_t __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_epoch_datetime_utc_ts; +static int32_t __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_date_offset_ord; +static int64_t __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_time64_infinity; +static int64_t __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_time64_negative_infinity; +static int32_t __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_date_infinity; +static int32_t __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_date_negative_infinity; +static int32_t __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_infinity_datetime_ord; +static int64_t __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_infinity_datetime_ts; +static int32_t __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_negative_infinity_datetime_ord; +static int64_t __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_negative_infinity_datetime_ts; +static int32_t __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_infinity_date_ord; +static int32_t __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_negative_infinity_date_ord; +static CYTHON_INLINE char const *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *, Py_ssize_t); /*proto*/ +static CYTHON_INLINE char const *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read_all(struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *); /*proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_check(struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *, Py_ssize_t); /*proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_time_decode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_as_gaussdb_string_and_size(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, PyObject *, char **, Py_ssize_t *); /*proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_text_encode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *); /*proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_text_decode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *); /*proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_bytea_encode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *); /*proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_numeric_decode_binary_ex(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *, int); /*proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_uuid_bytes_from_str(PyObject *, char *); /*proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_uuid_from_buf(char const *); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_decode_gaussdb_string(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, char const *, Py_ssize_t); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__local_timezone(void); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__encode_time(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, int64_t, int32_t); /*proto*/ +static CYTHON_INLINE int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__decode_time(struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *, int64_t *, int32_t *); /*proto*/ +static CYTHON_INLINE char *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__unpack_digit_stripping_lzeros(char *, int64_t); /*proto*/ +static CYTHON_INLINE char *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__unpack_digit(char *, int64_t); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__encode_points(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__decode_points(struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *); /*proto*/ +static CYTHON_INLINE uint8_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__ip_max_prefix_len(int32_t); /*proto*/ +static CYTHON_INLINE int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__ip_addr_len(int32_t); /*proto*/ +static CYTHON_INLINE int8_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__ver_to_family(int32_t); /*proto*/ +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__net_encode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, int8_t, uint32_t, int8_t, PyObject *); /*proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_net_decode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *, int); /*proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto___pyx_unpickle___UUIDReplaceMe__set_state(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe *, PyObject *); /*proto*/ +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto___pyx_unpickle_CodecContext__set_state(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, PyObject *); /*proto*/ +/* #### Code section: typeinfo ### */ +/* #### Code section: before_global_var ### */ +#define __Pyx_MODULE_NAME "async_gaussdb.gaussdbproto.gaussdbproto" +extern int __pyx_module_is_main_async_gaussdb__gaussdbproto__gaussdbproto; +int __pyx_module_is_main_async_gaussdb__gaussdbproto__gaussdbproto = 0; + +/* Implementation of "async_gaussdb.gaussdbproto.gaussdbproto" */ +/* #### Code section: global_var ### */ +static PyObject *__pyx_builtin_AssertionError; +static PyObject *__pyx_builtin_MemoryError; +static PyObject *__pyx_builtin_TypeError; +static PyObject *__pyx_builtin_print; +static PyObject *__pyx_builtin_ValueError; +static PyObject *__pyx_builtin_range; +static PyObject *__pyx_builtin_NotImplemented; +static PyObject *__pyx_builtin_NotImplementedError; +static PyObject *__pyx_builtin_OverflowError; +/* #### Code section: string_decls ### */ +static const char __pyx_k_[] = ""; +static const char __pyx_k_6[] = "\200\001\330\004*\250!\2506\260\021"; +static const char __pyx_k_F[] = "F"; +static const char __pyx_k_N[] = "N"; +static const char __pyx_k_Q[] = "\200\001\330\004\n\210+\220Q"; +static const char __pyx_k_n[] = "n"; +static const char __pyx_k_0e[] = "0e-"; +static const char __pyx_k__2[] = "\000"; +static const char __pyx_k__3[] = "')"; +static const char __pyx_k__4[] = "."; +static const char __pyx_k__5[] = "?"; +static const char __pyx_k_gc[] = "gc"; +static const char __pyx_k_A_a[] = "\200A\330\010\016\210a"; +static const char __pyx_k_Box[] = "Box"; +static const char __pyx_k_Dec[] = "_Dec"; +static const char __pyx_k_NaN[] = "NaN"; +static const char __pyx_k_QfA[] = "\200\001\330\004-\250Q\250f\260A"; +static const char __pyx_k_add[] = "__add__"; +static const char __pyx_k_big[] = "big"; +static const char __pyx_k_day[] = "day"; +static const char __pyx_k_doc[] = "__doc__"; +static const char __pyx_k_inp[] = "inp"; +static const char __pyx_k_int[] = "int"; +static const char __pyx_k_len[] = "__len__"; +static const char __pyx_k_mro[] = "__mro__"; +static const char __pyx_k_new[] = "__new__"; +static const char __pyx_k_now[] = "now"; +static const char __pyx_k_pop[] = "pop"; +static const char __pyx_k_utc[] = "utc"; +static const char __pyx_k_Line[] = "Line"; +static const char __pyx_k_Path[] = "Path"; +static const char __pyx_k_UUID[] = "UUID('"; +static const char __pyx_k_cidr[] = "cidr"; +static const char __pyx_k_date[] = "date"; +static const char __pyx_k_days[] = "days"; +static const char __pyx_k_dict[] = "__dict__"; +static const char __pyx_k_find[] = "find"; +static const char __pyx_k_func[] = "__func__"; +static const char __pyx_k_hour[] = "hour"; +static const char __pyx_k_inet[] = "inet"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_name[] = "__name__"; +static const char __pyx_k_node[] = "node"; +static const char __pyx_k_self[] = "self"; +static const char __pyx_k_sign[] = "sign"; +static const char __pyx_k_spec[] = "__spec__"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_time[] = "time"; +static const char __pyx_k_uuid[] = "uuid"; +static const char __pyx_k_year[] = "year"; +static const char __pyx_k_A_AXT[] = "\200A\330\010\020\220\004\220A\220X\230T\240\021"; +static const char __pyx_k_Point[] = "Point"; +static const char __pyx_k_bases[] = "__bases__"; +static const char __pyx_k_bytes[] = "bytes"; +static const char __pyx_k_deque[] = "deque"; +static const char __pyx_k_int_2[] = "__int__"; +static const char __pyx_k_ipnet[] = "_ipnet"; +static const char __pyx_k_items[] = "items"; +static const char __pyx_k_month[] = "month"; +static const char __pyx_k_print[] = "print"; +static const char __pyx_k_range[] = "range"; +static const char __pyx_k_state[] = "state"; +static const char __pyx_k_types[] = "types"; +static const char __pyx_k_Circle[] = "Circle"; +static const char __pyx_k_UUID_2[] = "UUID"; +static const char __pyx_k_append[] = "append"; +static const char __pyx_k_decode[] = "decode"; +static const char __pyx_k_dict_2[] = "_dict"; +static const char __pyx_k_digits[] = "digits"; +static const char __pyx_k_enable[] = "enable"; +static const char __pyx_k_encode[] = "encode"; +static const char __pyx_k_format[] = "format"; +static const char __pyx_k_ipaddr[] = "_ipaddr"; +static const char __pyx_k_minute[] = "minute"; +static const char __pyx_k_module[] = "__module__"; +static const char __pyx_k_packed[] = "packed"; +static const char __pyx_k_pickle[] = "pickle"; +static const char __pyx_k_reduce[] = "__reduce__"; +static const char __pyx_k_second[] = "second"; +static const char __pyx_k_tzinfo[] = "tzinfo"; +static const char __pyx_k_update[] = "update"; +static const char __pyx_k_Decimal[] = "Decimal"; +static const char __pyx_k_MAXYEAR[] = "MAXYEAR"; +static const char __pyx_k_MINYEAR[] = "MINYEAR"; +static const char __pyx_k_Polygon[] = "Polygon"; +static const char __pyx_k_decimal[] = "decimal"; +static const char __pyx_k_disable[] = "disable"; +static const char __pyx_k_ipiface[] = "_ipiface"; +static const char __pyx_k_minutes[] = "minutes"; +static const char __pyx_k_network[] = "network"; +static const char __pyx_k_popleft[] = "popleft"; +static const char __pyx_k_prepare[] = "__prepare__"; +static const char __pyx_k_replace[] = "replace"; +static const char __pyx_k_seconds[] = "seconds"; +static const char __pyx_k_unknown[] = "unknown"; +static const char __pyx_k_variant[] = "variant"; +static const char __pyx_k_version[] = "version"; +static const char __pyx_k_Infinity[] = "Infinity"; +static const char __pyx_k_RFC_4122[] = "RFC_4122"; +static const char __pyx_k_SafeUUID[] = "SafeUUID"; +static const char __pyx_k_as_tuple[] = "as_tuple"; +static const char __pyx_k_datetime[] = "datetime"; +static const char __pyx_k_exponent[] = "exponent"; +static const char __pyx_k_getstate[] = "__getstate__"; +static const char __pyx_k_pyx_type[] = "__pyx_type"; +static const char __pyx_k_qualname[] = "__qualname__"; +static const char __pyx_k_set_name[] = "__set_name__"; +static const char __pyx_k_setstate[] = "__setstate__"; +static const char __pyx_k_time_low[] = "time_low"; +static const char __pyx_k_time_mid[] = "time_mid"; +static const char __pyx_k_timezone[] = "timezone"; +static const char __pyx_k_urn_uuid[] = "urn:uuid:"; +static const char __pyx_k_BitString[] = "BitString"; +static const char __pyx_k_TypeError[] = "TypeError"; +static const char __pyx_k_frombytes[] = "frombytes"; +static const char __pyx_k_functools[] = "functools"; +static const char __pyx_k_ipaddress[] = "ipaddress"; +static const char __pyx_k_is_closed[] = "is_closed"; +static const char __pyx_k_isenabled[] = "isenabled"; +static const char __pyx_k_metaclass[] = "__metaclass__"; +static const char __pyx_k_prefixlen[] = "prefixlen"; +static const char __pyx_k_pyx_state[] = "__pyx_state"; +static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; +static const char __pyx_k_remaining[] = " remaining "; +static const char __pyx_k_timedelta[] = "timedelta"; +static const char __pyx_k_timestamp[] = "timestamp"; +static const char __pyx_k_toordinal[] = "toordinal"; +static const char __pyx_k_utcoffset[] = "utcoffset"; +static const char __pyx_k_Infinity_2[] = "-Infinity"; +static const char __pyx_k_ReadBuffer[] = "ReadBuffer"; +static const char __pyx_k_ValueError[] = "ValueError"; +static const char __pyx_k_astimezone[] = "astimezone"; +static const char __pyx_k_from_bytes[] = "from_bytes"; +static const char __pyx_k_ip_address[] = "ip_address"; +static const char __pyx_k_ip_network[] = "ip_network"; +static const char __pyx_k_pyx_result[] = "__pyx_result"; +static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; +static const char __pyx_k_BufferError[] = "BufferError"; +static const char __pyx_k_LineSegment[] = "LineSegment"; +static const char __pyx_k_MemoryError[] = "MemoryError"; +static const char __pyx_k_PickleError[] = "PickleError"; +static const char __pyx_k_WriteBuffer[] = "WriteBuffer"; +static const char __pyx_k_collections[] = "collections"; +static const char __pyx_k_fromordinal[] = "fromordinal"; +static const char __pyx_k_microsecond[] = "microsecond"; +static const char __pyx_k_mro_entries[] = "__mro_entries__"; +static const char __pyx_k_CodecContext[] = "CodecContext"; +static const char __pyx_k_RESERVED_NCS[] = "RESERVED_NCS"; +static const char __pyx_k_empty_buffer[] = "empty buffer"; +static const char __pyx_k_initializing[] = "_initializing"; +static const char __pyx_k_invalid_UUID[] = "invalid UUID "; +static const char __pyx_k_ip_interface[] = "ip_interface"; +static const char __pyx_k_is_coroutine[] = "_is_coroutine"; +static const char __pyx_k_microseconds[] = "microseconds"; +static const char __pyx_k_pyx_checksum[] = "__pyx_checksum"; +static const char __pyx_k_stringsource[] = ""; +static const char __pyx_k_use_setstate[] = "use_setstate"; +static const char __pyx_k_OverflowError[] = "OverflowError"; +static const char __pyx_k_UUIDReplaceMe[] = "__UUIDReplaceMe"; +static const char __pyx_k_UUID___reduce[] = "UUID.__reduce__"; +static const char __pyx_k_class_getitem[] = "__class_getitem__"; +static const char __pyx_k_clock_seq_low[] = "clock_seq_low"; +static const char __pyx_k_infinity_date[] = "infinity_date"; +static const char __pyx_k_reduce_cython[] = "__reduce_cython__"; +static const char __pyx_k_AssertionError[] = "AssertionError"; +static const char __pyx_k_NotImplemented[] = "NotImplemented"; +static const char __pyx_k_get_text_codec[] = "get_text_codec"; +static const char __pyx_k_RESERVED_FUTURE[] = "RESERVED_FUTURE"; +static const char __pyx_k_buffer_overread[] = "buffer overread"; +static const char __pyx_k_network_address[] = "network_address"; +static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError"; +static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; +static const char __pyx_k_string_too_long[] = "string too long"; +static const char __pyx_k_time_hi_version[] = "time_hi_version"; +static const char __pyx_k_expected_str_got[] = "expected str, got {}"; +static const char __pyx_k_get_json_decoder[] = "get_json_decoder"; +static const char __pyx_k_get_json_encoder[] = "get_json_encoder"; +static const char __pyx_k_date_from_ordinal[] = "date_from_ordinal"; +static const char __pyx_k_infinity_datetime[] = "infinity_datetime"; +static const char __pyx_k_RESERVED_MICROSOFT[] = "RESERVED_MICROSOFT"; +static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines"; +static const char __pyx_k_bit_value_too_long[] = "bit value too long"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; +static const char __pyx_k_empty_first_buffer[] = "empty first buffer"; +static const char __pyx_k_gaussdb_epoch_date[] = "gaussdb_epoch_date"; +static const char __pyx_k_gaussdbproto_types[] = "gaussdbproto_types"; +static const char __pyx_k_NotImplementedError[] = "NotImplementedError"; +static const char __pyx_k_path_value_too_long[] = "path value too long"; +static const char __pyx_k_string_is_too_large[] = "string is too large"; +static const char __pyx_k_clock_seq_hi_variant[] = "clock_seq_hi_variant"; +static const char __pyx_k_unexpected_character[] = ": unexpected character "; +static const char __pyx_k_no_message_to_consume[] = "no message to consume"; +static const char __pyx_k_no_message_to_discard[] = "no message to discard"; +static const char __pyx_k_gaussdb_epoch_datetime[] = "gaussdb_epoch_datetime"; +static const char __pyx_k_negative_infinity_date[] = "negative_infinity_date"; +static const char __pyx_k_polygon_value_too_long[] = "polygon value too long"; +static const char __pyx_k_unexpected_JSONB_format[] = "unexpected JSONB format: {}"; +static const char __pyx_k_hk_A_1_kkmmn_xq_7_a_nA_1[] = "\200\001\360\006\000\005\010\200\220h\230k\250\033\260A\330\010\r\210^\2301\330\010\016\320\016!\320!k\320km\320mn\330\004\023\220<\230x\240q\250\001\330\004\007\200|\2207\230!\330\010.\250a\250\270n\310A\330\004\013\2101"; +static const char __pyx_k_value_out_of_int16_range[] = "value out of int16 range"; +static const char __pyx_k_value_out_of_int32_range[] = "value out of int32 range"; +static const char __pyx_k_value_out_of_int64_range[] = "value out of int64 range"; +static const char __pyx_k_hstore_value_is_too_large[] = "hstore value is too large"; +static const char __pyx_k_pyx_unpickle_CodecContext[] = "__pyx_unpickle_CodecContext"; +static const char __pyx_k_value_out_of_uint32_range[] = "value out of uint32 range"; +static const char __pyx_k_value_out_of_uint64_range[] = "value out of uint64 range"; +static const char __pyx_k_16_bytes_were_expected_got[] = "16 bytes were expected, got "; +static const char __pyx_k_A_G1F_a_vWA_q_q_q_T_G1_T_A[] = "\200\001\360\010\000\005\r\210A\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220A\330\010\022\220!\330\010\027\220q\340\010\027\220q\330\004\007\200q\330\010\017\320\017-\250T\260\021\260'\270\033\300G\3101\340\010\017\320\017-\250T\260\021\260'\270\033\300A"; +static const char __pyx_k_ReadBuffer___reduce_cython[] = "ReadBuffer.__reduce_cython__"; +static const char __pyx_k_gaussdb_epoch_datetime_utc[] = "gaussdb_epoch_datetime_utc"; +static const char __pyx_k_hk_A_1_kkmmn_1_7_1_2DNRS_1[] = "\200\001\360\006\000\005\010\200\220h\230k\250\033\260A\330\010\r\210^\2301\330\010\016\320\016!\320!k\320km\320mn\330\004\023\220?\240(\250!\2501\330\004\007\200|\2207\230!\330\0101\260\021\3202D\300N\320RS\330\004\013\2101"; +static const char __pyx_k_negative_infinity_datetime[] = "negative_infinity_datetime"; +static const char __pyx_k_unexpected_jsonpath_format[] = "unexpected jsonpath format: {}"; +static const char __pyx_k_value_out_of_float32_range[] = "value out of float32 range"; +static const char __pyx_k_CodecContext_get_text_codec[] = "CodecContext.get_text_codec"; +static const char __pyx_k_WriteBuffer___reduce_cython[] = "WriteBuffer.__reduce_cython__"; +static const char __pyx_k_CodecContext___reduce_cython[] = "CodecContext.__reduce_cython__"; +static const char __pyx_k_ReadBuffer___setstate_cython[] = "ReadBuffer.__setstate_cython__"; +static const char __pyx_k_pyx_unpickle___UUIDReplaceMe[] = "__pyx_unpickle___UUIDReplaceMe"; +static const char __pyx_k_CodecContext_get_json_decoder[] = "CodecContext.get_json_decoder"; +static const char __pyx_k_CodecContext_get_json_encoder[] = "CodecContext.get_json_encoder"; +static const char __pyx_k_UUIDReplaceMe___reduce_cython[] = "__UUIDReplaceMe.__reduce_cython__"; +static const char __pyx_k_WriteBuffer___setstate_cython[] = "WriteBuffer.__setstate_cython__"; +static const char __pyx_k_decodes_to_less_than_16_bytes[] = ": decodes to less than 16 bytes"; +static const char __pyx_k_decodes_to_more_than_16_bytes[] = ": decodes to more than 16 bytes"; +static const char __pyx_k_not_enough_data_to_read_bytes[] = "not enough data to read {} bytes"; +static const char __pyx_k_read_null_str_buffer_overread[] = "read_null_str: buffer overread"; +static const char __pyx_k_CodecContext___setstate_cython[] = "CodecContext.__setstate_cython__"; +static const char __pyx_k_UUIDReplaceMe___setstate_cytho[] = "__UUIDReplaceMe.__setstate_cython__"; +static const char __pyx_k_a_boolean_is_required_got_type[] = "a boolean is required (got type {})"; +static const char __pyx_k_A_G1F_a_vWA_q_q_q_0_AWKwa_0_AWK[] = "\200\001\360\010\000\005\r\210A\330\004\014\210G\2201\220F\230,\240a\330\004\007\200v\210W\220A\330\010\022\220!\330\010\027\220q\340\010\027\220q\330\004\007\200q\330\010\017\320\0170\260\004\260A\260W\270K\300w\310a\340\010\017\320\0170\260\004\260A\260W\270K\300q"; +static const char __pyx_k_async_gaussdb_gaussdbproto_uuid[] = "async_gaussdb/gaussdbproto/uuid.pyx"; +static const char __pyx_k_consume_full_messages_called_on[] = "consume_full_messages called on a buffer without a complete first message"; +static const char __pyx_k_discarding_message_r_unread_dat[] = "!!! discarding message {!r} unread data: {!r}"; +static const char __pyx_k_end_message_buffer_is_too_small[] = "end_message: buffer is too small"; +static const char __pyx_k_invalid_address_family_in_value[] = "invalid address family in \"{}\" value"; +static const char __pyx_k_invalid_address_length_in_value[] = "invalid address length in \"{}\" value"; +static const char __pyx_k_length_must_be_between_32_36_ch[] = ": length must be between 32..36 characters, got "; +static const char __pyx_k_list_or_tuple_expected_got_type[] = "list or tuple expected (got type {})"; +static const char __pyx_k_the_buffer_is_in_read_only_mode[] = "the buffer is in read-only mode"; +static const char __pyx_k_txid_snapshot_value_is_too_long[] = "txid_snapshot value is too long"; +static const char __pyx_k_unexpected_CIDR_flag_set_in_non[] = "unexpected CIDR flag set in non-cidr value"; +static const char __pyx_k_Deallocating_buffer_with_attache[] = "Deallocating buffer with attached memoryviews"; +static const char __pyx_k_Incompatible_checksums_0x_x_vs_0[] = "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())"; +static const char __pyx_k_a_bytes_or_str_object_expected_g[] = "a bytes or str object expected, got "; +static const char __pyx_k_async_gaussdb_gaussdbproto_codec[] = "async_gaussdb/gaussdbproto/codecs/context.pyx"; +static const char __pyx_k_async_gaussdb_gaussdbproto_gauss[] = "async_gaussdb.gaussdbproto.gaussdbproto"; +static const char __pyx_k_cannot_decode_UUID_expected_16_b[] = "cannot decode UUID, expected 16 bytes, got "; +static const char __pyx_k_cannot_encode_Decimal_value_into[] = "cannot encode Decimal value into numeric: exponent is too small"; +static const char __pyx_k_cannot_put_message_no_message_ta[] = "cannot put message: no message taken"; +static const char __pyx_k_cannot_start_message_for_a_non_e[] = "cannot start_message for a non-empty buffer"; +static const char __pyx_k_consume_full_messages_called_wit[] = "consume_full_messages called with a wrong mtype"; +static const char __pyx_k_date_tuple_encoder_expecting_1_e[] = "date tuple encoder: expecting 1 element in tuple, got {}"; +static const char __pyx_k_debug_first_buffer_of_ReadBuffer[] = "debug: first buffer of ReadBuffer is empty"; +static const char __pyx_k_debug_second_buffer_of_ReadBuffe[] = "debug: second buffer of ReadBuffer is empty"; +static const char __pyx_k_end_message_can_only_be_called_w[] = "end_message can only be called with start_message"; +static const char __pyx_k_end_message_message_is_too_large[] = "end_message: message is too large"; +static const char __pyx_k_expected_a_datetime_date_or_date[] = "expected a datetime.date or datetime.datetime instance, got {!r}"; +static const char __pyx_k_failed_to_read_one_byte_on_a_non[] = "failed to read one byte on a non-empty buffer"; +static const char __pyx_k_feed_data_a_bytes_or_bytearray_o[] = "feed_data: a bytes or bytearray object expected"; +static const char __pyx_k_insufficient_data_in_buffer_requ[] = "insufficient data in buffer: requested "; +static const char __pyx_k_interval_tuple_encoder_expecting[] = "interval tuple encoder: expecting 3 elements in tuple, got {}"; +static const char __pyx_k_invalid_UUID_u_r_unexpected_char[] = "invalid UUID {u!r}: unexpected character"; +static const char __pyx_k_invalid_network_prefix_length_in[] = "invalid network prefix length in \"{}\" value"; +static const char __pyx_k_invalid_number_of_elements_in_ti[] = "invalid number of elements in tid tuple, expecting 2"; +static const char __pyx_k_invalid_number_of_elements_in_tx[] = "invalid number of elements in txid_snapshot tuple, expecting 4"; +static const char __pyx_k_negative_length_for_a_len_prefix[] = "negative length for a len-prefixed bytes value"; +static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__"; +static const char __pyx_k_not_enough_data_to_read_one_byte[] = "not enough data to read one byte"; +static const char __pyx_k_null_value_not_allowed_in_hstore[] = "null value not allowed in hstore key"; +static const char __pyx_k_read_null_str_only_works_when_th[] = "read_null_str only works when the message guaranteed to be in the buffer"; +static const char __pyx_k_time_tuple_encoder_expecting_1_e[] = "time tuple encoder: expecting 1 element in tuple, got {}"; +static const char __pyx_k_time_tuple_encoder_expecting_2_e[] = "time tuple encoder: expecting 2 elements2 in tuple, got {}"; +static const char __pyx_k_timestamp_tuple_encoder_expectin[] = "timestamp tuple encoder: expecting 1 element in tuple, got {}"; +static const char __pyx_k_tuple_id_block_value_out_of_uint[] = "tuple id block value out of uint32 range"; +static const char __pyx_k_tuple_id_offset_value_out_of_uin[] = "tuple id offset value out of uint16 range"; +static const char __pyx_k_consume_full_messages_called_on_2[] = "consume_full_messages called on a partially read message"; +static const char __pyx_k_cannot_encode_Decimal_value_into_2[] = "cannot encode Decimal value into numeric: exponent is too large"; +static const char __pyx_k_cannot_encode_Decimal_value_into_3[] = "cannot encode Decimal value into numeric: number of digits is too large"; +/* #### Code section: decls ### */ +static int __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer___cinit__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self); /* proto */ +static void __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_2__dealloc__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self); /* proto */ +static int __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_4__getbuffer__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, Py_buffer *__pyx_v_buffer, int __pyx_v_flags); /* proto */ +static void __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_6__releasebuffer__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, CYTHON_UNUSED Py_buffer *__pyx_v_buffer); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer___cinit__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe___reduce_cython__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe_2__setstate_cython__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static int __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID___cinit__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static int __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_2__init__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self, PyObject *__pyx_v_inp); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_5bytes___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3int___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7is_safe___get__(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_4__str__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3hex___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_6__repr__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8__reduce__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_10__eq__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self, PyObject *__pyx_v_other); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_12__ne__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self, PyObject *__pyx_v_other); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_14__lt__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self, PyObject *__pyx_v_other); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_16__gt__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self, PyObject *__pyx_v_other); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_18__le__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self, PyObject *__pyx_v_other); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_20__ge__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self, PyObject *__pyx_v_other); /* proto */ +static Py_hash_t __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_22__hash__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_24__int__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8bytes_le___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_6fields___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8time_low___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8time_mid___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_15time_hi_version___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_20clock_seq_hi_variant___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_13clock_seq_low___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_4time___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_9clock_seq___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_4node___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3urn___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7variant___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7version___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_get_text_codec(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_2get_json_decoder(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_4get_json_encoder(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_6__reduce_cython__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_8__setstate_cython__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto___pyx_unpickle___UUIDReplaceMe(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_2__pyx_unpickle_CodecContext(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */ +static PyObject *__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +static PyObject *__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ +/* #### Code section: late_includes ### */ +/* #### Code section: module_state ### */ +/* SmallCodeConfig */ +#ifndef CYTHON_SMALL_CODE +#if defined(__clang__) + #define CYTHON_SMALL_CODE +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define CYTHON_SMALL_CODE __attribute__((cold)) +#else + #define CYTHON_SMALL_CODE +#endif +#endif + +typedef struct { + PyObject *__pyx_d; + PyObject *__pyx_b; + PyObject *__pyx_cython_runtime; + PyObject *__pyx_empty_tuple; + PyObject *__pyx_empty_bytes; + PyObject *__pyx_empty_unicode; + #ifdef __Pyx_CyFunction_USED + PyTypeObject *__pyx_CyFunctionType; + #endif + #ifdef __Pyx_FusedFunction_USED + PyTypeObject *__pyx_FusedFunctionType; + #endif + #ifdef __Pyx_Generator_USED + PyTypeObject *__pyx_GeneratorType; + #endif + #ifdef __Pyx_IterableCoroutine_USED + PyTypeObject *__pyx_IterableCoroutineType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineAwaitType; + #endif + #ifdef __Pyx_Coroutine_USED + PyTypeObject *__pyx_CoroutineType; + #endif + PyTypeObject *__pyx_ptype_7cpython_4type_type; + PyTypeObject *__pyx_ptype_7cpython_4bool_bool; + PyTypeObject *__pyx_ptype_7cpython_7complex_complex; + PyTypeObject *__pyx_ptype_7cpython_8datetime_date; + PyTypeObject *__pyx_ptype_7cpython_8datetime_time; + PyTypeObject *__pyx_ptype_7cpython_8datetime_datetime; + PyTypeObject *__pyx_ptype_7cpython_8datetime_timedelta; + PyTypeObject *__pyx_ptype_7cpython_8datetime_tzinfo; + PyObject *__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer; + PyObject *__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer; + PyObject *__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext; + PyObject *__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe; + PyObject *__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID; + PyTypeObject *__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer; + PyTypeObject *__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer; + PyTypeObject *__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext; + PyTypeObject *__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe; + PyTypeObject *__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID; + __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_pop; + PyObject *__pyx_slice[4]; + PyObject *__pyx_tuple[3]; + PyObject *__pyx_codeobj_tab[14]; + PyObject *__pyx_string_tab[271]; + PyObject *__pyx_int_0; + PyObject *__pyx_int_1; + PyObject *__pyx_int_3; + PyObject *__pyx_int_5; + PyObject *__pyx_int_7; + PyObject *__pyx_int_8; + PyObject *__pyx_int_10; + PyObject *__pyx_int_12; + PyObject *__pyx_int_15; + PyObject *__pyx_int_20; + PyObject *__pyx_int_23; + PyObject *__pyx_int_31; + PyObject *__pyx_int_32; + PyObject *__pyx_int_48; + PyObject *__pyx_int_56; + PyObject *__pyx_int_59; + PyObject *__pyx_int_63; + PyObject *__pyx_int_64; + PyObject *__pyx_int_76; + PyObject *__pyx_int_80; + PyObject *__pyx_int_96; + PyObject *__pyx_int_100; + PyObject *__pyx_int_255; + PyObject *__pyx_int_1000; + PyObject *__pyx_int_2000; + PyObject *__pyx_int_4095; + PyObject *__pyx_int_65535; + PyObject *__pyx_int_999999; + PyObject *__pyx_int_222419149; + PyObject *__pyx_int_228825662; + PyObject *__pyx_int_238750788; + PyObject *__pyx_int_0xffffffffffff; + PyObject *__pyx_int_0x2000000000000000; + PyObject *__pyx_int_0x4000000000000000; + PyObject *__pyx_int_0x8000000000000000; + PyObject *__pyx_int_neg_1; +/* #### Code section: module_state_contents ### */ + +#if CYTHON_USE_FREELISTS +struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_freelist_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer[256]; +int __pyx_freecount_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer; +#endif + +#if CYTHON_USE_FREELISTS +struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_freelist_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer[256]; +int __pyx_freecount_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer; +#endif +/* CommonTypesMetaclass.module_state_decls */ +PyTypeObject *__pyx_CommonTypesMetaclassType; + +/* CachedMethodType.module_state_decls */ +#if CYTHON_COMPILING_IN_LIMITED_API +PyObject *__Pyx_CachedMethodType; +#endif + +/* CodeObjectCache.module_state_decls */ +struct __Pyx_CodeObjectCache __pyx_code_cache; + +/* #### Code section: module_state_end ### */ +} __pyx_mstatetype; + +#if CYTHON_USE_MODULE_STATE +#ifdef __cplusplus +namespace { +extern struct PyModuleDef __pyx_moduledef; +} /* anonymous namespace */ +#else +static struct PyModuleDef __pyx_moduledef; +#endif + +#define __pyx_mstate_global (__Pyx_PyModule_GetState(__Pyx_State_FindModule(&__pyx_moduledef))) + +#define __pyx_m (__Pyx_State_FindModule(&__pyx_moduledef)) +#else +static __pyx_mstatetype __pyx_mstate_global_static = +#ifdef __cplusplus + {}; +#else + {0}; +#endif +static __pyx_mstatetype * const __pyx_mstate_global = &__pyx_mstate_global_static; +#endif +/* #### Code section: constant_name_defines ### */ +#define __pyx_n_u_ __pyx_string_tab[0] +#define __pyx_kp_b_ __pyx_string_tab[1] +#define __pyx_kp_u_ __pyx_string_tab[2] +#define __pyx_kp_u_0e __pyx_string_tab[3] +#define __pyx_kp_u_16_bytes_were_expected_got __pyx_string_tab[4] +#define __pyx_n_u_AssertionError __pyx_string_tab[5] +#define __pyx_n_u_BitString __pyx_string_tab[6] +#define __pyx_n_u_Box __pyx_string_tab[7] +#define __pyx_n_u_BufferError __pyx_string_tab[8] +#define __pyx_n_u_Circle __pyx_string_tab[9] +#define __pyx_n_u_CodecContext __pyx_string_tab[10] +#define __pyx_n_u_CodecContext___reduce_cython __pyx_string_tab[11] +#define __pyx_n_u_CodecContext___setstate_cython __pyx_string_tab[12] +#define __pyx_n_u_CodecContext_get_json_decoder __pyx_string_tab[13] +#define __pyx_n_u_CodecContext_get_json_encoder __pyx_string_tab[14] +#define __pyx_n_u_CodecContext_get_text_codec __pyx_string_tab[15] +#define __pyx_kp_u_Deallocating_buffer_with_attache __pyx_string_tab[16] +#define __pyx_n_u_Dec __pyx_string_tab[17] +#define __pyx_n_u_Decimal __pyx_string_tab[18] +#define __pyx_n_u_F __pyx_string_tab[19] +#define __pyx_kp_u_Incompatible_checksums_0x_x_vs_0 __pyx_string_tab[20] +#define __pyx_n_u_Infinity __pyx_string_tab[21] +#define __pyx_kp_u_Infinity_2 __pyx_string_tab[22] +#define __pyx_n_u_Line __pyx_string_tab[23] +#define __pyx_n_u_LineSegment __pyx_string_tab[24] +#define __pyx_n_u_MAXYEAR __pyx_string_tab[25] +#define __pyx_n_u_MINYEAR __pyx_string_tab[26] +#define __pyx_n_u_MemoryError __pyx_string_tab[27] +#define __pyx_n_u_N __pyx_string_tab[28] +#define __pyx_n_u_NaN __pyx_string_tab[29] +#define __pyx_n_u_NotImplemented __pyx_string_tab[30] +#define __pyx_n_u_NotImplementedError __pyx_string_tab[31] +#define __pyx_n_u_OverflowError __pyx_string_tab[32] +#define __pyx_n_u_Path __pyx_string_tab[33] +#define __pyx_n_u_PickleError __pyx_string_tab[34] +#define __pyx_n_u_Point __pyx_string_tab[35] +#define __pyx_n_u_Polygon __pyx_string_tab[36] +#define __pyx_n_u_RESERVED_FUTURE __pyx_string_tab[37] +#define __pyx_n_u_RESERVED_MICROSOFT __pyx_string_tab[38] +#define __pyx_n_u_RESERVED_NCS __pyx_string_tab[39] +#define __pyx_n_u_RFC_4122 __pyx_string_tab[40] +#define __pyx_n_u_ReadBuffer __pyx_string_tab[41] +#define __pyx_n_u_ReadBuffer___reduce_cython __pyx_string_tab[42] +#define __pyx_n_u_ReadBuffer___setstate_cython __pyx_string_tab[43] +#define __pyx_n_u_SafeUUID __pyx_string_tab[44] +#define __pyx_n_u_TypeError __pyx_string_tab[45] +#define __pyx_kp_u_UUID __pyx_string_tab[46] +#define __pyx_n_u_UUIDReplaceMe __pyx_string_tab[47] +#define __pyx_n_u_UUIDReplaceMe___reduce_cython __pyx_string_tab[48] +#define __pyx_n_u_UUIDReplaceMe___setstate_cytho __pyx_string_tab[49] +#define __pyx_n_u_UUID_2 __pyx_string_tab[50] +#define __pyx_n_u_UUID___reduce __pyx_string_tab[51] +#define __pyx_n_u_ValueError __pyx_string_tab[52] +#define __pyx_n_u_WriteBuffer __pyx_string_tab[53] +#define __pyx_n_u_WriteBuffer___reduce_cython __pyx_string_tab[54] +#define __pyx_n_u_WriteBuffer___setstate_cython __pyx_string_tab[55] +#define __pyx_kp_b__2 __pyx_string_tab[56] +#define __pyx_kp_u__3 __pyx_string_tab[57] +#define __pyx_kp_u__4 __pyx_string_tab[58] +#define __pyx_kp_u__5 __pyx_string_tab[59] +#define __pyx_kp_u_a_boolean_is_required_got_type __pyx_string_tab[60] +#define __pyx_kp_u_a_bytes_or_str_object_expected_g __pyx_string_tab[61] +#define __pyx_n_u_add __pyx_string_tab[62] +#define __pyx_n_u_append __pyx_string_tab[63] +#define __pyx_n_u_as_tuple __pyx_string_tab[64] +#define __pyx_n_u_astimezone __pyx_string_tab[65] +#define __pyx_kp_u_async_gaussdb_gaussdbproto_codec __pyx_string_tab[66] +#define __pyx_n_u_async_gaussdb_gaussdbproto_gauss __pyx_string_tab[67] +#define __pyx_kp_u_async_gaussdb_gaussdbproto_uuid __pyx_string_tab[68] +#define __pyx_n_u_asyncio_coroutines __pyx_string_tab[69] +#define __pyx_n_u_bases __pyx_string_tab[70] +#define __pyx_n_u_big __pyx_string_tab[71] +#define __pyx_kp_u_bit_value_too_long __pyx_string_tab[72] +#define __pyx_kp_u_buffer_overread __pyx_string_tab[73] +#define __pyx_n_u_bytes __pyx_string_tab[74] +#define __pyx_kp_u_cannot_decode_UUID_expected_16_b __pyx_string_tab[75] +#define __pyx_kp_u_cannot_encode_Decimal_value_into __pyx_string_tab[76] +#define __pyx_kp_u_cannot_encode_Decimal_value_into_2 __pyx_string_tab[77] +#define __pyx_kp_u_cannot_encode_Decimal_value_into_3 __pyx_string_tab[78] +#define __pyx_kp_u_cannot_put_message_no_message_ta __pyx_string_tab[79] +#define __pyx_kp_u_cannot_start_message_for_a_non_e __pyx_string_tab[80] +#define __pyx_n_u_cidr __pyx_string_tab[81] +#define __pyx_n_u_class_getitem __pyx_string_tab[82] +#define __pyx_n_u_cline_in_traceback __pyx_string_tab[83] +#define __pyx_n_u_clock_seq_hi_variant __pyx_string_tab[84] +#define __pyx_n_u_clock_seq_low __pyx_string_tab[85] +#define __pyx_n_u_collections __pyx_string_tab[86] +#define __pyx_kp_u_consume_full_messages_called_on __pyx_string_tab[87] +#define __pyx_kp_u_consume_full_messages_called_on_2 __pyx_string_tab[88] +#define __pyx_kp_u_consume_full_messages_called_wit __pyx_string_tab[89] +#define __pyx_n_u_date __pyx_string_tab[90] +#define __pyx_n_u_date_from_ordinal __pyx_string_tab[91] +#define __pyx_kp_u_date_tuple_encoder_expecting_1_e __pyx_string_tab[92] +#define __pyx_n_u_datetime __pyx_string_tab[93] +#define __pyx_n_u_day __pyx_string_tab[94] +#define __pyx_n_u_days __pyx_string_tab[95] +#define __pyx_kp_u_debug_first_buffer_of_ReadBuffer __pyx_string_tab[96] +#define __pyx_kp_u_debug_second_buffer_of_ReadBuffe __pyx_string_tab[97] +#define __pyx_n_u_decimal __pyx_string_tab[98] +#define __pyx_n_u_decode __pyx_string_tab[99] +#define __pyx_kp_u_decodes_to_less_than_16_bytes __pyx_string_tab[100] +#define __pyx_kp_u_decodes_to_more_than_16_bytes __pyx_string_tab[101] +#define __pyx_n_u_deque __pyx_string_tab[102] +#define __pyx_n_u_dict __pyx_string_tab[103] +#define __pyx_n_u_dict_2 __pyx_string_tab[104] +#define __pyx_n_u_digits __pyx_string_tab[105] +#define __pyx_kp_u_disable __pyx_string_tab[106] +#define __pyx_kp_u_discarding_message_r_unread_dat __pyx_string_tab[107] +#define __pyx_n_u_doc __pyx_string_tab[108] +#define __pyx_kp_u_empty_buffer __pyx_string_tab[109] +#define __pyx_kp_u_empty_first_buffer __pyx_string_tab[110] +#define __pyx_kp_u_enable __pyx_string_tab[111] +#define __pyx_n_u_encode __pyx_string_tab[112] +#define __pyx_kp_u_end_message_buffer_is_too_small __pyx_string_tab[113] +#define __pyx_kp_u_end_message_can_only_be_called_w __pyx_string_tab[114] +#define __pyx_kp_u_end_message_message_is_too_large __pyx_string_tab[115] +#define __pyx_kp_u_expected_a_datetime_date_or_date __pyx_string_tab[116] +#define __pyx_kp_u_expected_str_got __pyx_string_tab[117] +#define __pyx_n_u_exponent __pyx_string_tab[118] +#define __pyx_kp_u_failed_to_read_one_byte_on_a_non __pyx_string_tab[119] +#define __pyx_kp_u_feed_data_a_bytes_or_bytearray_o __pyx_string_tab[120] +#define __pyx_n_u_find __pyx_string_tab[121] +#define __pyx_n_u_format __pyx_string_tab[122] +#define __pyx_n_u_from_bytes __pyx_string_tab[123] +#define __pyx_n_u_frombytes __pyx_string_tab[124] +#define __pyx_n_u_fromordinal __pyx_string_tab[125] +#define __pyx_n_u_func __pyx_string_tab[126] +#define __pyx_n_u_functools __pyx_string_tab[127] +#define __pyx_n_u_gaussdb_epoch_date __pyx_string_tab[128] +#define __pyx_n_u_gaussdb_epoch_datetime __pyx_string_tab[129] +#define __pyx_n_u_gaussdb_epoch_datetime_utc __pyx_string_tab[130] +#define __pyx_n_u_gaussdbproto_types __pyx_string_tab[131] +#define __pyx_kp_u_gc __pyx_string_tab[132] +#define __pyx_n_u_get_json_decoder __pyx_string_tab[133] +#define __pyx_n_u_get_json_encoder __pyx_string_tab[134] +#define __pyx_n_u_get_text_codec __pyx_string_tab[135] +#define __pyx_n_u_getstate __pyx_string_tab[136] +#define __pyx_n_u_hour __pyx_string_tab[137] +#define __pyx_kp_u_hstore_value_is_too_large __pyx_string_tab[138] +#define __pyx_n_u_inet __pyx_string_tab[139] +#define __pyx_n_u_infinity_date __pyx_string_tab[140] +#define __pyx_n_u_infinity_datetime __pyx_string_tab[141] +#define __pyx_n_u_initializing __pyx_string_tab[142] +#define __pyx_n_u_inp __pyx_string_tab[143] +#define __pyx_kp_u_insufficient_data_in_buffer_requ __pyx_string_tab[144] +#define __pyx_n_u_int __pyx_string_tab[145] +#define __pyx_n_u_int_2 __pyx_string_tab[146] +#define __pyx_kp_u_interval_tuple_encoder_expecting __pyx_string_tab[147] +#define __pyx_kp_u_invalid_UUID __pyx_string_tab[148] +#define __pyx_kp_u_invalid_UUID_u_r_unexpected_char __pyx_string_tab[149] +#define __pyx_kp_u_invalid_address_family_in_value __pyx_string_tab[150] +#define __pyx_kp_u_invalid_address_length_in_value __pyx_string_tab[151] +#define __pyx_kp_u_invalid_network_prefix_length_in __pyx_string_tab[152] +#define __pyx_kp_u_invalid_number_of_elements_in_ti __pyx_string_tab[153] +#define __pyx_kp_u_invalid_number_of_elements_in_tx __pyx_string_tab[154] +#define __pyx_n_u_ip_address __pyx_string_tab[155] +#define __pyx_n_u_ip_interface __pyx_string_tab[156] +#define __pyx_n_u_ip_network __pyx_string_tab[157] +#define __pyx_n_u_ipaddr __pyx_string_tab[158] +#define __pyx_n_u_ipaddress __pyx_string_tab[159] +#define __pyx_n_u_ipiface __pyx_string_tab[160] +#define __pyx_n_u_ipnet __pyx_string_tab[161] +#define __pyx_n_u_is_closed __pyx_string_tab[162] +#define __pyx_n_u_is_coroutine __pyx_string_tab[163] +#define __pyx_kp_u_isenabled __pyx_string_tab[164] +#define __pyx_n_u_items __pyx_string_tab[165] +#define __pyx_n_u_len __pyx_string_tab[166] +#define __pyx_kp_u_length_must_be_between_32_36_ch __pyx_string_tab[167] +#define __pyx_kp_u_list_or_tuple_expected_got_type __pyx_string_tab[168] +#define __pyx_n_u_main __pyx_string_tab[169] +#define __pyx_n_u_metaclass __pyx_string_tab[170] +#define __pyx_n_u_microsecond __pyx_string_tab[171] +#define __pyx_n_u_microseconds __pyx_string_tab[172] +#define __pyx_n_u_minute __pyx_string_tab[173] +#define __pyx_n_u_minutes __pyx_string_tab[174] +#define __pyx_n_u_module __pyx_string_tab[175] +#define __pyx_n_u_month __pyx_string_tab[176] +#define __pyx_n_u_mro __pyx_string_tab[177] +#define __pyx_n_u_mro_entries __pyx_string_tab[178] +#define __pyx_n_u_n __pyx_string_tab[179] +#define __pyx_n_u_name __pyx_string_tab[180] +#define __pyx_n_u_negative_infinity_date __pyx_string_tab[181] +#define __pyx_n_u_negative_infinity_datetime __pyx_string_tab[182] +#define __pyx_kp_u_negative_length_for_a_len_prefix __pyx_string_tab[183] +#define __pyx_n_u_network __pyx_string_tab[184] +#define __pyx_n_u_network_address __pyx_string_tab[185] +#define __pyx_n_u_new __pyx_string_tab[186] +#define __pyx_kp_u_no_default___reduce___due_to_non __pyx_string_tab[187] +#define __pyx_kp_u_no_message_to_consume __pyx_string_tab[188] +#define __pyx_kp_u_no_message_to_discard __pyx_string_tab[189] +#define __pyx_n_u_node __pyx_string_tab[190] +#define __pyx_kp_u_not_enough_data_to_read_bytes __pyx_string_tab[191] +#define __pyx_kp_u_not_enough_data_to_read_one_byte __pyx_string_tab[192] +#define __pyx_n_u_now __pyx_string_tab[193] +#define __pyx_kp_u_null_value_not_allowed_in_hstore __pyx_string_tab[194] +#define __pyx_n_u_packed __pyx_string_tab[195] +#define __pyx_kp_u_path_value_too_long __pyx_string_tab[196] +#define __pyx_n_u_pickle __pyx_string_tab[197] +#define __pyx_kp_u_polygon_value_too_long __pyx_string_tab[198] +#define __pyx_n_u_pop __pyx_string_tab[199] +#define __pyx_n_u_popleft __pyx_string_tab[200] +#define __pyx_n_u_prefixlen __pyx_string_tab[201] +#define __pyx_n_u_prepare __pyx_string_tab[202] +#define __pyx_n_u_print __pyx_string_tab[203] +#define __pyx_n_u_pyx_PickleError __pyx_string_tab[204] +#define __pyx_n_u_pyx_checksum __pyx_string_tab[205] +#define __pyx_n_u_pyx_result __pyx_string_tab[206] +#define __pyx_n_u_pyx_state __pyx_string_tab[207] +#define __pyx_n_u_pyx_type __pyx_string_tab[208] +#define __pyx_n_u_pyx_unpickle_CodecContext __pyx_string_tab[209] +#define __pyx_n_u_pyx_unpickle___UUIDReplaceMe __pyx_string_tab[210] +#define __pyx_n_u_pyx_vtable __pyx_string_tab[211] +#define __pyx_n_u_qualname __pyx_string_tab[212] +#define __pyx_n_u_range __pyx_string_tab[213] +#define __pyx_kp_u_read_null_str_buffer_overread __pyx_string_tab[214] +#define __pyx_kp_u_read_null_str_only_works_when_th __pyx_string_tab[215] +#define __pyx_n_u_reduce __pyx_string_tab[216] +#define __pyx_n_u_reduce_cython __pyx_string_tab[217] +#define __pyx_n_u_reduce_ex __pyx_string_tab[218] +#define __pyx_kp_u_remaining __pyx_string_tab[219] +#define __pyx_n_u_replace __pyx_string_tab[220] +#define __pyx_n_u_second __pyx_string_tab[221] +#define __pyx_n_u_seconds __pyx_string_tab[222] +#define __pyx_n_u_self __pyx_string_tab[223] +#define __pyx_n_u_set_name __pyx_string_tab[224] +#define __pyx_n_u_setstate __pyx_string_tab[225] +#define __pyx_n_u_setstate_cython __pyx_string_tab[226] +#define __pyx_n_u_sign __pyx_string_tab[227] +#define __pyx_n_u_spec __pyx_string_tab[228] +#define __pyx_n_u_state __pyx_string_tab[229] +#define __pyx_kp_u_string_is_too_large __pyx_string_tab[230] +#define __pyx_kp_u_string_too_long __pyx_string_tab[231] +#define __pyx_kp_u_stringsource __pyx_string_tab[232] +#define __pyx_n_u_test __pyx_string_tab[233] +#define __pyx_kp_u_the_buffer_is_in_read_only_mode __pyx_string_tab[234] +#define __pyx_n_u_time __pyx_string_tab[235] +#define __pyx_n_u_time_hi_version __pyx_string_tab[236] +#define __pyx_n_u_time_low __pyx_string_tab[237] +#define __pyx_n_u_time_mid __pyx_string_tab[238] +#define __pyx_kp_u_time_tuple_encoder_expecting_1_e __pyx_string_tab[239] +#define __pyx_kp_u_time_tuple_encoder_expecting_2_e __pyx_string_tab[240] +#define __pyx_n_u_timedelta __pyx_string_tab[241] +#define __pyx_n_u_timestamp __pyx_string_tab[242] +#define __pyx_kp_u_timestamp_tuple_encoder_expectin __pyx_string_tab[243] +#define __pyx_n_u_timezone __pyx_string_tab[244] +#define __pyx_n_u_toordinal __pyx_string_tab[245] +#define __pyx_kp_u_tuple_id_block_value_out_of_uint __pyx_string_tab[246] +#define __pyx_kp_u_tuple_id_offset_value_out_of_uin __pyx_string_tab[247] +#define __pyx_kp_u_txid_snapshot_value_is_too_long __pyx_string_tab[248] +#define __pyx_n_u_types __pyx_string_tab[249] +#define __pyx_n_u_tzinfo __pyx_string_tab[250] +#define __pyx_kp_u_unexpected_CIDR_flag_set_in_non __pyx_string_tab[251] +#define __pyx_kp_u_unexpected_JSONB_format __pyx_string_tab[252] +#define __pyx_kp_u_unexpected_character __pyx_string_tab[253] +#define __pyx_kp_u_unexpected_jsonpath_format __pyx_string_tab[254] +#define __pyx_n_u_unknown __pyx_string_tab[255] +#define __pyx_n_u_update __pyx_string_tab[256] +#define __pyx_kp_u_urn_uuid __pyx_string_tab[257] +#define __pyx_n_u_use_setstate __pyx_string_tab[258] +#define __pyx_n_u_utc __pyx_string_tab[259] +#define __pyx_n_u_utcoffset __pyx_string_tab[260] +#define __pyx_n_u_uuid __pyx_string_tab[261] +#define __pyx_kp_u_value_out_of_float32_range __pyx_string_tab[262] +#define __pyx_kp_u_value_out_of_int16_range __pyx_string_tab[263] +#define __pyx_kp_u_value_out_of_int32_range __pyx_string_tab[264] +#define __pyx_kp_u_value_out_of_int64_range __pyx_string_tab[265] +#define __pyx_kp_u_value_out_of_uint32_range __pyx_string_tab[266] +#define __pyx_kp_u_value_out_of_uint64_range __pyx_string_tab[267] +#define __pyx_n_u_variant __pyx_string_tab[268] +#define __pyx_n_u_version __pyx_string_tab[269] +#define __pyx_n_u_year __pyx_string_tab[270] +/* #### Code section: module_state_clear ### */ +#if CYTHON_USE_MODULE_STATE +static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) { + __pyx_mstatetype *clear_module_state = __Pyx_PyModule_GetState(m); + if (!clear_module_state) return 0; + Py_CLEAR(clear_module_state->__pyx_d); + Py_CLEAR(clear_module_state->__pyx_b); + Py_CLEAR(clear_module_state->__pyx_cython_runtime); + Py_CLEAR(clear_module_state->__pyx_empty_tuple); + Py_CLEAR(clear_module_state->__pyx_empty_bytes); + Py_CLEAR(clear_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); + #endif + #if CYTHON_PEP489_MULTI_PHASE_INIT + __Pyx_State_RemoveModule(NULL); + #endif + Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4type_type); + Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4bool_bool); + Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_7complex_complex); + Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_8datetime_date); + Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_8datetime_time); + Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_8datetime_datetime); + Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_8datetime_timedelta); + Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_8datetime_tzinfo); + Py_CLEAR(clear_module_state->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer); + Py_CLEAR(clear_module_state->__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer); + Py_CLEAR(clear_module_state->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer); + Py_CLEAR(clear_module_state->__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer); + Py_CLEAR(clear_module_state->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext); + Py_CLEAR(clear_module_state->__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext); + Py_CLEAR(clear_module_state->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe); + Py_CLEAR(clear_module_state->__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe); + Py_CLEAR(clear_module_state->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID); + Py_CLEAR(clear_module_state->__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID); + for (int i=0; i<4; ++i) { Py_CLEAR(clear_module_state->__pyx_slice[i]); } + for (int i=0; i<3; ++i) { Py_CLEAR(clear_module_state->__pyx_tuple[i]); } + for (int i=0; i<14; ++i) { Py_CLEAR(clear_module_state->__pyx_codeobj_tab[i]); } + for (int i=0; i<271; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); } + Py_CLEAR(clear_module_state->__pyx_int_0); + Py_CLEAR(clear_module_state->__pyx_int_1); + Py_CLEAR(clear_module_state->__pyx_int_3); + Py_CLEAR(clear_module_state->__pyx_int_5); + Py_CLEAR(clear_module_state->__pyx_int_7); + Py_CLEAR(clear_module_state->__pyx_int_8); + Py_CLEAR(clear_module_state->__pyx_int_10); + Py_CLEAR(clear_module_state->__pyx_int_12); + Py_CLEAR(clear_module_state->__pyx_int_15); + Py_CLEAR(clear_module_state->__pyx_int_20); + Py_CLEAR(clear_module_state->__pyx_int_23); + Py_CLEAR(clear_module_state->__pyx_int_31); + Py_CLEAR(clear_module_state->__pyx_int_32); + Py_CLEAR(clear_module_state->__pyx_int_48); + Py_CLEAR(clear_module_state->__pyx_int_56); + Py_CLEAR(clear_module_state->__pyx_int_59); + Py_CLEAR(clear_module_state->__pyx_int_63); + Py_CLEAR(clear_module_state->__pyx_int_64); + Py_CLEAR(clear_module_state->__pyx_int_76); + Py_CLEAR(clear_module_state->__pyx_int_80); + Py_CLEAR(clear_module_state->__pyx_int_96); + Py_CLEAR(clear_module_state->__pyx_int_100); + Py_CLEAR(clear_module_state->__pyx_int_255); + Py_CLEAR(clear_module_state->__pyx_int_1000); + Py_CLEAR(clear_module_state->__pyx_int_2000); + Py_CLEAR(clear_module_state->__pyx_int_4095); + Py_CLEAR(clear_module_state->__pyx_int_65535); + Py_CLEAR(clear_module_state->__pyx_int_999999); + Py_CLEAR(clear_module_state->__pyx_int_222419149); + Py_CLEAR(clear_module_state->__pyx_int_228825662); + Py_CLEAR(clear_module_state->__pyx_int_238750788); + Py_CLEAR(clear_module_state->__pyx_int_0xffffffffffff); + Py_CLEAR(clear_module_state->__pyx_int_0x2000000000000000); + Py_CLEAR(clear_module_state->__pyx_int_0x4000000000000000); + Py_CLEAR(clear_module_state->__pyx_int_0x8000000000000000); + Py_CLEAR(clear_module_state->__pyx_int_neg_1); + return 0; +} +#endif +/* #### Code section: module_state_traverse ### */ +#if CYTHON_USE_MODULE_STATE +static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) { + __pyx_mstatetype *traverse_module_state = __Pyx_PyModule_GetState(m); + if (!traverse_module_state) return 0; + Py_VISIT(traverse_module_state->__pyx_d); + Py_VISIT(traverse_module_state->__pyx_b); + Py_VISIT(traverse_module_state->__pyx_cython_runtime); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_tuple); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_bytes); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); + #endif + Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4type_type); + Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4bool_bool); + Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_7complex_complex); + Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_8datetime_date); + Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_8datetime_time); + Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_8datetime_datetime); + Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_8datetime_timedelta); + Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_8datetime_tzinfo); + Py_VISIT(traverse_module_state->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer); + Py_VISIT(traverse_module_state->__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer); + Py_VISIT(traverse_module_state->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer); + Py_VISIT(traverse_module_state->__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer); + Py_VISIT(traverse_module_state->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext); + Py_VISIT(traverse_module_state->__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext); + Py_VISIT(traverse_module_state->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe); + Py_VISIT(traverse_module_state->__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe); + Py_VISIT(traverse_module_state->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID); + Py_VISIT(traverse_module_state->__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID); + for (int i=0; i<4; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_slice[i]); } + for (int i=0; i<3; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_tuple[i]); } + for (int i=0; i<14; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_codeobj_tab[i]); } + for (int i=0; i<271; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); } + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_0); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_1); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_3); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_5); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_7); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_8); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_10); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_12); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_15); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_20); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_23); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_31); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_32); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_48); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_56); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_59); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_63); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_64); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_76); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_80); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_96); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_100); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_255); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_1000); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_2000); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_4095); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_65535); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_999999); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_222419149); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_228825662); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_238750788); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_0xffffffffffff); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_0x2000000000000000); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_0x4000000000000000); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_0x8000000000000000); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_neg_1); + return 0; +} +#endif +/* #### Code section: module_code ### */ + +/* "cpython/complex.pxd":20 + * + * # unavailable in limited API + * @property # <<<<<<<<<<<<<< + * @_cython.c_compile_guard("!CYTHON_COMPILING_IN_LIMITED_API") + * cdef inline double real(self) noexcept: +*/ + +#if !CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE double __pyx_f_7cpython_7complex_7complex_4real_real(PyComplexObject *__pyx_v_self) { + double __pyx_r; + + /* "cpython/complex.pxd":23 + * @_cython.c_compile_guard("!CYTHON_COMPILING_IN_LIMITED_API") + * cdef inline double real(self) noexcept: + * return self.cval.real # <<<<<<<<<<<<<< + * + * # unavailable in limited API +*/ + __pyx_r = __pyx_v_self->cval.real; + goto __pyx_L0; + + /* "cpython/complex.pxd":20 + * + * # unavailable in limited API + * @property # <<<<<<<<<<<<<< + * @_cython.c_compile_guard("!CYTHON_COMPILING_IN_LIMITED_API") + * cdef inline double real(self) noexcept: +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} +#endif /*!(#if !CYTHON_COMPILING_IN_LIMITED_API)*/ + +/* "cpython/complex.pxd":26 + * + * # unavailable in limited API + * @property # <<<<<<<<<<<<<< + * @_cython.c_compile_guard("!CYTHON_COMPILING_IN_LIMITED_API") + * cdef inline double imag(self) noexcept: +*/ + +#if !CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE double __pyx_f_7cpython_7complex_7complex_4imag_imag(PyComplexObject *__pyx_v_self) { + double __pyx_r; + + /* "cpython/complex.pxd":29 + * @_cython.c_compile_guard("!CYTHON_COMPILING_IN_LIMITED_API") + * cdef inline double imag(self) noexcept: + * return self.cval.imag # <<<<<<<<<<<<<< + * + * # PyTypeObject PyComplex_Type +*/ + __pyx_r = __pyx_v_self->cval.imag; + goto __pyx_L0; + + /* "cpython/complex.pxd":26 + * + * # unavailable in limited API + * @property # <<<<<<<<<<<<<< + * @_cython.c_compile_guard("!CYTHON_COMPILING_IN_LIMITED_API") + * cdef inline double imag(self) noexcept: +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} +#endif /*!(#if !CYTHON_COMPILING_IN_LIMITED_API)*/ + +/* "cpython/contextvars.pxd":115 + * + * + * @_cython.c_compile_guard("!CYTHON_COMPILING_IN_LIMITED_API") # <<<<<<<<<<<<<< + * cdef inline object get_value(var, default_value=None): + * """Return a new reference to the value of the context variable, +*/ + +#if !CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE PyObject *__pyx_f_7cpython_11contextvars_get_value(PyObject *__pyx_v_var, struct __pyx_opt_args_7cpython_11contextvars_get_value *__pyx_optional_args) { + + /* "cpython/contextvars.pxd":116 + * + * @_cython.c_compile_guard("!CYTHON_COMPILING_IN_LIMITED_API") + * cdef inline object get_value(var, default_value=None): # <<<<<<<<<<<<<< + * """Return a new reference to the value of the context variable, + * or the default value of the context variable, +*/ + PyObject *__pyx_v_default_value = ((PyObject *)Py_None); + PyObject *__pyx_v_value; + PyObject *__pyx_v_pyvalue = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_value", 0); + if (__pyx_optional_args) { + if (__pyx_optional_args->__pyx_n > 0) { + __pyx_v_default_value = __pyx_optional_args->default_value; + } + } + + /* "cpython/contextvars.pxd":121 + * or None if no such value or default was found. + * """ + * cdef PyObject *value = NULL # <<<<<<<<<<<<<< + * PyContextVar_Get(var, NULL, &value) + * if value is NULL: +*/ + __pyx_v_value = NULL; + + /* "cpython/contextvars.pxd":122 + * """ + * cdef PyObject *value = NULL + * PyContextVar_Get(var, NULL, &value) # <<<<<<<<<<<<<< + * if value is NULL: + * # context variable does not have a default +*/ + __pyx_t_1 = PyContextVar_Get(__pyx_v_var, NULL, (&__pyx_v_value)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 122, __pyx_L1_error) + + /* "cpython/contextvars.pxd":123 + * cdef PyObject *value = NULL + * PyContextVar_Get(var, NULL, &value) + * if value is NULL: # <<<<<<<<<<<<<< + * # context variable does not have a default + * pyvalue = default_value +*/ + __pyx_t_2 = (__pyx_v_value == NULL); + if (__pyx_t_2) { + + /* "cpython/contextvars.pxd":125 + * if value is NULL: + * # context variable does not have a default + * pyvalue = default_value # <<<<<<<<<<<<<< + * else: + * # value or default value of context variable +*/ + __Pyx_INCREF(__pyx_v_default_value); + __pyx_v_pyvalue = __pyx_v_default_value; + + /* "cpython/contextvars.pxd":123 + * cdef PyObject *value = NULL + * PyContextVar_Get(var, NULL, &value) + * if value is NULL: # <<<<<<<<<<<<<< + * # context variable does not have a default + * pyvalue = default_value +*/ + goto __pyx_L3; + } + + /* "cpython/contextvars.pxd":128 + * else: + * # value or default value of context variable + * pyvalue = value # <<<<<<<<<<<<<< + * Py_XDECREF(value) # PyContextVar_Get() returned an owned reference as 'PyObject*' + * return pyvalue +*/ + /*else*/ { + __pyx_t_3 = ((PyObject *)__pyx_v_value); + __Pyx_INCREF(__pyx_t_3); + __pyx_v_pyvalue = __pyx_t_3; + __pyx_t_3 = 0; + + /* "cpython/contextvars.pxd":129 + * # value or default value of context variable + * pyvalue = value + * Py_XDECREF(value) # PyContextVar_Get() returned an owned reference as 'PyObject*' # <<<<<<<<<<<<<< + * return pyvalue + * +*/ + Py_XDECREF(__pyx_v_value); + } + __pyx_L3:; + + /* "cpython/contextvars.pxd":130 + * pyvalue = value + * Py_XDECREF(value) # PyContextVar_Get() returned an owned reference as 'PyObject*' + * return pyvalue # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_pyvalue); + __pyx_r = __pyx_v_pyvalue; + goto __pyx_L0; + + /* "cpython/contextvars.pxd":115 + * + * + * @_cython.c_compile_guard("!CYTHON_COMPILING_IN_LIMITED_API") # <<<<<<<<<<<<<< + * cdef inline object get_value(var, default_value=None): + * """Return a new reference to the value of the context variable, +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("cpython.contextvars.get_value", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_pyvalue); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +#endif /*!(#if !CYTHON_COMPILING_IN_LIMITED_API)*/ + +/* "cpython/contextvars.pxd":133 + * + * + * @_cython.c_compile_guard("!CYTHON_COMPILING_IN_LIMITED_API") # <<<<<<<<<<<<<< + * cdef inline object get_value_no_default(var, default_value=None): + * """Return a new reference to the value of the context variable, +*/ + +#if !CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE PyObject *__pyx_f_7cpython_11contextvars_get_value_no_default(PyObject *__pyx_v_var, struct __pyx_opt_args_7cpython_11contextvars_get_value_no_default *__pyx_optional_args) { + + /* "cpython/contextvars.pxd":134 + * + * @_cython.c_compile_guard("!CYTHON_COMPILING_IN_LIMITED_API") + * cdef inline object get_value_no_default(var, default_value=None): # <<<<<<<<<<<<<< + * """Return a new reference to the value of the context variable, + * or the provided default value if no such value was found. +*/ + PyObject *__pyx_v_default_value = ((PyObject *)Py_None); + PyObject *__pyx_v_value; + PyObject *__pyx_v_pyvalue = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_value_no_default", 0); + if (__pyx_optional_args) { + if (__pyx_optional_args->__pyx_n > 0) { + __pyx_v_default_value = __pyx_optional_args->default_value; + } + } + + /* "cpython/contextvars.pxd":140 + * Ignores the default value of the context variable, if any. + * """ + * cdef PyObject *value = NULL # <<<<<<<<<<<<<< + * PyContextVar_Get(var, default_value, &value) + * # value of context variable or 'default_value' +*/ + __pyx_v_value = NULL; + + /* "cpython/contextvars.pxd":141 + * """ + * cdef PyObject *value = NULL + * PyContextVar_Get(var, default_value, &value) # <<<<<<<<<<<<<< + * # value of context variable or 'default_value' + * pyvalue = value +*/ + __pyx_t_1 = PyContextVar_Get(__pyx_v_var, ((PyObject *)__pyx_v_default_value), (&__pyx_v_value)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 141, __pyx_L1_error) + + /* "cpython/contextvars.pxd":143 + * PyContextVar_Get(var, default_value, &value) + * # value of context variable or 'default_value' + * pyvalue = value # <<<<<<<<<<<<<< + * Py_XDECREF(value) # PyContextVar_Get() returned an owned reference as 'PyObject*' + * return pyvalue +*/ + __pyx_t_2 = ((PyObject *)__pyx_v_value); + __Pyx_INCREF(__pyx_t_2); + __pyx_v_pyvalue = __pyx_t_2; + __pyx_t_2 = 0; + + /* "cpython/contextvars.pxd":144 + * # value of context variable or 'default_value' + * pyvalue = value + * Py_XDECREF(value) # PyContextVar_Get() returned an owned reference as 'PyObject*' # <<<<<<<<<<<<<< + * return pyvalue +*/ + Py_XDECREF(__pyx_v_value); + + /* "cpython/contextvars.pxd":145 + * pyvalue = value + * Py_XDECREF(value) # PyContextVar_Get() returned an owned reference as 'PyObject*' + * return pyvalue # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_pyvalue); + __pyx_r = __pyx_v_pyvalue; + goto __pyx_L0; + + /* "cpython/contextvars.pxd":133 + * + * + * @_cython.c_compile_guard("!CYTHON_COMPILING_IN_LIMITED_API") # <<<<<<<<<<<<<< + * cdef inline object get_value_no_default(var, default_value=None): + * """Return a new reference to the value of the context variable, +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("cpython.contextvars.get_value_no_default", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_pyvalue); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +#endif /*!(#if !CYTHON_COMPILING_IN_LIMITED_API)*/ + +/* "async_gaussdb/gaussdbproto/frb.pxd":14 + * ssize_t len + * + * inline ssize_t frb_get_len(FRBuffer *frb): # <<<<<<<<<<<<<< + * return frb.len + * +*/ + +static CYTHON_INLINE Py_ssize_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_get_len(struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_frb) { + Py_ssize_t __pyx_r; + + /* "async_gaussdb/gaussdbproto/frb.pxd":15 + * + * inline ssize_t frb_get_len(FRBuffer *frb): + * return frb.len # <<<<<<<<<<<<<< + * + * inline void frb_set_len(FRBuffer *frb, ssize_t new_len): +*/ + __pyx_r = __pyx_v_frb->len; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/frb.pxd":14 + * ssize_t len + * + * inline ssize_t frb_get_len(FRBuffer *frb): # <<<<<<<<<<<<<< + * return frb.len + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/frb.pxd":17 + * return frb.len + * + * inline void frb_set_len(FRBuffer *frb, ssize_t new_len): # <<<<<<<<<<<<<< + * frb.len = new_len + * +*/ + +static CYTHON_INLINE void __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_set_len(struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_frb, Py_ssize_t __pyx_v_new_len) { + + /* "async_gaussdb/gaussdbproto/frb.pxd":18 + * + * inline void frb_set_len(FRBuffer *frb, ssize_t new_len): + * frb.len = new_len # <<<<<<<<<<<<<< + * + * inline void frb_init(FRBuffer *frb, const char *buf, ssize_t len): +*/ + __pyx_v_frb->len = __pyx_v_new_len; + + /* "async_gaussdb/gaussdbproto/frb.pxd":17 + * return frb.len + * + * inline void frb_set_len(FRBuffer *frb, ssize_t new_len): # <<<<<<<<<<<<<< + * frb.len = new_len + * +*/ + + /* function exit code */ +} + +/* "async_gaussdb/gaussdbproto/frb.pxd":20 + * frb.len = new_len + * + * inline void frb_init(FRBuffer *frb, const char *buf, ssize_t len): # <<<<<<<<<<<<<< + * frb.buf = buf + * frb.len = len +*/ + +static CYTHON_INLINE void __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_init(struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_frb, char const *__pyx_v_buf, Py_ssize_t __pyx_v_len) { + + /* "async_gaussdb/gaussdbproto/frb.pxd":21 + * + * inline void frb_init(FRBuffer *frb, const char *buf, ssize_t len): + * frb.buf = buf # <<<<<<<<<<<<<< + * frb.len = len + * +*/ + __pyx_v_frb->buf = __pyx_v_buf; + + /* "async_gaussdb/gaussdbproto/frb.pxd":22 + * inline void frb_init(FRBuffer *frb, const char *buf, ssize_t len): + * frb.buf = buf + * frb.len = len # <<<<<<<<<<<<<< + * + * inline const char* frb_read(FRBuffer *frb, ssize_t n) except NULL: +*/ + __pyx_v_frb->len = __pyx_v_len; + + /* "async_gaussdb/gaussdbproto/frb.pxd":20 + * frb.len = new_len + * + * inline void frb_init(FRBuffer *frb, const char *buf, ssize_t len): # <<<<<<<<<<<<<< + * frb.buf = buf + * frb.len = len +*/ + + /* function exit code */ +} + +/* "async_gaussdb/gaussdbproto/frb.pxd":24 + * frb.len = len + * + * inline const char* frb_read(FRBuffer *frb, ssize_t n) except NULL: # <<<<<<<<<<<<<< + * cdef const char *result + * +*/ + +static CYTHON_INLINE char const *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_frb, Py_ssize_t __pyx_v_n) { + char const *__pyx_v_result; + char const *__pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + char const *__pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("frb_read", 0); + + /* "async_gaussdb/gaussdbproto/frb.pxd":27 + * cdef const char *result + * + * frb_check(frb, n) # <<<<<<<<<<<<<< + * + * result = frb.buf +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_check(__pyx_v_frb, __pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/frb.pxd":29 + * frb_check(frb, n) + * + * result = frb.buf # <<<<<<<<<<<<<< + * frb.buf += n + * frb.len -= n +*/ + __pyx_t_2 = __pyx_v_frb->buf; + __pyx_v_result = __pyx_t_2; + + /* "async_gaussdb/gaussdbproto/frb.pxd":30 + * + * result = frb.buf + * frb.buf += n # <<<<<<<<<<<<<< + * frb.len -= n + * +*/ + __pyx_v_frb->buf = (__pyx_v_frb->buf + __pyx_v_n); + + /* "async_gaussdb/gaussdbproto/frb.pxd":31 + * result = frb.buf + * frb.buf += n + * frb.len -= n # <<<<<<<<<<<<<< + * + * return result +*/ + __pyx_v_frb->len = (__pyx_v_frb->len - __pyx_v_n); + + /* "async_gaussdb/gaussdbproto/frb.pxd":33 + * frb.len -= n + * + * return result # <<<<<<<<<<<<<< + * + * inline const char* frb_read_all(FRBuffer *frb): +*/ + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/frb.pxd":24 + * frb.len = len + * + * inline const char* frb_read(FRBuffer *frb, ssize_t n) except NULL: # <<<<<<<<<<<<<< + * cdef const char *result + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.frb_read", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/frb.pxd":35 + * return result + * + * inline const char* frb_read_all(FRBuffer *frb): # <<<<<<<<<<<<<< + * cdef const char *result + * result = frb.buf +*/ + +static CYTHON_INLINE char const *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read_all(struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_frb) { + char const *__pyx_v_result; + char const *__pyx_r; + char const *__pyx_t_1; + + /* "async_gaussdb/gaussdbproto/frb.pxd":37 + * inline const char* frb_read_all(FRBuffer *frb): + * cdef const char *result + * result = frb.buf # <<<<<<<<<<<<<< + * frb.buf += frb.len + * frb.len = 0 +*/ + __pyx_t_1 = __pyx_v_frb->buf; + __pyx_v_result = __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/frb.pxd":38 + * cdef const char *result + * result = frb.buf + * frb.buf += frb.len # <<<<<<<<<<<<<< + * frb.len = 0 + * return result +*/ + __pyx_v_frb->buf = (__pyx_v_frb->buf + __pyx_v_frb->len); + + /* "async_gaussdb/gaussdbproto/frb.pxd":39 + * result = frb.buf + * frb.buf += frb.len + * frb.len = 0 # <<<<<<<<<<<<<< + * return result + * +*/ + __pyx_v_frb->len = 0; + + /* "async_gaussdb/gaussdbproto/frb.pxd":40 + * frb.buf += frb.len + * frb.len = 0 + * return result # <<<<<<<<<<<<<< + * + * inline FRBuffer *frb_slice_from(FRBuffer *frb, +*/ + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/frb.pxd":35 + * return result + * + * inline const char* frb_read_all(FRBuffer *frb): # <<<<<<<<<<<<<< + * cdef const char *result + * result = frb.buf +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/frb.pxd":42 + * return result + * + * inline FRBuffer *frb_slice_from(FRBuffer *frb, # <<<<<<<<<<<<<< + * FRBuffer* source, ssize_t len): + * frb.buf = frb_read(source, len) +*/ + +static CYTHON_INLINE struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_slice_from(struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_frb, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_source, Py_ssize_t __pyx_v_len) { + struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_r; + char const *__pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + + /* "async_gaussdb/gaussdbproto/frb.pxd":44 + * inline FRBuffer *frb_slice_from(FRBuffer *frb, + * FRBuffer* source, ssize_t len): + * frb.buf = frb_read(source, len) # <<<<<<<<<<<<<< + * frb.len = len + * return frb +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_source, __pyx_v_len); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(7, 44, __pyx_L1_error) + __pyx_v_frb->buf = __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/frb.pxd":45 + * FRBuffer* source, ssize_t len): + * frb.buf = frb_read(source, len) + * frb.len = len # <<<<<<<<<<<<<< + * return frb + * +*/ + __pyx_v_frb->len = __pyx_v_len; + + /* "async_gaussdb/gaussdbproto/frb.pxd":46 + * frb.buf = frb_read(source, len) + * frb.len = len + * return frb # <<<<<<<<<<<<<< + * + * object frb_check(FRBuffer *frb, ssize_t n) +*/ + __pyx_r = __pyx_v_frb; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/frb.pxd":42 + * return result + * + * inline FRBuffer *frb_slice_from(FRBuffer *frb, # <<<<<<<<<<<<<< + * FRBuffer* source, ssize_t len): + * frb.buf = frb_read(source, len) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.frb_slice_from", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pxd":28 + * bint _message_mode + * + * cdef inline len(self): # <<<<<<<<<<<<<< + * return self._length + * +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_len(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("len", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pxd":29 + * + * cdef inline len(self): + * return self._length # <<<<<<<<<<<<<< + * + * cdef inline write_len_prefixed_utf8(self, str s): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyLong_FromSsize_t(__pyx_v_self->_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pxd":28 + * bint _message_mode + * + * cdef inline len(self): # <<<<<<<<<<<<<< + * return self._length + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.len", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pxd":31 + * return self._length + * + * cdef inline write_len_prefixed_utf8(self, str s): # <<<<<<<<<<<<<< + * return self.write_len_prefixed_bytes(s.encode('utf-8')) + * +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_len_prefixed_utf8(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, PyObject *__pyx_v_s) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_len_prefixed_utf8", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pxd":32 + * + * cdef inline write_len_prefixed_utf8(self, str s): + * return self.write_len_prefixed_bytes(s.encode('utf-8')) # <<<<<<<<<<<<<< + * + * cdef inline _check_readonly(self) +*/ + __Pyx_XDECREF(__pyx_r); + if (unlikely(__pyx_v_s == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode"); + __PYX_ERR(8, 32, __pyx_L1_error) + } + __pyx_t_1 = PyUnicode_AsUTF8String(__pyx_v_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_len_prefixed_bytes(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 32, __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; + + /* "async_gaussdb/gaussdbproto/buffer.pxd":31 + * return self._length + * + * cdef inline write_len_prefixed_utf8(self, str s): # <<<<<<<<<<<<<< + * return self.write_len_prefixed_bytes(s.encode('utf-8')) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.write_len_prefixed_utf8", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pxd":100 + * bint _current_message_ready + * + * cdef inline len(self): # <<<<<<<<<<<<<< + * return self._length + * +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_len(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("len", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pxd":101 + * + * cdef inline len(self): + * return self._length # <<<<<<<<<<<<<< + * + * cdef inline char get_message_type(self): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyLong_FromSsize_t(__pyx_v_self->_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pxd":100 + * bint _current_message_ready + * + * cdef inline len(self): # <<<<<<<<<<<<<< + * return self._length + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.len", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pxd":103 + * return self._length + * + * cdef inline char get_message_type(self): # <<<<<<<<<<<<<< + * return self._current_message_type + * +*/ + +static CYTHON_INLINE char __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_get_message_type(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + char __pyx_r; + + /* "async_gaussdb/gaussdbproto/buffer.pxd":104 + * + * cdef inline char get_message_type(self): + * return self._current_message_type # <<<<<<<<<<<<<< + * + * cdef inline int32_t get_message_length(self): +*/ + __pyx_r = __pyx_v_self->_current_message_type; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pxd":103 + * return self._length + * + * cdef inline char get_message_type(self): # <<<<<<<<<<<<<< + * return self._current_message_type + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pxd":106 + * return self._current_message_type + * + * cdef inline int32_t get_message_length(self): # <<<<<<<<<<<<<< + * return self._current_message_len + * +*/ + +static CYTHON_INLINE int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_get_message_length(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + int32_t __pyx_r; + + /* "async_gaussdb/gaussdbproto/buffer.pxd":107 + * + * cdef inline int32_t get_message_length(self): + * return self._current_message_len # <<<<<<<<<<<<<< + * + * cdef feed_data(self, data) +*/ + __pyx_r = __pyx_v_self->_current_message_len; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pxd":106 + * return self._current_message_type + * + * cdef inline int32_t get_message_length(self): # <<<<<<<<<<<<<< + * return self._current_message_len + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":44 + * + * ctypedef extern class datetime.date[object PyDateTime_Date]: + * @property # <<<<<<<<<<<<<< + * cdef inline int year(self) noexcept: + * return PyDateTime_GET_YEAR(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4date_4year_year(PyDateTime_Date *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":46 + * @property + * cdef inline int year(self) noexcept: + * return PyDateTime_GET_YEAR(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = PyDateTime_GET_YEAR(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":44 + * + * ctypedef extern class datetime.date[object PyDateTime_Date]: + * @property # <<<<<<<<<<<<<< + * cdef inline int year(self) noexcept: + * return PyDateTime_GET_YEAR(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":48 + * return PyDateTime_GET_YEAR(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int month(self) noexcept: + * return PyDateTime_GET_MONTH(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4date_5month_month(PyDateTime_Date *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":50 + * @property + * cdef inline int month(self) noexcept: + * return PyDateTime_GET_MONTH(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = PyDateTime_GET_MONTH(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":48 + * return PyDateTime_GET_YEAR(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int month(self) noexcept: + * return PyDateTime_GET_MONTH(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":52 + * return PyDateTime_GET_MONTH(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int day(self) noexcept: + * return PyDateTime_GET_DAY(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4date_3day_day(PyDateTime_Date *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":54 + * @property + * cdef inline int day(self) noexcept: + * return PyDateTime_GET_DAY(self) # <<<<<<<<<<<<<< + * + * ctypedef extern class datetime.time[object PyDateTime_Time]: +*/ + __pyx_r = PyDateTime_GET_DAY(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":52 + * return PyDateTime_GET_MONTH(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int day(self) noexcept: + * return PyDateTime_GET_DAY(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":57 + * + * ctypedef extern class datetime.time[object PyDateTime_Time]: + * @property # <<<<<<<<<<<<<< + * cdef inline int hour(self) noexcept: + * return PyDateTime_TIME_GET_HOUR(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4time_4hour_hour(PyDateTime_Time *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":59 + * @property + * cdef inline int hour(self) noexcept: + * return PyDateTime_TIME_GET_HOUR(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = PyDateTime_TIME_GET_HOUR(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":57 + * + * ctypedef extern class datetime.time[object PyDateTime_Time]: + * @property # <<<<<<<<<<<<<< + * cdef inline int hour(self) noexcept: + * return PyDateTime_TIME_GET_HOUR(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":61 + * return PyDateTime_TIME_GET_HOUR(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int minute(self) noexcept: + * return PyDateTime_TIME_GET_MINUTE(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4time_6minute_minute(PyDateTime_Time *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":63 + * @property + * cdef inline int minute(self) noexcept: + * return PyDateTime_TIME_GET_MINUTE(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = PyDateTime_TIME_GET_MINUTE(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":61 + * return PyDateTime_TIME_GET_HOUR(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int minute(self) noexcept: + * return PyDateTime_TIME_GET_MINUTE(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":65 + * return PyDateTime_TIME_GET_MINUTE(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int second(self) noexcept: + * return PyDateTime_TIME_GET_SECOND(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4time_6second_second(PyDateTime_Time *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":67 + * @property + * cdef inline int second(self) noexcept: + * return PyDateTime_TIME_GET_SECOND(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = PyDateTime_TIME_GET_SECOND(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":65 + * return PyDateTime_TIME_GET_MINUTE(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int second(self) noexcept: + * return PyDateTime_TIME_GET_SECOND(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":69 + * return PyDateTime_TIME_GET_SECOND(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int microsecond(self) noexcept: + * return PyDateTime_TIME_GET_MICROSECOND(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4time_11microsecond_microsecond(PyDateTime_Time *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":71 + * @property + * cdef inline int microsecond(self) noexcept: + * return PyDateTime_TIME_GET_MICROSECOND(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = PyDateTime_TIME_GET_MICROSECOND(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":69 + * return PyDateTime_TIME_GET_SECOND(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int microsecond(self) noexcept: + * return PyDateTime_TIME_GET_MICROSECOND(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":73 + * return PyDateTime_TIME_GET_MICROSECOND(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline object tzinfo(self): + * return PyDateTime_TIME_GET_TZINFO(self) +*/ + +static CYTHON_INLINE PyObject *__pyx_f_7cpython_8datetime_4time_6tzinfo_tzinfo(PyDateTime_Time *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1; + __Pyx_RefNannySetupContext("tzinfo", 0); + + /* "cpython/datetime.pxd":75 + * @property + * cdef inline object tzinfo(self): + * return PyDateTime_TIME_GET_TZINFO(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyDateTime_TIME_GET_TZINFO(((PyObject *)__pyx_v_self)); + __Pyx_INCREF(((PyObject *)__pyx_t_1)); + __pyx_r = ((PyObject *)__pyx_t_1); + goto __pyx_L0; + + /* "cpython/datetime.pxd":73 + * return PyDateTime_TIME_GET_MICROSECOND(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline object tzinfo(self): + * return PyDateTime_TIME_GET_TZINFO(self) +*/ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "cpython/datetime.pxd":77 + * return PyDateTime_TIME_GET_TZINFO(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int fold(self) noexcept: + * # For Python < 3.6 this returns 0 no matter what +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_4time_4fold_fold(PyDateTime_Time *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":80 + * cdef inline int fold(self) noexcept: + * # For Python < 3.6 this returns 0 no matter what + * return PyDateTime_TIME_GET_FOLD(self) # <<<<<<<<<<<<<< + * + * ctypedef extern class datetime.datetime[object PyDateTime_DateTime]: +*/ + __pyx_r = PyDateTime_TIME_GET_FOLD(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":77 + * return PyDateTime_TIME_GET_TZINFO(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int fold(self) noexcept: + * # For Python < 3.6 this returns 0 no matter what +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":83 + * + * ctypedef extern class datetime.datetime[object PyDateTime_DateTime]: + * @property # <<<<<<<<<<<<<< + * cdef inline int year(self) noexcept: + * return PyDateTime_GET_YEAR(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_4year_year(PyDateTime_DateTime *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":85 + * @property + * cdef inline int year(self) noexcept: + * return PyDateTime_GET_YEAR(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = PyDateTime_GET_YEAR(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":83 + * + * ctypedef extern class datetime.datetime[object PyDateTime_DateTime]: + * @property # <<<<<<<<<<<<<< + * cdef inline int year(self) noexcept: + * return PyDateTime_GET_YEAR(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":87 + * return PyDateTime_GET_YEAR(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int month(self) noexcept: + * return PyDateTime_GET_MONTH(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_5month_month(PyDateTime_DateTime *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":89 + * @property + * cdef inline int month(self) noexcept: + * return PyDateTime_GET_MONTH(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = PyDateTime_GET_MONTH(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":87 + * return PyDateTime_GET_YEAR(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int month(self) noexcept: + * return PyDateTime_GET_MONTH(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":91 + * return PyDateTime_GET_MONTH(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int day(self) noexcept: + * return PyDateTime_GET_DAY(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_3day_day(PyDateTime_DateTime *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":93 + * @property + * cdef inline int day(self) noexcept: + * return PyDateTime_GET_DAY(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = PyDateTime_GET_DAY(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":91 + * return PyDateTime_GET_MONTH(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int day(self) noexcept: + * return PyDateTime_GET_DAY(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":95 + * return PyDateTime_GET_DAY(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int hour(self) noexcept: + * return PyDateTime_DATE_GET_HOUR(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_4hour_hour(PyDateTime_DateTime *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":97 + * @property + * cdef inline int hour(self) noexcept: + * return PyDateTime_DATE_GET_HOUR(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = PyDateTime_DATE_GET_HOUR(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":95 + * return PyDateTime_GET_DAY(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int hour(self) noexcept: + * return PyDateTime_DATE_GET_HOUR(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":99 + * return PyDateTime_DATE_GET_HOUR(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int minute(self) noexcept: + * return PyDateTime_DATE_GET_MINUTE(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_6minute_minute(PyDateTime_DateTime *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":101 + * @property + * cdef inline int minute(self) noexcept: + * return PyDateTime_DATE_GET_MINUTE(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = PyDateTime_DATE_GET_MINUTE(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":99 + * return PyDateTime_DATE_GET_HOUR(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int minute(self) noexcept: + * return PyDateTime_DATE_GET_MINUTE(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":103 + * return PyDateTime_DATE_GET_MINUTE(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int second(self) noexcept: + * return PyDateTime_DATE_GET_SECOND(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_6second_second(PyDateTime_DateTime *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":105 + * @property + * cdef inline int second(self) noexcept: + * return PyDateTime_DATE_GET_SECOND(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = PyDateTime_DATE_GET_SECOND(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":103 + * return PyDateTime_DATE_GET_MINUTE(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int second(self) noexcept: + * return PyDateTime_DATE_GET_SECOND(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":107 + * return PyDateTime_DATE_GET_SECOND(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int microsecond(self) noexcept: + * return PyDateTime_DATE_GET_MICROSECOND(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_11microsecond_microsecond(PyDateTime_DateTime *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":109 + * @property + * cdef inline int microsecond(self) noexcept: + * return PyDateTime_DATE_GET_MICROSECOND(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = PyDateTime_DATE_GET_MICROSECOND(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":107 + * return PyDateTime_DATE_GET_SECOND(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int microsecond(self) noexcept: + * return PyDateTime_DATE_GET_MICROSECOND(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":111 + * return PyDateTime_DATE_GET_MICROSECOND(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline object tzinfo(self): + * return PyDateTime_DATE_GET_TZINFO(self) +*/ + +static CYTHON_INLINE PyObject *__pyx_f_7cpython_8datetime_8datetime_6tzinfo_tzinfo(PyDateTime_DateTime *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1; + __Pyx_RefNannySetupContext("tzinfo", 0); + + /* "cpython/datetime.pxd":113 + * @property + * cdef inline object tzinfo(self): + * return PyDateTime_DATE_GET_TZINFO(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyDateTime_DATE_GET_TZINFO(((PyObject *)__pyx_v_self)); + __Pyx_INCREF(((PyObject *)__pyx_t_1)); + __pyx_r = ((PyObject *)__pyx_t_1); + goto __pyx_L0; + + /* "cpython/datetime.pxd":111 + * return PyDateTime_DATE_GET_MICROSECOND(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline object tzinfo(self): + * return PyDateTime_DATE_GET_TZINFO(self) +*/ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "cpython/datetime.pxd":115 + * return PyDateTime_DATE_GET_TZINFO(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int fold(self) noexcept: + * # For Python < 3.6 this returns 0 no matter what +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_8datetime_4fold_fold(PyDateTime_DateTime *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":118 + * cdef inline int fold(self) noexcept: + * # For Python < 3.6 this returns 0 no matter what + * return PyDateTime_DATE_GET_FOLD(self) # <<<<<<<<<<<<<< + * + * ctypedef extern class datetime.timedelta[object PyDateTime_Delta]: +*/ + __pyx_r = PyDateTime_DATE_GET_FOLD(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":115 + * return PyDateTime_DATE_GET_TZINFO(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int fold(self) noexcept: + * # For Python < 3.6 this returns 0 no matter what +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":121 + * + * ctypedef extern class datetime.timedelta[object PyDateTime_Delta]: + * @property # <<<<<<<<<<<<<< + * cdef inline int day(self) noexcept: + * return PyDateTime_DELTA_GET_DAYS(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_9timedelta_3day_day(PyDateTime_Delta *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":123 + * @property + * cdef inline int day(self) noexcept: + * return PyDateTime_DELTA_GET_DAYS(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = PyDateTime_DELTA_GET_DAYS(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":121 + * + * ctypedef extern class datetime.timedelta[object PyDateTime_Delta]: + * @property # <<<<<<<<<<<<<< + * cdef inline int day(self) noexcept: + * return PyDateTime_DELTA_GET_DAYS(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":125 + * return PyDateTime_DELTA_GET_DAYS(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int second(self) noexcept: + * return PyDateTime_DELTA_GET_SECONDS(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_9timedelta_6second_second(PyDateTime_Delta *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":127 + * @property + * cdef inline int second(self) noexcept: + * return PyDateTime_DELTA_GET_SECONDS(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_r = PyDateTime_DELTA_GET_SECONDS(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":125 + * return PyDateTime_DELTA_GET_DAYS(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int second(self) noexcept: + * return PyDateTime_DELTA_GET_SECONDS(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":129 + * return PyDateTime_DELTA_GET_SECONDS(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int microsecond(self) noexcept: + * return PyDateTime_DELTA_GET_MICROSECONDS(self) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_9timedelta_11microsecond_microsecond(PyDateTime_Delta *__pyx_v_self) { + int __pyx_r; + + /* "cpython/datetime.pxd":131 + * @property + * cdef inline int microsecond(self) noexcept: + * return PyDateTime_DELTA_GET_MICROSECONDS(self) # <<<<<<<<<<<<<< + * + * ctypedef extern class datetime.tzinfo[object PyDateTime_TZInfo]: +*/ + __pyx_r = PyDateTime_DELTA_GET_MICROSECONDS(((PyObject *)__pyx_v_self)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":129 + * return PyDateTime_DELTA_GET_SECONDS(self) + * + * @property # <<<<<<<<<<<<<< + * cdef inline int microsecond(self) noexcept: + * return PyDateTime_DELTA_GET_MICROSECONDS(self) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":255 + * # Datetime C API initialization function. + * # You have to call it before any usage of DateTime CAPI functions. + * cdef inline void import_datetime() noexcept: # <<<<<<<<<<<<<< + * PyDateTime_IMPORT + * +*/ + +static CYTHON_INLINE void __pyx_f_7cpython_8datetime_import_datetime(void) { + + /* "cpython/datetime.pxd":256 + * # You have to call it before any usage of DateTime CAPI functions. + * cdef inline void import_datetime() noexcept: + * PyDateTime_IMPORT # <<<<<<<<<<<<<< + * + * # Create date object using DateTime CAPI factory function. +*/ + (void)(PyDateTime_IMPORT); + + /* "cpython/datetime.pxd":255 + * # Datetime C API initialization function. + * # You have to call it before any usage of DateTime CAPI functions. + * cdef inline void import_datetime() noexcept: # <<<<<<<<<<<<<< + * PyDateTime_IMPORT + * +*/ + + /* function exit code */ +} + +/* "cpython/datetime.pxd":260 + * # Create date object using DateTime CAPI factory function. + * # Note, there are no range checks for any of the arguments. + * cdef inline date date_new(int year, int month, int day): # <<<<<<<<<<<<<< + * return PyDateTimeAPI.Date_FromDate(year, month, day, PyDateTimeAPI.DateType) + * +*/ + +static CYTHON_INLINE PyDateTime_Date *__pyx_f_7cpython_8datetime_date_new(int __pyx_v_year, int __pyx_v_month, int __pyx_v_day) { + PyDateTime_Date *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("date_new", 0); + + /* "cpython/datetime.pxd":261 + * # Note, there are no range checks for any of the arguments. + * cdef inline date date_new(int year, int month, int day): + * return PyDateTimeAPI.Date_FromDate(year, month, day, PyDateTimeAPI.DateType) # <<<<<<<<<<<<<< + * + * # Create time object using DateTime CAPI factory function +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __pyx_t_1 = ((PyObject *)PyDateTimeAPI->Date_FromDate(__pyx_v_year, __pyx_v_month, __pyx_v_day, PyDateTimeAPI->DateType)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 261, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = ((PyDateTime_Date *)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "cpython/datetime.pxd":260 + * # Create date object using DateTime CAPI factory function. + * # Note, there are no range checks for any of the arguments. + * cdef inline date date_new(int year, int month, int day): # <<<<<<<<<<<<<< + * return PyDateTimeAPI.Date_FromDate(year, month, day, PyDateTimeAPI.DateType) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("cpython.datetime.date_new", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "cpython/datetime.pxd":265 + * # Create time object using DateTime CAPI factory function + * # Note, there are no range checks for any of the arguments. + * cdef inline time time_new(int hour, int minute, int second, int microsecond, object tz, int fold=0): # <<<<<<<<<<<<<< + * return __Pyx_DateTime_TimeWithFold(hour, minute, second, microsecond, tz, fold) + * +*/ + +static CYTHON_INLINE PyDateTime_Time *__pyx_f_7cpython_8datetime_time_new(int __pyx_v_hour, int __pyx_v_minute, int __pyx_v_second, int __pyx_v_microsecond, PyObject *__pyx_v_tz, struct __pyx_opt_args_7cpython_8datetime_time_new *__pyx_optional_args) { + int __pyx_v_fold = ((int)0); + PyDateTime_Time *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("time_new", 0); + if (__pyx_optional_args) { + if (__pyx_optional_args->__pyx_n > 0) { + __pyx_v_fold = __pyx_optional_args->fold; + } + } + + /* "cpython/datetime.pxd":266 + * # Note, there are no range checks for any of the arguments. + * cdef inline time time_new(int hour, int minute, int second, int microsecond, object tz, int fold=0): + * return __Pyx_DateTime_TimeWithFold(hour, minute, second, microsecond, tz, fold) # <<<<<<<<<<<<<< + * + * # Create datetime object using DateTime CAPI factory function. +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __pyx_t_1 = ((PyObject *)__Pyx_DateTime_TimeWithFold(__pyx_v_hour, __pyx_v_minute, __pyx_v_second, __pyx_v_microsecond, __pyx_v_tz, __pyx_v_fold)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 266, __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_8datetime_time))))) __PYX_ERR(9, 266, __pyx_L1_error) + __pyx_r = ((PyDateTime_Time *)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "cpython/datetime.pxd":265 + * # Create time object using DateTime CAPI factory function + * # Note, there are no range checks for any of the arguments. + * cdef inline time time_new(int hour, int minute, int second, int microsecond, object tz, int fold=0): # <<<<<<<<<<<<<< + * return __Pyx_DateTime_TimeWithFold(hour, minute, second, microsecond, tz, fold) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("cpython.datetime.time_new", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "cpython/datetime.pxd":270 + * # Create datetime object using DateTime CAPI factory function. + * # Note, there are no range checks for any of the arguments. + * cdef inline datetime datetime_new(int year, int month, int day, int hour, int minute, int second, int microsecond, object tz, int fold=0): # <<<<<<<<<<<<<< + * return __Pyx_DateTime_DateTimeWithFold(year, month, day, hour, minute, second, microsecond, tz, fold) + * +*/ + +static CYTHON_INLINE PyDateTime_DateTime *__pyx_f_7cpython_8datetime_datetime_new(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_microsecond, PyObject *__pyx_v_tz, struct __pyx_opt_args_7cpython_8datetime_datetime_new *__pyx_optional_args) { + int __pyx_v_fold = ((int)0); + PyDateTime_DateTime *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("datetime_new", 0); + if (__pyx_optional_args) { + if (__pyx_optional_args->__pyx_n > 0) { + __pyx_v_fold = __pyx_optional_args->fold; + } + } + + /* "cpython/datetime.pxd":271 + * # Note, there are no range checks for any of the arguments. + * cdef inline datetime datetime_new(int year, int month, int day, int hour, int minute, int second, int microsecond, object tz, int fold=0): + * return __Pyx_DateTime_DateTimeWithFold(year, month, day, hour, minute, second, microsecond, tz, fold) # <<<<<<<<<<<<<< + * + * # Create timedelta object using DateTime CAPI factory function. +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __pyx_t_1 = ((PyObject *)__Pyx_DateTime_DateTimeWithFold(__pyx_v_year, __pyx_v_month, __pyx_v_day, __pyx_v_hour, __pyx_v_minute, __pyx_v_second, __pyx_v_microsecond, __pyx_v_tz, __pyx_v_fold)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 271, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = ((PyDateTime_DateTime *)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "cpython/datetime.pxd":270 + * # Create datetime object using DateTime CAPI factory function. + * # Note, there are no range checks for any of the arguments. + * cdef inline datetime datetime_new(int year, int month, int day, int hour, int minute, int second, int microsecond, object tz, int fold=0): # <<<<<<<<<<<<<< + * return __Pyx_DateTime_DateTimeWithFold(year, month, day, hour, minute, second, microsecond, tz, fold) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("cpython.datetime.datetime_new", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "cpython/datetime.pxd":275 + * # Create timedelta object using DateTime CAPI factory function. + * # Note, there are no range checks for any of the arguments. + * cdef inline timedelta timedelta_new(int days, int seconds, int useconds): # <<<<<<<<<<<<<< + * return PyDateTimeAPI.Delta_FromDelta(days, seconds, useconds, 1, PyDateTimeAPI.DeltaType) + * +*/ + +static CYTHON_INLINE PyDateTime_Delta *__pyx_f_7cpython_8datetime_timedelta_new(int __pyx_v_days, int __pyx_v_seconds, int __pyx_v_useconds) { + PyDateTime_Delta *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("timedelta_new", 0); + + /* "cpython/datetime.pxd":276 + * # Note, there are no range checks for any of the arguments. + * cdef inline timedelta timedelta_new(int days, int seconds, int useconds): + * return PyDateTimeAPI.Delta_FromDelta(days, seconds, useconds, 1, PyDateTimeAPI.DeltaType) # <<<<<<<<<<<<<< + * + * # Create timedelta object using DateTime CAPI factory function. +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __pyx_t_1 = ((PyObject *)PyDateTimeAPI->Delta_FromDelta(__pyx_v_days, __pyx_v_seconds, __pyx_v_useconds, 1, PyDateTimeAPI->DeltaType)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 276, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = ((PyDateTime_Delta *)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "cpython/datetime.pxd":275 + * # Create timedelta object using DateTime CAPI factory function. + * # Note, there are no range checks for any of the arguments. + * cdef inline timedelta timedelta_new(int days, int seconds, int useconds): # <<<<<<<<<<<<<< + * return PyDateTimeAPI.Delta_FromDelta(days, seconds, useconds, 1, PyDateTimeAPI.DeltaType) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("cpython.datetime.timedelta_new", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "cpython/datetime.pxd":279 + * + * # Create timedelta object using DateTime CAPI factory function. + * cdef inline object timezone_new(object offset, object name=None): # <<<<<<<<<<<<<< + * return __Pyx_TimeZone_FromOffsetAndName(offset, name if name is not None else NULL) + * +*/ + +static CYTHON_INLINE PyObject *__pyx_f_7cpython_8datetime_timezone_new(PyObject *__pyx_v_offset, struct __pyx_opt_args_7cpython_8datetime_timezone_new *__pyx_optional_args) { + PyObject *__pyx_v_name = ((PyObject *)Py_None); + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("timezone_new", 0); + if (__pyx_optional_args) { + if (__pyx_optional_args->__pyx_n > 0) { + __pyx_v_name = __pyx_optional_args->name; + } + } + + /* "cpython/datetime.pxd":280 + * # Create timedelta object using DateTime CAPI factory function. + * cdef inline object timezone_new(object offset, object name=None): + * return __Pyx_TimeZone_FromOffsetAndName(offset, name if name is not None else NULL) # <<<<<<<<<<<<<< + * + * # Create datetime object using DB API constructor. +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = (__pyx_v_name != Py_None); + if (__pyx_t_2) { + __pyx_t_1 = ((PyObject *)__pyx_v_name); + } else { + __pyx_t_1 = NULL; + } + __pyx_t_3 = __Pyx_TimeZone_FromOffsetAndName(__pyx_v_offset, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 280, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "cpython/datetime.pxd":279 + * + * # Create timedelta object using DateTime CAPI factory function. + * cdef inline object timezone_new(object offset, object name=None): # <<<<<<<<<<<<<< + * return __Pyx_TimeZone_FromOffsetAndName(offset, name if name is not None else NULL) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("cpython.datetime.timezone_new", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "cpython/datetime.pxd":283 + * + * # Create datetime object using DB API constructor. + * cdef inline datetime datetime_from_timestamp(timestamp, tz=None): # <<<<<<<<<<<<<< + * return PyDateTimeAPI.DateTime_FromTimestamp( + * PyDateTimeAPI.DateTimeType, (timestamp, tz) if tz is not None else (timestamp,), NULL) +*/ + +static CYTHON_INLINE PyDateTime_DateTime *__pyx_f_7cpython_8datetime_datetime_from_timestamp(PyObject *__pyx_v_timestamp, struct __pyx_opt_args_7cpython_8datetime_datetime_from_timestamp *__pyx_optional_args) { + PyObject *__pyx_v_tz = ((PyObject *)Py_None); + PyDateTime_DateTime *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("datetime_from_timestamp", 0); + if (__pyx_optional_args) { + if (__pyx_optional_args->__pyx_n > 0) { + __pyx_v_tz = __pyx_optional_args->tz; + } + } + + /* "cpython/datetime.pxd":284 + * # Create datetime object using DB API constructor. + * cdef inline datetime datetime_from_timestamp(timestamp, tz=None): + * return PyDateTimeAPI.DateTime_FromTimestamp( # <<<<<<<<<<<<<< + * PyDateTimeAPI.DateTimeType, (timestamp, tz) if tz is not None else (timestamp,), NULL) + * +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + + /* "cpython/datetime.pxd":285 + * cdef inline datetime datetime_from_timestamp(timestamp, tz=None): + * return PyDateTimeAPI.DateTime_FromTimestamp( + * PyDateTimeAPI.DateTimeType, (timestamp, tz) if tz is not None else (timestamp,), NULL) # <<<<<<<<<<<<<< + * + * # Create date object using DB API constructor. +*/ + __pyx_t_2 = (__pyx_v_tz != Py_None); + if (__pyx_t_2) { + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 285, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v_timestamp); + __Pyx_GIVEREF(__pyx_v_timestamp); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_timestamp) != (0)) __PYX_ERR(9, 285, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_tz); + __Pyx_GIVEREF(__pyx_v_tz); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_tz) != (0)) __PYX_ERR(9, 285, __pyx_L1_error); + __pyx_t_1 = __pyx_t_3; + __pyx_t_3 = 0; + } else { + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 285, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_INCREF(__pyx_v_timestamp); + __Pyx_GIVEREF(__pyx_v_timestamp); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_timestamp) != (0)) __PYX_ERR(9, 285, __pyx_L1_error); + __pyx_t_1 = __pyx_t_3; + __pyx_t_3 = 0; + } + + /* "cpython/datetime.pxd":284 + * # Create datetime object using DB API constructor. + * cdef inline datetime datetime_from_timestamp(timestamp, tz=None): + * return PyDateTimeAPI.DateTime_FromTimestamp( # <<<<<<<<<<<<<< + * PyDateTimeAPI.DateTimeType, (timestamp, tz) if tz is not None else (timestamp,), NULL) + * +*/ + __pyx_t_3 = ((PyObject *)PyDateTimeAPI->DateTime_FromTimestamp(((PyObject *)PyDateTimeAPI->DateTimeType), __pyx_t_1, NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 284, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = ((PyDateTime_DateTime *)__pyx_t_3); + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "cpython/datetime.pxd":283 + * + * # Create datetime object using DB API constructor. + * cdef inline datetime datetime_from_timestamp(timestamp, tz=None): # <<<<<<<<<<<<<< + * return PyDateTimeAPI.DateTime_FromTimestamp( + * PyDateTimeAPI.DateTimeType, (timestamp, tz) if tz is not None else (timestamp,), NULL) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("cpython.datetime.datetime_from_timestamp", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "cpython/datetime.pxd":288 + * + * # Create date object using DB API constructor. + * cdef inline date date_from_timestamp(timestamp): # <<<<<<<<<<<<<< + * return PyDateTimeAPI.Date_FromTimestamp(PyDateTimeAPI.DateType, (timestamp,)) + * +*/ + +static CYTHON_INLINE PyDateTime_Date *__pyx_f_7cpython_8datetime_date_from_timestamp(PyObject *__pyx_v_timestamp) { + PyDateTime_Date *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("date_from_timestamp", 0); + + /* "cpython/datetime.pxd":289 + * # Create date object using DB API constructor. + * cdef inline date date_from_timestamp(timestamp): + * return PyDateTimeAPI.Date_FromTimestamp(PyDateTimeAPI.DateType, (timestamp,)) # <<<<<<<<<<<<<< + * + * # More recognizable getters for date/time/datetime/timedelta. +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 289, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v_timestamp); + __Pyx_GIVEREF(__pyx_v_timestamp); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_timestamp) != (0)) __PYX_ERR(9, 289, __pyx_L1_error); + __pyx_t_2 = ((PyObject *)PyDateTimeAPI->Date_FromTimestamp(((PyObject *)PyDateTimeAPI->DateType), __pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 289, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = ((PyDateTime_Date *)__pyx_t_2); + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "cpython/datetime.pxd":288 + * + * # Create date object using DB API constructor. + * cdef inline date date_from_timestamp(timestamp): # <<<<<<<<<<<<<< + * return PyDateTimeAPI.Date_FromTimestamp(PyDateTimeAPI.DateType, (timestamp,)) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("cpython.datetime.date_from_timestamp", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "cpython/datetime.pxd":297 + * + * # Get UTC singleton + * cdef inline object get_utc(): # <<<<<<<<<<<<<< + * return __Pyx_TimeZone_UTC + * +*/ + +static CYTHON_INLINE PyObject *__pyx_f_7cpython_8datetime_get_utc(void) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("get_utc", 0); + + /* "cpython/datetime.pxd":298 + * # Get UTC singleton + * cdef inline object get_utc(): + * return __Pyx_TimeZone_UTC # <<<<<<<<<<<<<< + * + * # Get tzinfo of time +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(((PyObject *)__Pyx_TimeZone_UTC)); + __pyx_r = ((PyObject *)__Pyx_TimeZone_UTC); + goto __pyx_L0; + + /* "cpython/datetime.pxd":297 + * + * # Get UTC singleton + * cdef inline object get_utc(): # <<<<<<<<<<<<<< + * return __Pyx_TimeZone_UTC + * +*/ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "cpython/datetime.pxd":301 + * + * # Get tzinfo of time + * cdef inline object time_tzinfo(object o): # <<<<<<<<<<<<<< + * return PyDateTime_TIME_GET_TZINFO(o) + * +*/ + +static CYTHON_INLINE PyObject *__pyx_f_7cpython_8datetime_time_tzinfo(PyObject *__pyx_v_o) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1; + __Pyx_RefNannySetupContext("time_tzinfo", 0); + + /* "cpython/datetime.pxd":302 + * # Get tzinfo of time + * cdef inline object time_tzinfo(object o): + * return PyDateTime_TIME_GET_TZINFO(o) # <<<<<<<<<<<<<< + * + * # Get tzinfo of datetime +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyDateTime_TIME_GET_TZINFO(__pyx_v_o); + __Pyx_INCREF(((PyObject *)__pyx_t_1)); + __pyx_r = ((PyObject *)__pyx_t_1); + goto __pyx_L0; + + /* "cpython/datetime.pxd":301 + * + * # Get tzinfo of time + * cdef inline object time_tzinfo(object o): # <<<<<<<<<<<<<< + * return PyDateTime_TIME_GET_TZINFO(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "cpython/datetime.pxd":305 + * + * # Get tzinfo of datetime + * cdef inline object datetime_tzinfo(object o): # <<<<<<<<<<<<<< + * return PyDateTime_DATE_GET_TZINFO(o) + * +*/ + +static CYTHON_INLINE PyObject *__pyx_f_7cpython_8datetime_datetime_tzinfo(PyObject *__pyx_v_o) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1; + __Pyx_RefNannySetupContext("datetime_tzinfo", 0); + + /* "cpython/datetime.pxd":306 + * # Get tzinfo of datetime + * cdef inline object datetime_tzinfo(object o): + * return PyDateTime_DATE_GET_TZINFO(o) # <<<<<<<<<<<<<< + * + * # Get year of date +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyDateTime_DATE_GET_TZINFO(__pyx_v_o); + __Pyx_INCREF(((PyObject *)__pyx_t_1)); + __pyx_r = ((PyObject *)__pyx_t_1); + goto __pyx_L0; + + /* "cpython/datetime.pxd":305 + * + * # Get tzinfo of datetime + * cdef inline object datetime_tzinfo(object o): # <<<<<<<<<<<<<< + * return PyDateTime_DATE_GET_TZINFO(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "cpython/datetime.pxd":309 + * + * # Get year of date + * cdef inline int date_year(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_GET_YEAR(o) + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_date_year(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":310 + * # Get year of date + * cdef inline int date_year(object o) noexcept: + * return PyDateTime_GET_YEAR(o) # <<<<<<<<<<<<<< + * + * # Get month of date +*/ + __pyx_r = PyDateTime_GET_YEAR(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":309 + * + * # Get year of date + * cdef inline int date_year(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_GET_YEAR(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":313 + * + * # Get month of date + * cdef inline int date_month(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_GET_MONTH(o) + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_date_month(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":314 + * # Get month of date + * cdef inline int date_month(object o) noexcept: + * return PyDateTime_GET_MONTH(o) # <<<<<<<<<<<<<< + * + * # Get day of date +*/ + __pyx_r = PyDateTime_GET_MONTH(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":313 + * + * # Get month of date + * cdef inline int date_month(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_GET_MONTH(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":317 + * + * # Get day of date + * cdef inline int date_day(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_GET_DAY(o) + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_date_day(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":318 + * # Get day of date + * cdef inline int date_day(object o) noexcept: + * return PyDateTime_GET_DAY(o) # <<<<<<<<<<<<<< + * + * # Get year of datetime +*/ + __pyx_r = PyDateTime_GET_DAY(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":317 + * + * # Get day of date + * cdef inline int date_day(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_GET_DAY(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":321 + * + * # Get year of datetime + * cdef inline int datetime_year(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_GET_YEAR(o) + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_datetime_year(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":322 + * # Get year of datetime + * cdef inline int datetime_year(object o) noexcept: + * return PyDateTime_GET_YEAR(o) # <<<<<<<<<<<<<< + * + * # Get month of datetime +*/ + __pyx_r = PyDateTime_GET_YEAR(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":321 + * + * # Get year of datetime + * cdef inline int datetime_year(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_GET_YEAR(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":325 + * + * # Get month of datetime + * cdef inline int datetime_month(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_GET_MONTH(o) + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_datetime_month(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":326 + * # Get month of datetime + * cdef inline int datetime_month(object o) noexcept: + * return PyDateTime_GET_MONTH(o) # <<<<<<<<<<<<<< + * + * # Get day of datetime +*/ + __pyx_r = PyDateTime_GET_MONTH(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":325 + * + * # Get month of datetime + * cdef inline int datetime_month(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_GET_MONTH(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":329 + * + * # Get day of datetime + * cdef inline int datetime_day(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_GET_DAY(o) + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_datetime_day(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":330 + * # Get day of datetime + * cdef inline int datetime_day(object o) noexcept: + * return PyDateTime_GET_DAY(o) # <<<<<<<<<<<<<< + * + * # Get hour of time +*/ + __pyx_r = PyDateTime_GET_DAY(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":329 + * + * # Get day of datetime + * cdef inline int datetime_day(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_GET_DAY(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":333 + * + * # Get hour of time + * cdef inline int time_hour(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_TIME_GET_HOUR(o) + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_time_hour(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":334 + * # Get hour of time + * cdef inline int time_hour(object o) noexcept: + * return PyDateTime_TIME_GET_HOUR(o) # <<<<<<<<<<<<<< + * + * # Get minute of time +*/ + __pyx_r = PyDateTime_TIME_GET_HOUR(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":333 + * + * # Get hour of time + * cdef inline int time_hour(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_TIME_GET_HOUR(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":337 + * + * # Get minute of time + * cdef inline int time_minute(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_TIME_GET_MINUTE(o) + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_time_minute(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":338 + * # Get minute of time + * cdef inline int time_minute(object o) noexcept: + * return PyDateTime_TIME_GET_MINUTE(o) # <<<<<<<<<<<<<< + * + * # Get second of time +*/ + __pyx_r = PyDateTime_TIME_GET_MINUTE(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":337 + * + * # Get minute of time + * cdef inline int time_minute(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_TIME_GET_MINUTE(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":341 + * + * # Get second of time + * cdef inline int time_second(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_TIME_GET_SECOND(o) + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_time_second(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":342 + * # Get second of time + * cdef inline int time_second(object o) noexcept: + * return PyDateTime_TIME_GET_SECOND(o) # <<<<<<<<<<<<<< + * + * # Get microsecond of time +*/ + __pyx_r = PyDateTime_TIME_GET_SECOND(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":341 + * + * # Get second of time + * cdef inline int time_second(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_TIME_GET_SECOND(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":345 + * + * # Get microsecond of time + * cdef inline int time_microsecond(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_TIME_GET_MICROSECOND(o) + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_time_microsecond(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":346 + * # Get microsecond of time + * cdef inline int time_microsecond(object o) noexcept: + * return PyDateTime_TIME_GET_MICROSECOND(o) # <<<<<<<<<<<<<< + * + * # Get fold of time +*/ + __pyx_r = PyDateTime_TIME_GET_MICROSECOND(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":345 + * + * # Get microsecond of time + * cdef inline int time_microsecond(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_TIME_GET_MICROSECOND(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":349 + * + * # Get fold of time + * cdef inline int time_fold(object o) noexcept: # <<<<<<<<<<<<<< + * # For Python < 3.6 this returns 0 no matter what + * return PyDateTime_TIME_GET_FOLD(o) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_time_fold(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":351 + * cdef inline int time_fold(object o) noexcept: + * # For Python < 3.6 this returns 0 no matter what + * return PyDateTime_TIME_GET_FOLD(o) # <<<<<<<<<<<<<< + * + * # Get hour of datetime +*/ + __pyx_r = PyDateTime_TIME_GET_FOLD(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":349 + * + * # Get fold of time + * cdef inline int time_fold(object o) noexcept: # <<<<<<<<<<<<<< + * # For Python < 3.6 this returns 0 no matter what + * return PyDateTime_TIME_GET_FOLD(o) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":354 + * + * # Get hour of datetime + * cdef inline int datetime_hour(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_DATE_GET_HOUR(o) + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_datetime_hour(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":355 + * # Get hour of datetime + * cdef inline int datetime_hour(object o) noexcept: + * return PyDateTime_DATE_GET_HOUR(o) # <<<<<<<<<<<<<< + * + * # Get minute of datetime +*/ + __pyx_r = PyDateTime_DATE_GET_HOUR(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":354 + * + * # Get hour of datetime + * cdef inline int datetime_hour(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_DATE_GET_HOUR(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":358 + * + * # Get minute of datetime + * cdef inline int datetime_minute(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_DATE_GET_MINUTE(o) + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_datetime_minute(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":359 + * # Get minute of datetime + * cdef inline int datetime_minute(object o) noexcept: + * return PyDateTime_DATE_GET_MINUTE(o) # <<<<<<<<<<<<<< + * + * # Get second of datetime +*/ + __pyx_r = PyDateTime_DATE_GET_MINUTE(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":358 + * + * # Get minute of datetime + * cdef inline int datetime_minute(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_DATE_GET_MINUTE(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":362 + * + * # Get second of datetime + * cdef inline int datetime_second(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_DATE_GET_SECOND(o) + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_datetime_second(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":363 + * # Get second of datetime + * cdef inline int datetime_second(object o) noexcept: + * return PyDateTime_DATE_GET_SECOND(o) # <<<<<<<<<<<<<< + * + * # Get microsecond of datetime +*/ + __pyx_r = PyDateTime_DATE_GET_SECOND(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":362 + * + * # Get second of datetime + * cdef inline int datetime_second(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_DATE_GET_SECOND(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":366 + * + * # Get microsecond of datetime + * cdef inline int datetime_microsecond(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_DATE_GET_MICROSECOND(o) + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_datetime_microsecond(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":367 + * # Get microsecond of datetime + * cdef inline int datetime_microsecond(object o) noexcept: + * return PyDateTime_DATE_GET_MICROSECOND(o) # <<<<<<<<<<<<<< + * + * # Get fold of datetime +*/ + __pyx_r = PyDateTime_DATE_GET_MICROSECOND(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":366 + * + * # Get microsecond of datetime + * cdef inline int datetime_microsecond(object o) noexcept: # <<<<<<<<<<<<<< + * return PyDateTime_DATE_GET_MICROSECOND(o) + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":370 + * + * # Get fold of datetime + * cdef inline int datetime_fold(object o) noexcept: # <<<<<<<<<<<<<< + * # For Python < 3.6 this returns 0 no matter what + * return PyDateTime_DATE_GET_FOLD(o) +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_datetime_fold(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":372 + * cdef inline int datetime_fold(object o) noexcept: + * # For Python < 3.6 this returns 0 no matter what + * return PyDateTime_DATE_GET_FOLD(o) # <<<<<<<<<<<<<< + * + * # Get days of timedelta +*/ + __pyx_r = PyDateTime_DATE_GET_FOLD(__pyx_v_o); + goto __pyx_L0; + + /* "cpython/datetime.pxd":370 + * + * # Get fold of datetime + * cdef inline int datetime_fold(object o) noexcept: # <<<<<<<<<<<<<< + * # For Python < 3.6 this returns 0 no matter what + * return PyDateTime_DATE_GET_FOLD(o) +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":375 + * + * # Get days of timedelta + * cdef inline int timedelta_days(object o) noexcept: # <<<<<<<<<<<<<< + * return (o).days + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_timedelta_days(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":376 + * # Get days of timedelta + * cdef inline int timedelta_days(object o) noexcept: + * return (o).days # <<<<<<<<<<<<<< + * + * # Get seconds of timedelta +*/ + __pyx_r = ((PyDateTime_Delta *)__pyx_v_o)->days; + goto __pyx_L0; + + /* "cpython/datetime.pxd":375 + * + * # Get days of timedelta + * cdef inline int timedelta_days(object o) noexcept: # <<<<<<<<<<<<<< + * return (o).days + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":379 + * + * # Get seconds of timedelta + * cdef inline int timedelta_seconds(object o) noexcept: # <<<<<<<<<<<<<< + * return (o).seconds + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_timedelta_seconds(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":380 + * # Get seconds of timedelta + * cdef inline int timedelta_seconds(object o) noexcept: + * return (o).seconds # <<<<<<<<<<<<<< + * + * # Get microseconds of timedelta +*/ + __pyx_r = ((PyDateTime_Delta *)__pyx_v_o)->seconds; + goto __pyx_L0; + + /* "cpython/datetime.pxd":379 + * + * # Get seconds of timedelta + * cdef inline int timedelta_seconds(object o) noexcept: # <<<<<<<<<<<<<< + * return (o).seconds + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":383 + * + * # Get microseconds of timedelta + * cdef inline int timedelta_microseconds(object o) noexcept: # <<<<<<<<<<<<<< + * return (o).microseconds + * +*/ + +static CYTHON_INLINE int __pyx_f_7cpython_8datetime_timedelta_microseconds(PyObject *__pyx_v_o) { + int __pyx_r; + + /* "cpython/datetime.pxd":384 + * # Get microseconds of timedelta + * cdef inline int timedelta_microseconds(object o) noexcept: + * return (o).microseconds # <<<<<<<<<<<<<< + * + * cdef inline double total_seconds(timedelta obj) noexcept: +*/ + __pyx_r = ((PyDateTime_Delta *)__pyx_v_o)->microseconds; + goto __pyx_L0; + + /* "cpython/datetime.pxd":383 + * + * # Get microseconds of timedelta + * cdef inline int timedelta_microseconds(object o) noexcept: # <<<<<<<<<<<<<< + * return (o).microseconds + * +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "cpython/datetime.pxd":386 + * return (o).microseconds + * + * cdef inline double total_seconds(timedelta obj) noexcept: # <<<<<<<<<<<<<< + * # Mirrors the "timedelta.total_seconds()" method. + * # Note that this implementation is not guaranteed to give *exactly* the same +*/ + +static CYTHON_INLINE double __pyx_f_7cpython_8datetime_total_seconds(PyDateTime_Delta *__pyx_v_obj) { + double __pyx_v_days; + double __pyx_v_seconds; + double __pyx_v_micros; + double __pyx_r; + + /* "cpython/datetime.pxd":392 + * cdef: + * double days, seconds, micros + * days = PyDateTime_DELTA_GET_DAYS(obj) # <<<<<<<<<<<<<< + * seconds = PyDateTime_DELTA_GET_SECONDS(obj) + * micros = PyDateTime_DELTA_GET_MICROSECONDS(obj) +*/ + __pyx_v_days = ((double)PyDateTime_DELTA_GET_DAYS(((PyObject *)__pyx_v_obj))); + + /* "cpython/datetime.pxd":393 + * double days, seconds, micros + * days = PyDateTime_DELTA_GET_DAYS(obj) + * seconds = PyDateTime_DELTA_GET_SECONDS(obj) # <<<<<<<<<<<<<< + * micros = PyDateTime_DELTA_GET_MICROSECONDS(obj) + * return days * 24 * 3600 + seconds + micros / 1_000_000 +*/ + __pyx_v_seconds = ((double)PyDateTime_DELTA_GET_SECONDS(((PyObject *)__pyx_v_obj))); + + /* "cpython/datetime.pxd":394 + * days = PyDateTime_DELTA_GET_DAYS(obj) + * seconds = PyDateTime_DELTA_GET_SECONDS(obj) + * micros = PyDateTime_DELTA_GET_MICROSECONDS(obj) # <<<<<<<<<<<<<< + * return days * 24 * 3600 + seconds + micros / 1_000_000 +*/ + __pyx_v_micros = ((double)PyDateTime_DELTA_GET_MICROSECONDS(((PyObject *)__pyx_v_obj))); + + /* "cpython/datetime.pxd":395 + * seconds = PyDateTime_DELTA_GET_SECONDS(obj) + * micros = PyDateTime_DELTA_GET_MICROSECONDS(obj) + * return days * 24 * 3600 + seconds + micros / 1_000_000 # <<<<<<<<<<<<<< +*/ + __pyx_r = ((((__pyx_v_days * 24.0) * 3600.0) + __pyx_v_seconds) + (__pyx_v_micros / 1000000.0)); + goto __pyx_L0; + + /* "cpython/datetime.pxd":386 + * return (o).microseconds + * + * cdef inline double total_seconds(timedelta obj) noexcept: # <<<<<<<<<<<<<< + * # Mirrors the "timedelta.total_seconds()" method. + * # Note that this implementation is not guaranteed to give *exactly* the same +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/frb.pyx":8 + * + * + * cdef object frb_check(FRBuffer *frb, ssize_t n): # <<<<<<<<<<<<<< + * if n > frb.len: + * raise AssertionError( +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_check(struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_frb, Py_ssize_t __pyx_v_n) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7[4]; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("frb_check", 0); + + /* "async_gaussdb/gaussdbproto/frb.pyx":9 + * + * cdef object frb_check(FRBuffer *frb, ssize_t n): + * if n > frb.len: # <<<<<<<<<<<<<< + * raise AssertionError( + * f'insufficient data in buffer: requested {n} ' +*/ + __pyx_t_1 = (__pyx_v_n > __pyx_v_frb->len); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/frb.pyx":10 + * cdef object frb_check(FRBuffer *frb, ssize_t n): + * if n > frb.len: + * raise AssertionError( # <<<<<<<<<<<<<< + * f'insufficient data in buffer: requested {n} ' + * f'remaining {frb.len}') +*/ + __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_builtin_AssertionError); + __pyx_t_4 = __pyx_builtin_AssertionError; + + /* "async_gaussdb/gaussdbproto/frb.pyx":11 + * if n > frb.len: + * raise AssertionError( + * f'insufficient data in buffer: requested {n} ' # <<<<<<<<<<<<<< + * f'remaining {frb.len}') +*/ + __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_n, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + + /* "async_gaussdb/gaussdbproto/frb.pyx":12 + * raise AssertionError( + * f'insufficient data in buffer: requested {n} ' + * f'remaining {frb.len}') # <<<<<<<<<<<<<< +*/ + __pyx_t_6 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_frb->len, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7[0] = __pyx_mstate_global->__pyx_kp_u_insufficient_data_in_buffer_requ; + __pyx_t_7[1] = __pyx_t_5; + __pyx_t_7[2] = __pyx_mstate_global->__pyx_kp_u_remaining; + __pyx_t_7[3] = __pyx_t_6; + + /* "async_gaussdb/gaussdbproto/frb.pyx":11 + * if n > frb.len: + * raise AssertionError( + * f'insufficient data in buffer: requested {n} ' # <<<<<<<<<<<<<< + * f'remaining {frb.len}') +*/ + __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_7, 4, 39 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6), 127); + if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_8}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_9, (2-__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_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 10, __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(10, 10, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/frb.pyx":9 + * + * cdef object frb_check(FRBuffer *frb, ssize_t n): + * if n > frb.len: # <<<<<<<<<<<<<< + * raise AssertionError( + * f'insufficient data in buffer: requested {n} ' +*/ + } + + /* "async_gaussdb/gaussdbproto/frb.pyx":8 + * + * + * cdef object frb_check(FRBuffer *frb, ssize_t n): # <<<<<<<<<<<<<< + * if n > frb.len: + * raise AssertionError( +*/ + + /* 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_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.frb_check", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":20 + * cdef class WriteBuffer: + * + * def __cinit__(self): # <<<<<<<<<<<<<< + * self._smallbuf_inuse = True + * self._buf = self._smallbuf +*/ + +/* Python wrapper */ +static int __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer___cinit__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer___cinit__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self) { + int __pyx_r; + char *__pyx_t_1; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":21 + * + * def __cinit__(self): + * self._smallbuf_inuse = True # <<<<<<<<<<<<<< + * self._buf = self._smallbuf + * self._size = _BUFFER_INITIAL_SIZE +*/ + __pyx_v_self->_smallbuf_inuse = 1; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":22 + * def __cinit__(self): + * self._smallbuf_inuse = True + * self._buf = self._smallbuf # <<<<<<<<<<<<<< + * self._size = _BUFFER_INITIAL_SIZE + * self._length = 0 +*/ + __pyx_t_1 = __pyx_v_self->_smallbuf; + __pyx_v_self->_buf = __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":23 + * self._smallbuf_inuse = True + * self._buf = self._smallbuf + * self._size = _BUFFER_INITIAL_SIZE # <<<<<<<<<<<<<< + * self._length = 0 + * self._message_mode = 0 +*/ + __pyx_v_self->_size = 0x400; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":24 + * self._buf = self._smallbuf + * self._size = _BUFFER_INITIAL_SIZE + * self._length = 0 # <<<<<<<<<<<<<< + * self._message_mode = 0 + * +*/ + __pyx_v_self->_length = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":25 + * self._size = _BUFFER_INITIAL_SIZE + * self._length = 0 + * self._message_mode = 0 # <<<<<<<<<<<<<< + * + * def __dealloc__(self): +*/ + __pyx_v_self->_message_mode = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":20 + * cdef class WriteBuffer: + * + * def __cinit__(self): # <<<<<<<<<<<<<< + * self._smallbuf_inuse = True + * self._buf = self._smallbuf +*/ + + /* function exit code */ + __pyx_r = 0; + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":27 + * self._message_mode = 0 + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * if self._buf is not NULL and not self._smallbuf_inuse: + * cpython.PyMem_Free(self._buf) +*/ + +/* Python wrapper */ +static void __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_3__dealloc__(PyObject *__pyx_v_self); /*proto*/ +static void __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_3__dealloc__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_2__dealloc__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_2__dealloc__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self) { + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__dealloc__", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":28 + * + * def __dealloc__(self): + * if self._buf is not NULL and not self._smallbuf_inuse: # <<<<<<<<<<<<<< + * cpython.PyMem_Free(self._buf) + * self._buf = NULL +*/ + __pyx_t_2 = (__pyx_v_self->_buf != NULL); + if (__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = (!__pyx_v_self->_smallbuf_inuse); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":29 + * def __dealloc__(self): + * if self._buf is not NULL and not self._smallbuf_inuse: + * cpython.PyMem_Free(self._buf) # <<<<<<<<<<<<<< + * self._buf = NULL + * self._size = 0 +*/ + PyMem_Free(__pyx_v_self->_buf); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":30 + * if self._buf is not NULL and not self._smallbuf_inuse: + * cpython.PyMem_Free(self._buf) + * self._buf = NULL # <<<<<<<<<<<<<< + * self._size = 0 + * +*/ + __pyx_v_self->_buf = NULL; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":31 + * cpython.PyMem_Free(self._buf) + * self._buf = NULL + * self._size = 0 # <<<<<<<<<<<<<< + * + * if self._view_count: +*/ + __pyx_v_self->_size = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":28 + * + * def __dealloc__(self): + * if self._buf is not NULL and not self._smallbuf_inuse: # <<<<<<<<<<<<<< + * cpython.PyMem_Free(self._buf) + * self._buf = NULL +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":33 + * self._size = 0 + * + * if self._view_count: # <<<<<<<<<<<<<< + * raise BufferError( + * 'Deallocating buffer with attached memoryviews') +*/ + __pyx_t_1 = (__pyx_v_self->_view_count != 0); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":34 + * + * if self._view_count: + * raise BufferError( # <<<<<<<<<<<<<< + * 'Deallocating buffer with attached memoryviews') + * +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); + __pyx_t_6 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Deallocating_buffer_with_attache}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 34, __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(2, 34, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":33 + * self._size = 0 + * + * if self._view_count: # <<<<<<<<<<<<<< + * raise BufferError( + * 'Deallocating buffer with attached memoryviews') +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":27 + * self._message_mode = 0 + * + * def __dealloc__(self): # <<<<<<<<<<<<<< + * if self._buf is not NULL and not self._smallbuf_inuse: + * cpython.PyMem_Free(self._buf) +*/ + + /* 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_WriteUnraisable("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); + __pyx_L0:; + __Pyx_RefNannyFinishContext(); +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":37 + * 'Deallocating buffer with attached memoryviews') + * + * def __getbuffer__(self, Py_buffer *buffer, int flags): # <<<<<<<<<<<<<< + * self._view_count += 1 + * +*/ + +/* Python wrapper */ +CYTHON_UNUSED static int __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_5__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buffer, int __pyx_v_flags); /*proto*/ +CYTHON_UNUSED static int __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_5__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buffer, int __pyx_v_flags) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_4__getbuffer__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *)__pyx_v_self), ((Py_buffer *)__pyx_v_buffer), ((int)__pyx_v_flags)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_4__getbuffer__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, Py_buffer *__pyx_v_buffer, int __pyx_v_flags) { + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + if (unlikely(__pyx_v_buffer == NULL)) { + PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete"); + return -1; + } + __Pyx_RefNannySetupContext("__getbuffer__", 0); + __pyx_v_buffer->obj = Py_None; __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(__pyx_v_buffer->obj); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":38 + * + * def __getbuffer__(self, Py_buffer *buffer, int flags): + * self._view_count += 1 # <<<<<<<<<<<<<< + * + * cpython.PyBuffer_FillInfo( +*/ + __pyx_v_self->_view_count = (__pyx_v_self->_view_count + 1); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":40 + * self._view_count += 1 + * + * cpython.PyBuffer_FillInfo( # <<<<<<<<<<<<<< + * buffer, self, self._buf, self._length, + * 1, # read-only +*/ + __pyx_t_1 = PyBuffer_FillInfo(__pyx_v_buffer, ((PyObject *)__pyx_v_self), __pyx_v_self->_buf, __pyx_v_self->_length, 1, __pyx_v_flags); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 40, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":37 + * 'Deallocating buffer with attached memoryviews') + * + * def __getbuffer__(self, Py_buffer *buffer, int flags): # <<<<<<<<<<<<<< + * self._view_count += 1 + * +*/ + + /* function exit code */ + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + if (__pyx_v_buffer->obj != NULL) { + __Pyx_GOTREF(__pyx_v_buffer->obj); + __Pyx_DECREF(__pyx_v_buffer->obj); __pyx_v_buffer->obj = 0; + } + goto __pyx_L2; + __pyx_L0:; + if (__pyx_v_buffer->obj == Py_None) { + __Pyx_GOTREF(__pyx_v_buffer->obj); + __Pyx_DECREF(__pyx_v_buffer->obj); __pyx_v_buffer->obj = 0; + } + __pyx_L2:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":45 + * flags) + * + * def __releasebuffer__(self, Py_buffer *buffer): # <<<<<<<<<<<<<< + * self._view_count -= 1 + * +*/ + +/* Python wrapper */ +CYTHON_UNUSED static void __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_7__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buffer); /*proto*/ +CYTHON_UNUSED static void __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_7__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_buffer) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__releasebuffer__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_6__releasebuffer__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *)__pyx_v_self), ((Py_buffer *)__pyx_v_buffer)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); +} + +static void __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_6__releasebuffer__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, CYTHON_UNUSED Py_buffer *__pyx_v_buffer) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":46 + * + * def __releasebuffer__(self, Py_buffer *buffer): + * self._view_count -= 1 # <<<<<<<<<<<<<< + * + * cdef inline _check_readonly(self): +*/ + __pyx_v_self->_view_count = (__pyx_v_self->_view_count - 1); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":45 + * flags) + * + * def __releasebuffer__(self, Py_buffer *buffer): # <<<<<<<<<<<<<< + * self._view_count -= 1 + * +*/ + + /* function exit code */ +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":48 + * self._view_count -= 1 + * + * cdef inline _check_readonly(self): # <<<<<<<<<<<<<< + * if self._view_count: + * raise BufferError('the buffer is in read-only mode') +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__check_readonly(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_check_readonly", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":49 + * + * cdef inline _check_readonly(self): + * if self._view_count: # <<<<<<<<<<<<<< + * raise BufferError('the buffer is in read-only mode') + * +*/ + __pyx_t_1 = (__pyx_v_self->_view_count != 0); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":50 + * cdef inline _check_readonly(self): + * if self._view_count: + * raise BufferError('the buffer is in read-only mode') # <<<<<<<<<<<<<< + * + * cdef inline _ensure_alloced(self, ssize_t extra_length): +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_the_buffer_is_in_read_only_mode}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 50, __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(2, 50, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":49 + * + * cdef inline _check_readonly(self): + * if self._view_count: # <<<<<<<<<<<<<< + * raise BufferError('the buffer is in read-only mode') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":48 + * self._view_count -= 1 + * + * cdef inline _check_readonly(self): # <<<<<<<<<<<<<< + * if self._view_count: + * raise BufferError('the buffer is in read-only mode') +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer._check_readonly", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":52 + * raise BufferError('the buffer is in read-only mode') + * + * cdef inline _ensure_alloced(self, ssize_t extra_length): # <<<<<<<<<<<<<< + * cdef ssize_t new_size = extra_length + self._length + * +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__ensure_alloced(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, Py_ssize_t __pyx_v_extra_length) { + Py_ssize_t __pyx_v_new_size; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_ensure_alloced", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":53 + * + * cdef inline _ensure_alloced(self, ssize_t extra_length): + * cdef ssize_t new_size = extra_length + self._length # <<<<<<<<<<<<<< + * + * if new_size > self._size: +*/ + __pyx_v_new_size = (__pyx_v_extra_length + __pyx_v_self->_length); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":55 + * cdef ssize_t new_size = extra_length + self._length + * + * if new_size > self._size: # <<<<<<<<<<<<<< + * self._reallocate(new_size) + * +*/ + __pyx_t_1 = (__pyx_v_new_size > __pyx_v_self->_size); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":56 + * + * if new_size > self._size: + * self._reallocate(new_size) # <<<<<<<<<<<<<< + * + * cdef _reallocate(self, ssize_t new_size): +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__reallocate(__pyx_v_self, __pyx_v_new_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":55 + * cdef ssize_t new_size = extra_length + self._length + * + * if new_size > self._size: # <<<<<<<<<<<<<< + * self._reallocate(new_size) + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":52 + * raise BufferError('the buffer is in read-only mode') + * + * cdef inline _ensure_alloced(self, ssize_t extra_length): # <<<<<<<<<<<<<< + * cdef ssize_t new_size = extra_length + self._length + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer._ensure_alloced", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":58 + * self._reallocate(new_size) + * + * cdef _reallocate(self, ssize_t new_size): # <<<<<<<<<<<<<< + * cdef char *new_buf + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__reallocate(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, Py_ssize_t __pyx_v_new_size) { + char *__pyx_v_new_buf; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_reallocate", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":61 + * cdef char *new_buf + * + * if new_size < _BUFFER_MAX_GROW: # <<<<<<<<<<<<<< + * new_size = _BUFFER_MAX_GROW + * else: +*/ + __pyx_t_1 = (__pyx_v_new_size < 0x10000); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":62 + * + * if new_size < _BUFFER_MAX_GROW: + * new_size = _BUFFER_MAX_GROW # <<<<<<<<<<<<<< + * else: + * # Add a little extra +*/ + __pyx_v_new_size = 0x10000; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":61 + * cdef char *new_buf + * + * if new_size < _BUFFER_MAX_GROW: # <<<<<<<<<<<<<< + * new_size = _BUFFER_MAX_GROW + * else: +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":65 + * else: + * # Add a little extra + * new_size += _BUFFER_INITIAL_SIZE # <<<<<<<<<<<<<< + * + * if self._smallbuf_inuse: +*/ + /*else*/ { + __pyx_v_new_size = (__pyx_v_new_size + 0x400); + } + __pyx_L3:; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":67 + * new_size += _BUFFER_INITIAL_SIZE + * + * if self._smallbuf_inuse: # <<<<<<<<<<<<<< + * new_buf = cpython.PyMem_Malloc( + * sizeof(char) * new_size) +*/ + if (__pyx_v_self->_smallbuf_inuse) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":68 + * + * if self._smallbuf_inuse: + * new_buf = cpython.PyMem_Malloc( # <<<<<<<<<<<<<< + * sizeof(char) * new_size) + * if new_buf is NULL: +*/ + __pyx_v_new_buf = ((char *)PyMem_Malloc(((sizeof(char)) * ((size_t)__pyx_v_new_size)))); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":70 + * new_buf = cpython.PyMem_Malloc( + * sizeof(char) * new_size) + * if new_buf is NULL: # <<<<<<<<<<<<<< + * self._buf = NULL + * self._size = 0 +*/ + __pyx_t_1 = (__pyx_v_new_buf == NULL); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":71 + * sizeof(char) * new_size) + * if new_buf is NULL: + * self._buf = NULL # <<<<<<<<<<<<<< + * self._size = 0 + * self._length = 0 +*/ + __pyx_v_self->_buf = NULL; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":72 + * if new_buf is NULL: + * self._buf = NULL + * self._size = 0 # <<<<<<<<<<<<<< + * self._length = 0 + * raise MemoryError +*/ + __pyx_v_self->_size = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":73 + * self._buf = NULL + * self._size = 0 + * self._length = 0 # <<<<<<<<<<<<<< + * raise MemoryError + * memcpy(new_buf, self._buf, self._size) +*/ + __pyx_v_self->_length = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":74 + * self._size = 0 + * self._length = 0 + * raise MemoryError # <<<<<<<<<<<<<< + * memcpy(new_buf, self._buf, self._size) + * self._size = new_size +*/ + PyErr_NoMemory(); __PYX_ERR(2, 74, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":70 + * new_buf = cpython.PyMem_Malloc( + * sizeof(char) * new_size) + * if new_buf is NULL: # <<<<<<<<<<<<<< + * self._buf = NULL + * self._size = 0 +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":75 + * self._length = 0 + * raise MemoryError + * memcpy(new_buf, self._buf, self._size) # <<<<<<<<<<<<<< + * self._size = new_size + * self._buf = new_buf +*/ + (void)(memcpy(__pyx_v_new_buf, __pyx_v_self->_buf, ((size_t)__pyx_v_self->_size))); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":76 + * raise MemoryError + * memcpy(new_buf, self._buf, self._size) + * self._size = new_size # <<<<<<<<<<<<<< + * self._buf = new_buf + * self._smallbuf_inuse = False +*/ + __pyx_v_self->_size = __pyx_v_new_size; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":77 + * memcpy(new_buf, self._buf, self._size) + * self._size = new_size + * self._buf = new_buf # <<<<<<<<<<<<<< + * self._smallbuf_inuse = False + * else: +*/ + __pyx_v_self->_buf = __pyx_v_new_buf; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":78 + * self._size = new_size + * self._buf = new_buf + * self._smallbuf_inuse = False # <<<<<<<<<<<<<< + * else: + * new_buf = cpython.PyMem_Realloc( +*/ + __pyx_v_self->_smallbuf_inuse = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":67 + * new_size += _BUFFER_INITIAL_SIZE + * + * if self._smallbuf_inuse: # <<<<<<<<<<<<<< + * new_buf = cpython.PyMem_Malloc( + * sizeof(char) * new_size) +*/ + goto __pyx_L4; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":80 + * self._smallbuf_inuse = False + * else: + * new_buf = cpython.PyMem_Realloc( # <<<<<<<<<<<<<< + * self._buf, new_size) + * if new_buf is NULL: +*/ + /*else*/ { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":81 + * else: + * new_buf = cpython.PyMem_Realloc( + * self._buf, new_size) # <<<<<<<<<<<<<< + * if new_buf is NULL: + * cpython.PyMem_Free(self._buf) +*/ + __pyx_v_new_buf = ((char *)PyMem_Realloc(((void *)__pyx_v_self->_buf), ((size_t)__pyx_v_new_size))); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":82 + * new_buf = cpython.PyMem_Realloc( + * self._buf, new_size) + * if new_buf is NULL: # <<<<<<<<<<<<<< + * cpython.PyMem_Free(self._buf) + * self._buf = NULL +*/ + __pyx_t_1 = (__pyx_v_new_buf == NULL); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":83 + * self._buf, new_size) + * if new_buf is NULL: + * cpython.PyMem_Free(self._buf) # <<<<<<<<<<<<<< + * self._buf = NULL + * self._size = 0 +*/ + PyMem_Free(__pyx_v_self->_buf); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":84 + * if new_buf is NULL: + * cpython.PyMem_Free(self._buf) + * self._buf = NULL # <<<<<<<<<<<<<< + * self._size = 0 + * self._length = 0 +*/ + __pyx_v_self->_buf = NULL; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":85 + * cpython.PyMem_Free(self._buf) + * self._buf = NULL + * self._size = 0 # <<<<<<<<<<<<<< + * self._length = 0 + * raise MemoryError +*/ + __pyx_v_self->_size = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":86 + * self._buf = NULL + * self._size = 0 + * self._length = 0 # <<<<<<<<<<<<<< + * raise MemoryError + * self._buf = new_buf +*/ + __pyx_v_self->_length = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":87 + * self._size = 0 + * self._length = 0 + * raise MemoryError # <<<<<<<<<<<<<< + * self._buf = new_buf + * self._size = new_size +*/ + PyErr_NoMemory(); __PYX_ERR(2, 87, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":82 + * new_buf = cpython.PyMem_Realloc( + * self._buf, new_size) + * if new_buf is NULL: # <<<<<<<<<<<<<< + * cpython.PyMem_Free(self._buf) + * self._buf = NULL +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":88 + * self._length = 0 + * raise MemoryError + * self._buf = new_buf # <<<<<<<<<<<<<< + * self._size = new_size + * +*/ + __pyx_v_self->_buf = __pyx_v_new_buf; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":89 + * raise MemoryError + * self._buf = new_buf + * self._size = new_size # <<<<<<<<<<<<<< + * + * cdef inline start_message(self, char type): +*/ + __pyx_v_self->_size = __pyx_v_new_size; + } + __pyx_L4:; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":58 + * self._reallocate(new_size) + * + * cdef _reallocate(self, ssize_t new_size): # <<<<<<<<<<<<<< + * cdef char *new_buf + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer._reallocate", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":91 + * self._size = new_size + * + * cdef inline start_message(self, char type): # <<<<<<<<<<<<<< + * if self._length != 0: + * raise BufferError( +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_start_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, char __pyx_v_type) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("start_message", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":92 + * + * cdef inline start_message(self, char type): + * if self._length != 0: # <<<<<<<<<<<<<< + * raise BufferError( + * 'cannot start_message for a non-empty buffer') +*/ + __pyx_t_1 = (__pyx_v_self->_length != 0); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":93 + * cdef inline start_message(self, char type): + * if self._length != 0: + * raise BufferError( # <<<<<<<<<<<<<< + * 'cannot start_message for a non-empty buffer') + * self._ensure_alloced(5) +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_cannot_start_message_for_a_non_e}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 93, __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(2, 93, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":92 + * + * cdef inline start_message(self, char type): + * if self._length != 0: # <<<<<<<<<<<<<< + * raise BufferError( + * 'cannot start_message for a non-empty buffer') +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":95 + * raise BufferError( + * 'cannot start_message for a non-empty buffer') + * self._ensure_alloced(5) # <<<<<<<<<<<<<< + * self._message_mode = 1 + * self._buf[0] = type +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__ensure_alloced(__pyx_v_self, 5); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 95, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":96 + * 'cannot start_message for a non-empty buffer') + * self._ensure_alloced(5) + * self._message_mode = 1 # <<<<<<<<<<<<<< + * self._buf[0] = type + * self._length = 5 +*/ + __pyx_v_self->_message_mode = 1; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":97 + * self._ensure_alloced(5) + * self._message_mode = 1 + * self._buf[0] = type # <<<<<<<<<<<<<< + * self._length = 5 + * +*/ + (__pyx_v_self->_buf[0]) = __pyx_v_type; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":98 + * self._message_mode = 1 + * self._buf[0] = type + * self._length = 5 # <<<<<<<<<<<<<< + * + * cdef inline end_message(self): +*/ + __pyx_v_self->_length = 5; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":91 + * self._size = new_size + * + * cdef inline start_message(self, char type): # <<<<<<<<<<<<<< + * if self._length != 0: + * raise BufferError( +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.start_message", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":100 + * self._length = 5 + * + * cdef inline end_message(self): # <<<<<<<<<<<<<< + * # "length-1" to exclude the message type byte + * cdef ssize_t mlen = self._length - 1 +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_end_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self) { + Py_ssize_t __pyx_v_mlen; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("end_message", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":102 + * cdef inline end_message(self): + * # "length-1" to exclude the message type byte + * cdef ssize_t mlen = self._length - 1 # <<<<<<<<<<<<<< + * + * self._check_readonly() +*/ + __pyx_v_mlen = (__pyx_v_self->_length - 1); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":104 + * cdef ssize_t mlen = self._length - 1 + * + * self._check_readonly() # <<<<<<<<<<<<<< + * if not self._message_mode: + * raise BufferError( +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__check_readonly(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 104, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":105 + * + * self._check_readonly() + * if not self._message_mode: # <<<<<<<<<<<<<< + * raise BufferError( + * 'end_message can only be called with start_message') +*/ + __pyx_t_2 = (!__pyx_v_self->_message_mode); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":106 + * self._check_readonly() + * if not self._message_mode: + * raise BufferError( # <<<<<<<<<<<<<< + * 'end_message can only be called with start_message') + * if self._length < 5: +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_end_message_can_only_be_called_w}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 106, __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(2, 106, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":105 + * + * self._check_readonly() + * if not self._message_mode: # <<<<<<<<<<<<<< + * raise BufferError( + * 'end_message can only be called with start_message') +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":108 + * raise BufferError( + * 'end_message can only be called with start_message') + * if self._length < 5: # <<<<<<<<<<<<<< + * raise BufferError('end_message: buffer is too small') + * if mlen > _MAXINT32: +*/ + __pyx_t_2 = (__pyx_v_self->_length < 5); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":109 + * 'end_message can only be called with start_message') + * if self._length < 5: + * raise BufferError('end_message: buffer is too small') # <<<<<<<<<<<<<< + * if mlen > _MAXINT32: + * raise BufferError('end_message: message is too large') +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_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_mstate_global->__pyx_kp_u_end_message_buffer_is_too_small}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__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_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 109, __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(2, 109, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":108 + * raise BufferError( + * 'end_message can only be called with start_message') + * if self._length < 5: # <<<<<<<<<<<<<< + * raise BufferError('end_message: buffer is too small') + * if mlen > _MAXINT32: +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":110 + * if self._length < 5: + * raise BufferError('end_message: buffer is too small') + * if mlen > _MAXINT32: # <<<<<<<<<<<<<< + * raise BufferError('end_message: message is too large') + * +*/ + __pyx_t_2 = (__pyx_v_mlen > 0x7FFFFFFF); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":111 + * raise BufferError('end_message: buffer is too small') + * if mlen > _MAXINT32: + * raise BufferError('end_message: message is too large') # <<<<<<<<<<<<<< + * + * hton.pack_int32(&self._buf[1], mlen) +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 111, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_end_message_message_is_too_large}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 111, __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(2, 111, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":110 + * if self._length < 5: + * raise BufferError('end_message: buffer is too small') + * if mlen > _MAXINT32: # <<<<<<<<<<<<<< + * raise BufferError('end_message: message is too large') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":113 + * raise BufferError('end_message: message is too large') + * + * hton.pack_int32(&self._buf[1], mlen) # <<<<<<<<<<<<<< + * return self + * +*/ + pack_int32((&(__pyx_v_self->_buf[1])), ((int32_t)__pyx_v_mlen)); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":114 + * + * hton.pack_int32(&self._buf[1], mlen) + * return self # <<<<<<<<<<<<<< + * + * cdef inline reset(self): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_self); + __pyx_r = ((PyObject *)__pyx_v_self); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":100 + * self._length = 5 + * + * cdef inline end_message(self): # <<<<<<<<<<<<<< + * # "length-1" to exclude the message type byte + * cdef ssize_t mlen = self._length - 1 +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.end_message", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":116 + * return self + * + * cdef inline reset(self): # <<<<<<<<<<<<<< + * self._length = 0 + * self._message_mode = 0 +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_reset(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("reset", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":117 + * + * cdef inline reset(self): + * self._length = 0 # <<<<<<<<<<<<<< + * self._message_mode = 0 + * +*/ + __pyx_v_self->_length = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":118 + * cdef inline reset(self): + * self._length = 0 + * self._message_mode = 0 # <<<<<<<<<<<<<< + * + * cdef write_buffer(self, WriteBuffer buf): +*/ + __pyx_v_self->_message_mode = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":116 + * return self + * + * cdef inline reset(self): # <<<<<<<<<<<<<< + * self._length = 0 + * self._message_mode = 0 +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":120 + * self._message_mode = 0 + * + * cdef write_buffer(self, WriteBuffer buf): # <<<<<<<<<<<<<< + * self._check_readonly() + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_buffer(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_buffer", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":121 + * + * cdef write_buffer(self, WriteBuffer buf): + * self._check_readonly() # <<<<<<<<<<<<<< + * + * if not buf._length: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__check_readonly(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":123 + * self._check_readonly() + * + * if not buf._length: # <<<<<<<<<<<<<< + * return + * +*/ + __pyx_t_2 = (!(__pyx_v_buf->_length != 0)); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":124 + * + * if not buf._length: + * return # <<<<<<<<<<<<<< + * + * self._ensure_alloced(buf._length) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":123 + * self._check_readonly() + * + * if not buf._length: # <<<<<<<<<<<<<< + * return + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":126 + * return + * + * self._ensure_alloced(buf._length) # <<<<<<<<<<<<<< + * memcpy(self._buf + self._length, + * buf._buf, +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__ensure_alloced(__pyx_v_self, __pyx_v_buf->_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 126, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":127 + * + * self._ensure_alloced(buf._length) + * memcpy(self._buf + self._length, # <<<<<<<<<<<<<< + * buf._buf, + * buf._length) +*/ + (void)(memcpy((__pyx_v_self->_buf + __pyx_v_self->_length), ((void *)__pyx_v_buf->_buf), ((size_t)__pyx_v_buf->_length))); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":130 + * buf._buf, + * buf._length) + * self._length += buf._length # <<<<<<<<<<<<<< + * + * cdef write_byte(self, char b): +*/ + __pyx_v_self->_length = (__pyx_v_self->_length + __pyx_v_buf->_length); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":120 + * self._message_mode = 0 + * + * cdef write_buffer(self, WriteBuffer buf): # <<<<<<<<<<<<<< + * self._check_readonly() + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.write_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":132 + * self._length += buf._length + * + * cdef write_byte(self, char b): # <<<<<<<<<<<<<< + * self._check_readonly() + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_byte(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, char __pyx_v_b) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_byte", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":133 + * + * cdef write_byte(self, char b): + * self._check_readonly() # <<<<<<<<<<<<<< + * + * self._ensure_alloced(1) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__check_readonly(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":135 + * self._check_readonly() + * + * self._ensure_alloced(1) # <<<<<<<<<<<<<< + * self._buf[self._length] = b + * self._length += 1 +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__ensure_alloced(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 135, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":136 + * + * self._ensure_alloced(1) + * self._buf[self._length] = b # <<<<<<<<<<<<<< + * self._length += 1 + * +*/ + (__pyx_v_self->_buf[__pyx_v_self->_length]) = __pyx_v_b; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":137 + * self._ensure_alloced(1) + * self._buf[self._length] = b + * self._length += 1 # <<<<<<<<<<<<<< + * + * cdef write_bytes(self, bytes data): +*/ + __pyx_v_self->_length = (__pyx_v_self->_length + 1); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":132 + * self._length += buf._length + * + * cdef write_byte(self, char b): # <<<<<<<<<<<<<< + * self._check_readonly() + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.write_byte", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":139 + * self._length += 1 + * + * cdef write_bytes(self, bytes data): # <<<<<<<<<<<<<< + * cdef char* buf + * cdef ssize_t len +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_bytes(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, PyObject *__pyx_v_data) { + char *__pyx_v_buf; + Py_ssize_t __pyx_v_len; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_bytes", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":143 + * cdef ssize_t len + * + * cpython.PyBytes_AsStringAndSize(data, &buf, &len) # <<<<<<<<<<<<<< + * self.write_cstr(buf, len) + * +*/ + __pyx_t_1 = PyBytes_AsStringAndSize(__pyx_v_data, (&__pyx_v_buf), ((Py_ssize_t *)(&__pyx_v_len))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 143, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":144 + * + * cpython.PyBytes_AsStringAndSize(data, &buf, &len) + * self.write_cstr(buf, len) # <<<<<<<<<<<<<< + * + * cdef write_bytestring(self, bytes string): +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_self, __pyx_v_buf, __pyx_v_len); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":139 + * self._length += 1 + * + * cdef write_bytes(self, bytes data): # <<<<<<<<<<<<<< + * cdef char* buf + * cdef ssize_t len +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.write_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":146 + * self.write_cstr(buf, len) + * + * cdef write_bytestring(self, bytes string): # <<<<<<<<<<<<<< + * cdef char* buf + * cdef ssize_t len +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_bytestring(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, PyObject *__pyx_v_string) { + char *__pyx_v_buf; + Py_ssize_t __pyx_v_len; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_bytestring", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":150 + * cdef ssize_t len + * + * cpython.PyBytes_AsStringAndSize(string, &buf, &len) # <<<<<<<<<<<<<< + * # PyBytes_AsStringAndSize returns a null-terminated buffer, + * # but the null byte is not counted in len. hence the + 1 +*/ + __pyx_t_1 = PyBytes_AsStringAndSize(__pyx_v_string, (&__pyx_v_buf), ((Py_ssize_t *)(&__pyx_v_len))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 150, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":153 + * # PyBytes_AsStringAndSize returns a null-terminated buffer, + * # but the null byte is not counted in len. hence the + 1 + * self.write_cstr(buf, len + 1) # <<<<<<<<<<<<<< + * + * cdef write_str(self, str string, str encoding): +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_self, __pyx_v_buf, (__pyx_v_len + 1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":146 + * self.write_cstr(buf, len) + * + * cdef write_bytestring(self, bytes string): # <<<<<<<<<<<<<< + * cdef char* buf + * cdef ssize_t len +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.write_bytestring", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":155 + * self.write_cstr(buf, len + 1) + * + * cdef write_str(self, str string, str encoding): # <<<<<<<<<<<<<< + * self.write_bytestring(string.encode(encoding)) + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_str(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, PyObject *__pyx_v_string, PyObject *__pyx_v_encoding) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_str", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":156 + * + * cdef write_str(self, str string, str encoding): + * self.write_bytestring(string.encode(encoding)) # <<<<<<<<<<<<<< + * + * cdef write_len_prefixed_buffer(self, WriteBuffer buf): +*/ + __pyx_t_2 = __pyx_v_string; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_encoding}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_3, (2-__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(2, 156, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_bytestring(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 156, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":155 + * self.write_cstr(buf, len + 1) + * + * cdef write_str(self, str string, str encoding): # <<<<<<<<<<<<<< + * self.write_bytestring(string.encode(encoding)) + * +*/ + + /* 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("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.write_str", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":158 + * self.write_bytestring(string.encode(encoding)) + * + * cdef write_len_prefixed_buffer(self, WriteBuffer buf): # <<<<<<<<<<<<<< + * # Write a length-prefixed (not NULL-terminated) bytes sequence. + * self.write_int32(buf.len()) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_len_prefixed_buffer(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int32_t __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_len_prefixed_buffer", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":160 + * cdef write_len_prefixed_buffer(self, WriteBuffer buf): + * # Write a length-prefixed (not NULL-terminated) bytes sequence. + * self.write_int32(buf.len()) # <<<<<<<<<<<<<< + * self.write_buffer(buf) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_len(__pyx_v_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 160, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyLong_As_int32_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((int32_t)-1)) && PyErr_Occurred())) __PYX_ERR(2, 160, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_self, ((int32_t)__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 160, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":161 + * # Write a length-prefixed (not NULL-terminated) bytes sequence. + * self.write_int32(buf.len()) + * self.write_buffer(buf) # <<<<<<<<<<<<<< + * + * cdef write_len_prefixed_bytes(self, bytes data): +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_buffer(__pyx_v_self, __pyx_v_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 161, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":158 + * self.write_bytestring(string.encode(encoding)) + * + * cdef write_len_prefixed_buffer(self, WriteBuffer buf): # <<<<<<<<<<<<<< + * # Write a length-prefixed (not NULL-terminated) bytes sequence. + * self.write_int32(buf.len()) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.write_len_prefixed_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":163 + * self.write_buffer(buf) + * + * cdef write_len_prefixed_bytes(self, bytes data): # <<<<<<<<<<<<<< + * # Write a length-prefixed (not NULL-terminated) bytes sequence. + * cdef: +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_len_prefixed_bytes(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, PyObject *__pyx_v_data) { + char *__pyx_v_buf; + Py_ssize_t __pyx_v_size; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_len_prefixed_bytes", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":169 + * ssize_t size + * + * cpython.PyBytes_AsStringAndSize(data, &buf, &size) # <<<<<<<<<<<<<< + * if size > _MAXINT32: + * raise BufferError('string is too large') +*/ + __pyx_t_1 = PyBytes_AsStringAndSize(__pyx_v_data, (&__pyx_v_buf), ((Py_ssize_t *)(&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 169, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":170 + * + * cpython.PyBytes_AsStringAndSize(data, &buf, &size) + * if size > _MAXINT32: # <<<<<<<<<<<<<< + * raise BufferError('string is too large') + * # `size` does not account for the NULL at the end. +*/ + __pyx_t_2 = (__pyx_v_size > 0x7FFFFFFF); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":171 + * cpython.PyBytes_AsStringAndSize(data, &buf, &size) + * if size > _MAXINT32: + * raise BufferError('string is too large') # <<<<<<<<<<<<<< + * # `size` does not account for the NULL at the end. + * self.write_int32(size) +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); + __pyx_t_6 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_string_is_too_large}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 171, __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(2, 171, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":170 + * + * cpython.PyBytes_AsStringAndSize(data, &buf, &size) + * if size > _MAXINT32: # <<<<<<<<<<<<<< + * raise BufferError('string is too large') + * # `size` does not account for the NULL at the end. +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":173 + * raise BufferError('string is too large') + * # `size` does not account for the NULL at the end. + * self.write_int32(size) # <<<<<<<<<<<<<< + * self.write_cstr(buf, size) + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_self, ((int32_t)__pyx_v_size)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 173, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":174 + * # `size` does not account for the NULL at the end. + * self.write_int32(size) + * self.write_cstr(buf, size) # <<<<<<<<<<<<<< + * + * cdef write_frbuf(self, FRBuffer *buf): +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_self, __pyx_v_buf, __pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 174, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":163 + * self.write_buffer(buf) + * + * cdef write_len_prefixed_bytes(self, bytes data): # <<<<<<<<<<<<<< + * # Write a length-prefixed (not NULL-terminated) bytes sequence. + * cdef: +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.write_len_prefixed_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":176 + * self.write_cstr(buf, size) + * + * cdef write_frbuf(self, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * ssize_t buf_len = buf.len +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_frbuf(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + Py_ssize_t __pyx_v_buf_len; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + int __pyx_t_2; + char const *__pyx_t_3; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_frbuf", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":178 + * cdef write_frbuf(self, FRBuffer *buf): + * cdef: + * ssize_t buf_len = buf.len # <<<<<<<<<<<<<< + * if buf_len > 0: + * self.write_cstr(frb_read_all(buf), buf_len) +*/ + __pyx_t_1 = __pyx_v_buf->len; + __pyx_v_buf_len = __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":179 + * cdef: + * ssize_t buf_len = buf.len + * if buf_len > 0: # <<<<<<<<<<<<<< + * self.write_cstr(frb_read_all(buf), buf_len) + * +*/ + __pyx_t_2 = (__pyx_v_buf_len > 0); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":180 + * ssize_t buf_len = buf.len + * if buf_len > 0: + * self.write_cstr(frb_read_all(buf), buf_len) # <<<<<<<<<<<<<< + * + * cdef write_cstr(self, const char *data, ssize_t len): +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read_all(__pyx_v_buf); if (unlikely(__pyx_t_3 == ((char const *)0) && PyErr_Occurred())) __PYX_ERR(2, 180, __pyx_L1_error) + __pyx_t_4 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_self, __pyx_t_3, __pyx_v_buf_len); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":179 + * cdef: + * ssize_t buf_len = buf.len + * if buf_len > 0: # <<<<<<<<<<<<<< + * self.write_cstr(frb_read_all(buf), buf_len) + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":176 + * self.write_cstr(buf, size) + * + * cdef write_frbuf(self, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * ssize_t buf_len = buf.len +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.write_frbuf", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":182 + * self.write_cstr(frb_read_all(buf), buf_len) + * + * cdef write_cstr(self, const char *data, ssize_t len): # <<<<<<<<<<<<<< + * self._check_readonly() + * self._ensure_alloced(len) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, char const *__pyx_v_data, Py_ssize_t __pyx_v_len) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_cstr", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":183 + * + * cdef write_cstr(self, const char *data, ssize_t len): + * self._check_readonly() # <<<<<<<<<<<<<< + * self._ensure_alloced(len) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__check_readonly(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":184 + * cdef write_cstr(self, const char *data, ssize_t len): + * self._check_readonly() + * self._ensure_alloced(len) # <<<<<<<<<<<<<< + * + * memcpy(self._buf + self._length, data, len) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__ensure_alloced(__pyx_v_self, __pyx_v_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":186 + * self._ensure_alloced(len) + * + * memcpy(self._buf + self._length, data, len) # <<<<<<<<<<<<<< + * self._length += len + * +*/ + (void)(memcpy((__pyx_v_self->_buf + __pyx_v_self->_length), ((void *)__pyx_v_data), ((size_t)__pyx_v_len))); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":187 + * + * memcpy(self._buf + self._length, data, len) + * self._length += len # <<<<<<<<<<<<<< + * + * cdef write_int16(self, int16_t i): +*/ + __pyx_v_self->_length = (__pyx_v_self->_length + __pyx_v_len); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":182 + * self.write_cstr(frb_read_all(buf), buf_len) + * + * cdef write_cstr(self, const char *data, ssize_t len): # <<<<<<<<<<<<<< + * self._check_readonly() + * self._ensure_alloced(len) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.write_cstr", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":189 + * self._length += len + * + * cdef write_int16(self, int16_t i): # <<<<<<<<<<<<<< + * self._check_readonly() + * self._ensure_alloced(2) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int16(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, int16_t __pyx_v_i) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_int16", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":190 + * + * cdef write_int16(self, int16_t i): + * self._check_readonly() # <<<<<<<<<<<<<< + * self._ensure_alloced(2) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__check_readonly(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 190, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":191 + * cdef write_int16(self, int16_t i): + * self._check_readonly() + * self._ensure_alloced(2) # <<<<<<<<<<<<<< + * + * hton.pack_int16(&self._buf[self._length], i) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__ensure_alloced(__pyx_v_self, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":193 + * self._ensure_alloced(2) + * + * hton.pack_int16(&self._buf[self._length], i) # <<<<<<<<<<<<<< + * self._length += 2 + * +*/ + pack_int16((&(__pyx_v_self->_buf[__pyx_v_self->_length])), __pyx_v_i); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":194 + * + * hton.pack_int16(&self._buf[self._length], i) + * self._length += 2 # <<<<<<<<<<<<<< + * + * cdef write_int32(self, int32_t i): +*/ + __pyx_v_self->_length = (__pyx_v_self->_length + 2); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":189 + * self._length += len + * + * cdef write_int16(self, int16_t i): # <<<<<<<<<<<<<< + * self._check_readonly() + * self._ensure_alloced(2) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.write_int16", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":196 + * self._length += 2 + * + * cdef write_int32(self, int32_t i): # <<<<<<<<<<<<<< + * self._check_readonly() + * self._ensure_alloced(4) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, int32_t __pyx_v_i) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_int32", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":197 + * + * cdef write_int32(self, int32_t i): + * self._check_readonly() # <<<<<<<<<<<<<< + * self._ensure_alloced(4) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__check_readonly(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":198 + * cdef write_int32(self, int32_t i): + * self._check_readonly() + * self._ensure_alloced(4) # <<<<<<<<<<<<<< + * + * hton.pack_int32(&self._buf[self._length], i) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__ensure_alloced(__pyx_v_self, 4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 198, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":200 + * self._ensure_alloced(4) + * + * hton.pack_int32(&self._buf[self._length], i) # <<<<<<<<<<<<<< + * self._length += 4 + * +*/ + pack_int32((&(__pyx_v_self->_buf[__pyx_v_self->_length])), __pyx_v_i); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":201 + * + * hton.pack_int32(&self._buf[self._length], i) + * self._length += 4 # <<<<<<<<<<<<<< + * + * cdef write_int64(self, int64_t i): +*/ + __pyx_v_self->_length = (__pyx_v_self->_length + 4); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":196 + * self._length += 2 + * + * cdef write_int32(self, int32_t i): # <<<<<<<<<<<<<< + * self._check_readonly() + * self._ensure_alloced(4) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.write_int32", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":203 + * self._length += 4 + * + * cdef write_int64(self, int64_t i): # <<<<<<<<<<<<<< + * self._check_readonly() + * self._ensure_alloced(8) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, int64_t __pyx_v_i) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_int64", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":204 + * + * cdef write_int64(self, int64_t i): + * self._check_readonly() # <<<<<<<<<<<<<< + * self._ensure_alloced(8) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__check_readonly(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 204, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":205 + * cdef write_int64(self, int64_t i): + * self._check_readonly() + * self._ensure_alloced(8) # <<<<<<<<<<<<<< + * + * hton.pack_int64(&self._buf[self._length], i) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__ensure_alloced(__pyx_v_self, 8); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":207 + * self._ensure_alloced(8) + * + * hton.pack_int64(&self._buf[self._length], i) # <<<<<<<<<<<<<< + * self._length += 8 + * +*/ + pack_int64((&(__pyx_v_self->_buf[__pyx_v_self->_length])), __pyx_v_i); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":208 + * + * hton.pack_int64(&self._buf[self._length], i) + * self._length += 8 # <<<<<<<<<<<<<< + * + * cdef write_float(self, float f): +*/ + __pyx_v_self->_length = (__pyx_v_self->_length + 8); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":203 + * self._length += 4 + * + * cdef write_int64(self, int64_t i): # <<<<<<<<<<<<<< + * self._check_readonly() + * self._ensure_alloced(8) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.write_int64", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":210 + * self._length += 8 + * + * cdef write_float(self, float f): # <<<<<<<<<<<<<< + * self._check_readonly() + * self._ensure_alloced(4) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_float(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, float __pyx_v_f) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_float", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":211 + * + * cdef write_float(self, float f): + * self._check_readonly() # <<<<<<<<<<<<<< + * self._ensure_alloced(4) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__check_readonly(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":212 + * cdef write_float(self, float f): + * self._check_readonly() + * self._ensure_alloced(4) # <<<<<<<<<<<<<< + * + * hton.pack_float(&self._buf[self._length], f) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__ensure_alloced(__pyx_v_self, 4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 212, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":214 + * self._ensure_alloced(4) + * + * hton.pack_float(&self._buf[self._length], f) # <<<<<<<<<<<<<< + * self._length += 4 + * +*/ + pack_float((&(__pyx_v_self->_buf[__pyx_v_self->_length])), __pyx_v_f); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":215 + * + * hton.pack_float(&self._buf[self._length], f) + * self._length += 4 # <<<<<<<<<<<<<< + * + * cdef write_double(self, double d): +*/ + __pyx_v_self->_length = (__pyx_v_self->_length + 4); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":210 + * self._length += 8 + * + * cdef write_float(self, float f): # <<<<<<<<<<<<<< + * self._check_readonly() + * self._ensure_alloced(4) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.write_float", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":217 + * self._length += 4 + * + * cdef write_double(self, double d): # <<<<<<<<<<<<<< + * self._check_readonly() + * self._ensure_alloced(8) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_double(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, double __pyx_v_d) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("write_double", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":218 + * + * cdef write_double(self, double d): + * self._check_readonly() # <<<<<<<<<<<<<< + * self._ensure_alloced(8) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__check_readonly(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":219 + * cdef write_double(self, double d): + * self._check_readonly() + * self._ensure_alloced(8) # <<<<<<<<<<<<<< + * + * hton.pack_double(&self._buf[self._length], d) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__ensure_alloced(__pyx_v_self, 8); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 219, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":221 + * self._ensure_alloced(8) + * + * hton.pack_double(&self._buf[self._length], d) # <<<<<<<<<<<<<< + * self._length += 8 + * +*/ + pack_double((&(__pyx_v_self->_buf[__pyx_v_self->_length])), __pyx_v_d); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":222 + * + * hton.pack_double(&self._buf[self._length], d) + * self._length += 8 # <<<<<<<<<<<<<< + * + * @staticmethod +*/ + __pyx_v_self->_length = (__pyx_v_self->_length + 8); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":217 + * self._length += 4 + * + * cdef write_double(self, double d): # <<<<<<<<<<<<<< + * self._check_readonly() + * self._ensure_alloced(8) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.write_double", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":224 + * self._length += 8 + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef WriteBuffer new_message(char type): + * cdef WriteBuffer buf +*/ + +static struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_new_message(char __pyx_v_type) { + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf = 0; + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("new_message", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":227 + * cdef WriteBuffer new_message(char type): + * cdef WriteBuffer buf + * buf = WriteBuffer.__new__(WriteBuffer) # <<<<<<<<<<<<<< + * buf.start_message(type) + * return buf +*/ + __pyx_t_1 = ((PyObject *)__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 227, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + __pyx_v_buf = ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":228 + * cdef WriteBuffer buf + * buf = WriteBuffer.__new__(WriteBuffer) + * buf.start_message(type) # <<<<<<<<<<<<<< + * return buf + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_start_message(__pyx_v_buf, __pyx_v_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 228, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":229 + * buf = WriteBuffer.__new__(WriteBuffer) + * buf.start_message(type) + * return buf # <<<<<<<<<<<<<< + * + * @staticmethod +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_buf); + __pyx_r = __pyx_v_buf; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":224 + * self._length += 8 + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef WriteBuffer new_message(char type): + * cdef WriteBuffer buf +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.new_message", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_buf); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":231 + * return buf + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef WriteBuffer new(): + * cdef WriteBuffer buf +*/ + +static struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_new(void) { + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf = 0; + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("new", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":234 + * cdef WriteBuffer new(): + * cdef WriteBuffer buf + * buf = WriteBuffer.__new__(WriteBuffer) # <<<<<<<<<<<<<< + * return buf + * +*/ + __pyx_t_1 = ((PyObject *)__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 234, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + __pyx_v_buf = ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":235 + * cdef WriteBuffer buf + * buf = WriteBuffer.__new__(WriteBuffer) + * return buf # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_buf); + __pyx_r = __pyx_v_buf; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":231 + * return buf + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef WriteBuffer new(): + * cdef WriteBuffer buf +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.new", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_buf); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_9__reduce_cython__(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_9__reduce_cython__(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("__reduce_cython__ (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("__reduce_cython__", 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("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_8__reduce_cython__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" +*/ + __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __PYX_ERR(3, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_11__setstate_cython__(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_11__setstate_cython__(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___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (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_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 3, __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(3, 3, __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, "__setstate_cython__", 0) < 0) __PYX_ERR(3, 3, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(3, 3, __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(3, 3, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 3, __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("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_10__setstate_cython__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *)__pyx_v_self), __pyx_v___pyx_state); + + /* 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_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< +*/ + __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __PYX_ERR(3, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":243 + * cdef class ReadBuffer: + * + * def __cinit__(self): # <<<<<<<<<<<<<< + * self._bufs = collections.deque() + * self._bufs_append = self._bufs.append +*/ + +/* Python wrapper */ +static int __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer___cinit__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer___cinit__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__cinit__", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":244 + * + * def __cinit__(self): + * self._bufs = collections.deque() # <<<<<<<<<<<<<< + * self._bufs_append = self._bufs.append + * self._bufs_popleft = self._bufs.popleft +*/ + __pyx_t_2 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_collections); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 244, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_deque); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 244, __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(__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(2, 244, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->_bufs); + __Pyx_DECREF(__pyx_v_self->_bufs); + __pyx_v_self->_bufs = __pyx_t_1; + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":245 + * def __cinit__(self): + * self._bufs = collections.deque() + * self._bufs_append = self._bufs.append # <<<<<<<<<<<<<< + * self._bufs_popleft = self._bufs.popleft + * self._bufs_len = 0 +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_bufs, __pyx_mstate_global->__pyx_n_u_append); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 245, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->_bufs_append); + __Pyx_DECREF(__pyx_v_self->_bufs_append); + __pyx_v_self->_bufs_append = __pyx_t_1; + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":246 + * self._bufs = collections.deque() + * self._bufs_append = self._bufs.append + * self._bufs_popleft = self._bufs.popleft # <<<<<<<<<<<<<< + * self._bufs_len = 0 + * self._buf0 = None +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_bufs, __pyx_mstate_global->__pyx_n_u_popleft); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 246, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->_bufs_popleft); + __Pyx_DECREF(__pyx_v_self->_bufs_popleft); + __pyx_v_self->_bufs_popleft = __pyx_t_1; + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":247 + * self._bufs_append = self._bufs.append + * self._bufs_popleft = self._bufs.popleft + * self._bufs_len = 0 # <<<<<<<<<<<<<< + * self._buf0 = None + * self._buf0_prev = None +*/ + __pyx_v_self->_bufs_len = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":248 + * self._bufs_popleft = self._bufs.popleft + * self._bufs_len = 0 + * self._buf0 = None # <<<<<<<<<<<<<< + * self._buf0_prev = None + * self._pos0 = 0 +*/ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->_buf0); + __Pyx_DECREF(__pyx_v_self->_buf0); + __pyx_v_self->_buf0 = ((PyObject*)Py_None); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":249 + * self._bufs_len = 0 + * self._buf0 = None + * self._buf0_prev = None # <<<<<<<<<<<<<< + * self._pos0 = 0 + * self._len0 = 0 +*/ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->_buf0_prev); + __Pyx_DECREF(__pyx_v_self->_buf0_prev); + __pyx_v_self->_buf0_prev = ((PyObject*)Py_None); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":250 + * self._buf0 = None + * self._buf0_prev = None + * self._pos0 = 0 # <<<<<<<<<<<<<< + * self._len0 = 0 + * self._length = 0 +*/ + __pyx_v_self->_pos0 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":251 + * self._buf0_prev = None + * self._pos0 = 0 + * self._len0 = 0 # <<<<<<<<<<<<<< + * self._length = 0 + * +*/ + __pyx_v_self->_len0 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":252 + * self._pos0 = 0 + * self._len0 = 0 + * self._length = 0 # <<<<<<<<<<<<<< + * + * self._current_message_type = 0 +*/ + __pyx_v_self->_length = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":254 + * self._length = 0 + * + * self._current_message_type = 0 # <<<<<<<<<<<<<< + * self._current_message_len = 0 + * self._current_message_len_unread = 0 +*/ + __pyx_v_self->_current_message_type = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":255 + * + * self._current_message_type = 0 + * self._current_message_len = 0 # <<<<<<<<<<<<<< + * self._current_message_len_unread = 0 + * self._current_message_ready = 0 +*/ + __pyx_v_self->_current_message_len = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":256 + * self._current_message_type = 0 + * self._current_message_len = 0 + * self._current_message_len_unread = 0 # <<<<<<<<<<<<<< + * self._current_message_ready = 0 + * +*/ + __pyx_v_self->_current_message_len_unread = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":257 + * self._current_message_len = 0 + * self._current_message_len_unread = 0 + * self._current_message_ready = 0 # <<<<<<<<<<<<<< + * + * cdef feed_data(self, data): +*/ + __pyx_v_self->_current_message_ready = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":243 + * cdef class ReadBuffer: + * + * def __cinit__(self): # <<<<<<<<<<<<<< + * self._bufs = collections.deque() + * self._bufs_append = self._bufs.append +*/ + + /* 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("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":259 + * self._current_message_ready = 0 + * + * cdef feed_data(self, data): # <<<<<<<<<<<<<< + * cdef: + * ssize_t dlen +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_feed_data(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, PyObject *__pyx_v_data) { + Py_ssize_t __pyx_v_dlen; + PyObject *__pyx_v_data_bytes = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("feed_data", 0); + __Pyx_INCREF(__pyx_v_data); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":264 + * bytes data_bytes + * + * if not cpython.PyBytes_CheckExact(data): # <<<<<<<<<<<<<< + * if cpythonx.PyByteArray_CheckExact(data): + * # ProactorEventLoop in Python 3.10+ seems to be sending +*/ + __pyx_t_1 = (!PyBytes_CheckExact(__pyx_v_data)); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":265 + * + * if not cpython.PyBytes_CheckExact(data): + * if cpythonx.PyByteArray_CheckExact(data): # <<<<<<<<<<<<<< + * # ProactorEventLoop in Python 3.10+ seems to be sending + * # bytearray objects instead of bytes. Handle this here +*/ + __pyx_t_1 = (PyByteArray_CheckExact(__pyx_v_data) != 0); + if (likely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":269 + * # bytearray objects instead of bytes. Handle this here + * # to avoid duplicating this check in every data_received(). + * data = bytes(data) # <<<<<<<<<<<<<< + * else: + * raise BufferError( +*/ + __pyx_t_3 = NULL; + __Pyx_INCREF((PyObject *)(&PyBytes_Type)); + __pyx_t_4 = ((PyObject *)(&PyBytes_Type)); + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_data}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 269, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_2); + __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":265 + * + * if not cpython.PyBytes_CheckExact(data): + * if cpythonx.PyByteArray_CheckExact(data): # <<<<<<<<<<<<<< + * # ProactorEventLoop in Python 3.10+ seems to be sending + * # bytearray objects instead of bytes. Handle this here +*/ + goto __pyx_L4; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":271 + * data = bytes(data) + * else: + * raise BufferError( # <<<<<<<<<<<<<< + * 'feed_data: a bytes or bytearray object expected') + * +*/ + /*else*/ { + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 271, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_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_mstate_global->__pyx_kp_u_feed_data_a_bytes_or_bytearray_o}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__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_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 271, __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(2, 271, __pyx_L1_error) + } + __pyx_L4:; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":264 + * bytes data_bytes + * + * if not cpython.PyBytes_CheckExact(data): # <<<<<<<<<<<<<< + * if cpythonx.PyByteArray_CheckExact(data): + * # ProactorEventLoop in Python 3.10+ seems to be sending +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":284 + * # return + * + * data_bytes = data # <<<<<<<<<<<<<< + * + * dlen = cpython.Py_SIZE(data_bytes) +*/ + __pyx_t_2 = __pyx_v_data; + __Pyx_INCREF(__pyx_t_2); + __pyx_v_data_bytes = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":286 + * data_bytes = data + * + * dlen = cpython.Py_SIZE(data_bytes) # <<<<<<<<<<<<<< + * if dlen == 0: + * # EOF? +*/ + __pyx_v_dlen = Py_SIZE(__pyx_v_data_bytes); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":287 + * + * dlen = cpython.Py_SIZE(data_bytes) + * if dlen == 0: # <<<<<<<<<<<<<< + * # EOF? + * return +*/ + __pyx_t_1 = (__pyx_v_dlen == 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":289 + * if dlen == 0: + * # EOF? + * return # <<<<<<<<<<<<<< + * + * self._bufs_append(data_bytes) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":287 + * + * dlen = cpython.Py_SIZE(data_bytes) + * if dlen == 0: # <<<<<<<<<<<<<< + * # EOF? + * return +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":291 + * return + * + * self._bufs_append(data_bytes) # <<<<<<<<<<<<<< + * self._length += dlen + * +*/ + __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_v_self->_bufs_append); + __pyx_t_4 = __pyx_v_self->_bufs_append; + __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, __pyx_v_data_bytes}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 291, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":292 + * + * self._bufs_append(data_bytes) + * self._length += dlen # <<<<<<<<<<<<<< + * + * if self._bufs_len == 0: +*/ + __pyx_v_self->_length = (__pyx_v_self->_length + __pyx_v_dlen); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":294 + * self._length += dlen + * + * if self._bufs_len == 0: # <<<<<<<<<<<<<< + * # First buffer + * self._len0 = dlen +*/ + __pyx_t_1 = (__pyx_v_self->_bufs_len == 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":296 + * if self._bufs_len == 0: + * # First buffer + * self._len0 = dlen # <<<<<<<<<<<<<< + * self._buf0 = data_bytes + * +*/ + __pyx_v_self->_len0 = __pyx_v_dlen; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":297 + * # First buffer + * self._len0 = dlen + * self._buf0 = data_bytes # <<<<<<<<<<<<<< + * + * self._bufs_len += 1 +*/ + __Pyx_INCREF(__pyx_v_data_bytes); + __Pyx_GIVEREF(__pyx_v_data_bytes); + __Pyx_GOTREF(__pyx_v_self->_buf0); + __Pyx_DECREF(__pyx_v_self->_buf0); + __pyx_v_self->_buf0 = __pyx_v_data_bytes; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":294 + * self._length += dlen + * + * if self._bufs_len == 0: # <<<<<<<<<<<<<< + * # First buffer + * self._len0 = dlen +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":299 + * self._buf0 = data_bytes + * + * self._bufs_len += 1 # <<<<<<<<<<<<<< + * + * cdef inline _ensure_first_buf(self): +*/ + __pyx_v_self->_bufs_len = (__pyx_v_self->_bufs_len + 1); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":259 + * self._current_message_ready = 0 + * + * cdef feed_data(self, data): # <<<<<<<<<<<<<< + * cdef: + * ssize_t dlen +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.feed_data", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_data_bytes); + __Pyx_XDECREF(__pyx_v_data); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":301 + * self._bufs_len += 1 + * + * cdef inline _ensure_first_buf(self): # <<<<<<<<<<<<<< + * if GAUSSDB_DEBUG: + * if self._len0 == 0: +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_ensure_first_buf", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":302 + * + * cdef inline _ensure_first_buf(self): + * if GAUSSDB_DEBUG: # <<<<<<<<<<<<<< + * if self._len0 == 0: + * raise BufferError('empty first buffer') +*/ + __pyx_t_1 = (GAUSSDB_DEBUG != 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":303 + * cdef inline _ensure_first_buf(self): + * if GAUSSDB_DEBUG: + * if self._len0 == 0: # <<<<<<<<<<<<<< + * raise BufferError('empty first buffer') + * if self._length == 0: +*/ + __pyx_t_1 = (__pyx_v_self->_len0 == 0); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":304 + * if GAUSSDB_DEBUG: + * if self._len0 == 0: + * raise BufferError('empty first buffer') # <<<<<<<<<<<<<< + * if self._length == 0: + * raise BufferError('empty buffer') +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 304, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_empty_first_buffer}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 304, __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(2, 304, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":303 + * cdef inline _ensure_first_buf(self): + * if GAUSSDB_DEBUG: + * if self._len0 == 0: # <<<<<<<<<<<<<< + * raise BufferError('empty first buffer') + * if self._length == 0: +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":305 + * if self._len0 == 0: + * raise BufferError('empty first buffer') + * if self._length == 0: # <<<<<<<<<<<<<< + * raise BufferError('empty buffer') + * +*/ + __pyx_t_1 = (__pyx_v_self->_length == 0); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":306 + * raise BufferError('empty first buffer') + * if self._length == 0: + * raise BufferError('empty buffer') # <<<<<<<<<<<<<< + * + * if self._pos0 == self._len0: +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 306, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_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_mstate_global->__pyx_kp_u_empty_buffer}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__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_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 306, __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(2, 306, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":305 + * if self._len0 == 0: + * raise BufferError('empty first buffer') + * if self._length == 0: # <<<<<<<<<<<<<< + * raise BufferError('empty buffer') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":302 + * + * cdef inline _ensure_first_buf(self): + * if GAUSSDB_DEBUG: # <<<<<<<<<<<<<< + * if self._len0 == 0: + * raise BufferError('empty first buffer') +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":308 + * raise BufferError('empty buffer') + * + * if self._pos0 == self._len0: # <<<<<<<<<<<<<< + * self._switch_to_next_buf() + * +*/ + __pyx_t_1 = (__pyx_v_self->_pos0 == __pyx_v_self->_len0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":309 + * + * if self._pos0 == self._len0: + * self._switch_to_next_buf() # <<<<<<<<<<<<<< + * + * cdef _switch_to_next_buf(self): +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__switch_to_next_buf(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 309, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":308 + * raise BufferError('empty buffer') + * + * if self._pos0 == self._len0: # <<<<<<<<<<<<<< + * self._switch_to_next_buf() + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":301 + * self._bufs_len += 1 + * + * cdef inline _ensure_first_buf(self): # <<<<<<<<<<<<<< + * if GAUSSDB_DEBUG: + * if self._len0 == 0: +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer._ensure_first_buf", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":311 + * self._switch_to_next_buf() + * + * cdef _switch_to_next_buf(self): # <<<<<<<<<<<<<< + * # The first buffer is fully read, discard it + * self._bufs_popleft() +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__switch_to_next_buf(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + Py_ssize_t __pyx_t_5; + int __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_switch_to_next_buf", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":313 + * cdef _switch_to_next_buf(self): + * # The first buffer is fully read, discard it + * self._bufs_popleft() # <<<<<<<<<<<<<< + * self._bufs_len -= 1 + * +*/ + __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_v_self->_bufs_popleft); + __pyx_t_3 = __pyx_v_self->_bufs_popleft; + __pyx_t_4 = 1; + #if CYTHON_UNPACK_METHODS + if (likely(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_4 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (1-__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(2, 313, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":314 + * # The first buffer is fully read, discard it + * self._bufs_popleft() + * self._bufs_len -= 1 # <<<<<<<<<<<<<< + * + * # Shouldn't fail, since we've checked that `_length >= 1` +*/ + __pyx_v_self->_bufs_len = (__pyx_v_self->_bufs_len - 1); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":318 + * # Shouldn't fail, since we've checked that `_length >= 1` + * # in _ensure_first_buf() + * self._buf0_prev = self._buf0 # <<<<<<<<<<<<<< + * self._buf0 = self._bufs[0] + * +*/ + __pyx_t_1 = __pyx_v_self->_buf0; + __Pyx_INCREF(__pyx_t_1); + __Pyx_GIVEREF(__pyx_t_1); + __Pyx_GOTREF(__pyx_v_self->_buf0_prev); + __Pyx_DECREF(__pyx_v_self->_buf0_prev); + __pyx_v_self->_buf0_prev = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":319 + * # in _ensure_first_buf() + * self._buf0_prev = self._buf0 + * self._buf0 = self._bufs[0] # <<<<<<<<<<<<<< + * + * self._pos0 = 0 +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_self->_bufs, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __pyx_t_1; + __Pyx_INCREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_v_self->_buf0); + __Pyx_DECREF(__pyx_v_self->_buf0); + __pyx_v_self->_buf0 = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":321 + * self._buf0 = self._bufs[0] + * + * self._pos0 = 0 # <<<<<<<<<<<<<< + * self._len0 = len(self._buf0) + * +*/ + __pyx_v_self->_pos0 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":322 + * + * self._pos0 = 0 + * self._len0 = len(self._buf0) # <<<<<<<<<<<<<< + * + * if GAUSSDB_DEBUG: +*/ + __pyx_t_3 = __pyx_v_self->_buf0; + __Pyx_INCREF(__pyx_t_3); + if (unlikely(__pyx_t_3 == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(2, 322, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(2, 322, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_self->_len0 = __pyx_t_5; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":324 + * self._len0 = len(self._buf0) + * + * if GAUSSDB_DEBUG: # <<<<<<<<<<<<<< + * if self._len0 < 1: + * raise BufferError( +*/ + __pyx_t_6 = (GAUSSDB_DEBUG != 0); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":325 + * + * if GAUSSDB_DEBUG: + * if self._len0 < 1: # <<<<<<<<<<<<<< + * raise BufferError( + * 'debug: second buffer of ReadBuffer is empty') +*/ + __pyx_t_6 = (__pyx_v_self->_len0 < 1); + if (unlikely(__pyx_t_6)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":326 + * if GAUSSDB_DEBUG: + * if self._len0 < 1: + * raise BufferError( # <<<<<<<<<<<<<< + * 'debug: second buffer of ReadBuffer is empty') + * +*/ + __pyx_t_1 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 326, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); + assert(__pyx_t_1); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_1); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_2, __pyx__function); + __pyx_t_4 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_debug_second_buffer_of_ReadBuffe}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 326, __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(2, 326, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":325 + * + * if GAUSSDB_DEBUG: + * if self._len0 < 1: # <<<<<<<<<<<<<< + * raise BufferError( + * 'debug: second buffer of ReadBuffer is empty') +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":324 + * self._len0 = len(self._buf0) + * + * if GAUSSDB_DEBUG: # <<<<<<<<<<<<<< + * if self._len0 < 1: + * raise BufferError( +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":311 + * self._switch_to_next_buf() + * + * cdef _switch_to_next_buf(self): # <<<<<<<<<<<<<< + * # The first buffer is fully read, discard it + * self._bufs_popleft() +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer._switch_to_next_buf", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":329 + * 'debug: second buffer of ReadBuffer is empty') + * + * cdef inline const char* _try_read_bytes(self, ssize_t nbytes): # <<<<<<<<<<<<<< + * # Try to read *nbytes* from the first buffer. + * # +*/ + +static CYTHON_INLINE char const *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__try_read_bytes(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, Py_ssize_t __pyx_v_nbytes) { + char const *__pyx_v_result; + char const *__pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + __Pyx_RefNannySetupContext("_try_read_bytes", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":341 + * const char *result + * + * if GAUSSDB_DEBUG: # <<<<<<<<<<<<<< + * if nbytes > self._length: + * return NULL +*/ + __pyx_t_1 = (GAUSSDB_DEBUG != 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":342 + * + * if GAUSSDB_DEBUG: + * if nbytes > self._length: # <<<<<<<<<<<<<< + * return NULL + * +*/ + __pyx_t_1 = (__pyx_v_nbytes > __pyx_v_self->_length); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":343 + * if GAUSSDB_DEBUG: + * if nbytes > self._length: + * return NULL # <<<<<<<<<<<<<< + * + * if self._current_message_ready: +*/ + __pyx_r = NULL; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":342 + * + * if GAUSSDB_DEBUG: + * if nbytes > self._length: # <<<<<<<<<<<<<< + * return NULL + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":341 + * const char *result + * + * if GAUSSDB_DEBUG: # <<<<<<<<<<<<<< + * if nbytes > self._length: + * return NULL +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":345 + * return NULL + * + * if self._current_message_ready: # <<<<<<<<<<<<<< + * if self._current_message_len_unread < nbytes: + * return NULL +*/ + if (__pyx_v_self->_current_message_ready) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":346 + * + * if self._current_message_ready: + * if self._current_message_len_unread < nbytes: # <<<<<<<<<<<<<< + * return NULL + * +*/ + __pyx_t_1 = (__pyx_v_self->_current_message_len_unread < __pyx_v_nbytes); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":347 + * if self._current_message_ready: + * if self._current_message_len_unread < nbytes: + * return NULL # <<<<<<<<<<<<<< + * + * if self._pos0 + nbytes <= self._len0: +*/ + __pyx_r = NULL; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":346 + * + * if self._current_message_ready: + * if self._current_message_len_unread < nbytes: # <<<<<<<<<<<<<< + * return NULL + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":345 + * return NULL + * + * if self._current_message_ready: # <<<<<<<<<<<<<< + * if self._current_message_len_unread < nbytes: + * return NULL +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":349 + * return NULL + * + * if self._pos0 + nbytes <= self._len0: # <<<<<<<<<<<<<< + * result = cpython.PyBytes_AS_STRING(self._buf0) + * result += self._pos0 +*/ + __pyx_t_1 = ((__pyx_v_self->_pos0 + __pyx_v_nbytes) <= __pyx_v_self->_len0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":350 + * + * if self._pos0 + nbytes <= self._len0: + * result = cpython.PyBytes_AS_STRING(self._buf0) # <<<<<<<<<<<<<< + * result += self._pos0 + * self._pos0 += nbytes +*/ + __pyx_t_2 = __pyx_v_self->_buf0; + __Pyx_INCREF(__pyx_t_2); + __pyx_v_result = PyBytes_AS_STRING(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":351 + * if self._pos0 + nbytes <= self._len0: + * result = cpython.PyBytes_AS_STRING(self._buf0) + * result += self._pos0 # <<<<<<<<<<<<<< + * self._pos0 += nbytes + * self._length -= nbytes +*/ + __pyx_v_result = (__pyx_v_result + __pyx_v_self->_pos0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":352 + * result = cpython.PyBytes_AS_STRING(self._buf0) + * result += self._pos0 + * self._pos0 += nbytes # <<<<<<<<<<<<<< + * self._length -= nbytes + * if self._current_message_ready: +*/ + __pyx_v_self->_pos0 = (__pyx_v_self->_pos0 + __pyx_v_nbytes); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":353 + * result += self._pos0 + * self._pos0 += nbytes + * self._length -= nbytes # <<<<<<<<<<<<<< + * if self._current_message_ready: + * self._current_message_len_unread -= nbytes +*/ + __pyx_v_self->_length = (__pyx_v_self->_length - __pyx_v_nbytes); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":354 + * self._pos0 += nbytes + * self._length -= nbytes + * if self._current_message_ready: # <<<<<<<<<<<<<< + * self._current_message_len_unread -= nbytes + * return result +*/ + if (__pyx_v_self->_current_message_ready) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":355 + * self._length -= nbytes + * if self._current_message_ready: + * self._current_message_len_unread -= nbytes # <<<<<<<<<<<<<< + * return result + * else: +*/ + __pyx_v_self->_current_message_len_unread = (__pyx_v_self->_current_message_len_unread - __pyx_v_nbytes); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":354 + * self._pos0 += nbytes + * self._length -= nbytes + * if self._current_message_ready: # <<<<<<<<<<<<<< + * self._current_message_len_unread -= nbytes + * return result +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":356 + * if self._current_message_ready: + * self._current_message_len_unread -= nbytes + * return result # <<<<<<<<<<<<<< + * else: + * return NULL +*/ + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":349 + * return NULL + * + * if self._pos0 + nbytes <= self._len0: # <<<<<<<<<<<<<< + * result = cpython.PyBytes_AS_STRING(self._buf0) + * result += self._pos0 +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":358 + * return result + * else: + * return NULL # <<<<<<<<<<<<<< + * + * cdef inline _read_into(self, char *buf, ssize_t nbytes): +*/ + /*else*/ { + __pyx_r = NULL; + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":329 + * 'debug: second buffer of ReadBuffer is empty') + * + * cdef inline const char* _try_read_bytes(self, ssize_t nbytes): # <<<<<<<<<<<<<< + * # Try to read *nbytes* from the first buffer. + * # +*/ + + /* function exit code */ + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":360 + * return NULL + * + * cdef inline _read_into(self, char *buf, ssize_t nbytes): # <<<<<<<<<<<<<< + * cdef: + * ssize_t nread +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__read_into(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, char *__pyx_v_buf, Py_ssize_t __pyx_v_nbytes) { + Py_ssize_t __pyx_v_nread; + char *__pyx_v_buf0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_read_into", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":365 + * char *buf0 + * + * while True: # <<<<<<<<<<<<<< + * buf0 = cpython.PyBytes_AS_STRING(self._buf0) + * +*/ + while (1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":366 + * + * while True: + * buf0 = cpython.PyBytes_AS_STRING(self._buf0) # <<<<<<<<<<<<<< + * + * if self._pos0 + nbytes > self._len0: +*/ + __pyx_t_1 = __pyx_v_self->_buf0; + __Pyx_INCREF(__pyx_t_1); + __pyx_v_buf0 = PyBytes_AS_STRING(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":368 + * buf0 = cpython.PyBytes_AS_STRING(self._buf0) + * + * if self._pos0 + nbytes > self._len0: # <<<<<<<<<<<<<< + * nread = self._len0 - self._pos0 + * memcpy(buf, buf0 + self._pos0, nread) +*/ + __pyx_t_2 = ((__pyx_v_self->_pos0 + __pyx_v_nbytes) > __pyx_v_self->_len0); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":369 + * + * if self._pos0 + nbytes > self._len0: + * nread = self._len0 - self._pos0 # <<<<<<<<<<<<<< + * memcpy(buf, buf0 + self._pos0, nread) + * self._pos0 = self._len0 +*/ + __pyx_v_nread = (__pyx_v_self->_len0 - __pyx_v_self->_pos0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":370 + * if self._pos0 + nbytes > self._len0: + * nread = self._len0 - self._pos0 + * memcpy(buf, buf0 + self._pos0, nread) # <<<<<<<<<<<<<< + * self._pos0 = self._len0 + * self._length -= nread +*/ + (void)(memcpy(__pyx_v_buf, (__pyx_v_buf0 + __pyx_v_self->_pos0), ((size_t)__pyx_v_nread))); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":371 + * nread = self._len0 - self._pos0 + * memcpy(buf, buf0 + self._pos0, nread) + * self._pos0 = self._len0 # <<<<<<<<<<<<<< + * self._length -= nread + * nbytes -= nread +*/ + __pyx_t_3 = __pyx_v_self->_len0; + __pyx_v_self->_pos0 = __pyx_t_3; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":372 + * memcpy(buf, buf0 + self._pos0, nread) + * self._pos0 = self._len0 + * self._length -= nread # <<<<<<<<<<<<<< + * nbytes -= nread + * buf += nread +*/ + __pyx_v_self->_length = (__pyx_v_self->_length - __pyx_v_nread); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":373 + * self._pos0 = self._len0 + * self._length -= nread + * nbytes -= nread # <<<<<<<<<<<<<< + * buf += nread + * self._ensure_first_buf() +*/ + __pyx_v_nbytes = (__pyx_v_nbytes - __pyx_v_nread); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":374 + * self._length -= nread + * nbytes -= nread + * buf += nread # <<<<<<<<<<<<<< + * self._ensure_first_buf() + * +*/ + __pyx_v_buf = (__pyx_v_buf + __pyx_v_nread); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":375 + * nbytes -= nread + * buf += nread + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * + * else: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 375, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":368 + * buf0 = cpython.PyBytes_AS_STRING(self._buf0) + * + * if self._pos0 + nbytes > self._len0: # <<<<<<<<<<<<<< + * nread = self._len0 - self._pos0 + * memcpy(buf, buf0 + self._pos0, nread) +*/ + goto __pyx_L5; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":378 + * + * else: + * memcpy(buf, buf0 + self._pos0, nbytes) # <<<<<<<<<<<<<< + * self._pos0 += nbytes + * self._length -= nbytes +*/ + /*else*/ { + (void)(memcpy(__pyx_v_buf, (__pyx_v_buf0 + __pyx_v_self->_pos0), ((size_t)__pyx_v_nbytes))); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":379 + * else: + * memcpy(buf, buf0 + self._pos0, nbytes) + * self._pos0 += nbytes # <<<<<<<<<<<<<< + * self._length -= nbytes + * break +*/ + __pyx_v_self->_pos0 = (__pyx_v_self->_pos0 + __pyx_v_nbytes); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":380 + * memcpy(buf, buf0 + self._pos0, nbytes) + * self._pos0 += nbytes + * self._length -= nbytes # <<<<<<<<<<<<<< + * break + * +*/ + __pyx_v_self->_length = (__pyx_v_self->_length - __pyx_v_nbytes); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":381 + * self._pos0 += nbytes + * self._length -= nbytes + * break # <<<<<<<<<<<<<< + * + * cdef inline _read_and_discard(self, ssize_t nbytes): +*/ + goto __pyx_L4_break; + } + __pyx_L5:; + } + __pyx_L4_break:; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":360 + * return NULL + * + * cdef inline _read_into(self, char *buf, ssize_t nbytes): # <<<<<<<<<<<<<< + * cdef: + * ssize_t nread +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer._read_into", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":383 + * break + * + * cdef inline _read_and_discard(self, ssize_t nbytes): # <<<<<<<<<<<<<< + * cdef: + * ssize_t nread +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__read_and_discard(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, Py_ssize_t __pyx_v_nbytes) { + Py_ssize_t __pyx_v_nread; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_read_and_discard", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":387 + * ssize_t nread + * + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * while True: + * if self._pos0 + nbytes > self._len0: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 387, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":388 + * + * self._ensure_first_buf() + * while True: # <<<<<<<<<<<<<< + * if self._pos0 + nbytes > self._len0: + * nread = self._len0 - self._pos0 +*/ + while (1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":389 + * self._ensure_first_buf() + * while True: + * if self._pos0 + nbytes > self._len0: # <<<<<<<<<<<<<< + * nread = self._len0 - self._pos0 + * self._pos0 = self._len0 +*/ + __pyx_t_2 = ((__pyx_v_self->_pos0 + __pyx_v_nbytes) > __pyx_v_self->_len0); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":390 + * while True: + * if self._pos0 + nbytes > self._len0: + * nread = self._len0 - self._pos0 # <<<<<<<<<<<<<< + * self._pos0 = self._len0 + * self._length -= nread +*/ + __pyx_v_nread = (__pyx_v_self->_len0 - __pyx_v_self->_pos0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":391 + * if self._pos0 + nbytes > self._len0: + * nread = self._len0 - self._pos0 + * self._pos0 = self._len0 # <<<<<<<<<<<<<< + * self._length -= nread + * nbytes -= nread +*/ + __pyx_t_3 = __pyx_v_self->_len0; + __pyx_v_self->_pos0 = __pyx_t_3; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":392 + * nread = self._len0 - self._pos0 + * self._pos0 = self._len0 + * self._length -= nread # <<<<<<<<<<<<<< + * nbytes -= nread + * self._ensure_first_buf() +*/ + __pyx_v_self->_length = (__pyx_v_self->_length - __pyx_v_nread); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":393 + * self._pos0 = self._len0 + * self._length -= nread + * nbytes -= nread # <<<<<<<<<<<<<< + * self._ensure_first_buf() + * +*/ + __pyx_v_nbytes = (__pyx_v_nbytes - __pyx_v_nread); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":394 + * self._length -= nread + * nbytes -= nread + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * + * else: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 394, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":389 + * self._ensure_first_buf() + * while True: + * if self._pos0 + nbytes > self._len0: # <<<<<<<<<<<<<< + * nread = self._len0 - self._pos0 + * self._pos0 = self._len0 +*/ + goto __pyx_L5; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":397 + * + * else: + * self._pos0 += nbytes # <<<<<<<<<<<<<< + * self._length -= nbytes + * break +*/ + /*else*/ { + __pyx_v_self->_pos0 = (__pyx_v_self->_pos0 + __pyx_v_nbytes); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":398 + * else: + * self._pos0 += nbytes + * self._length -= nbytes # <<<<<<<<<<<<<< + * break + * +*/ + __pyx_v_self->_length = (__pyx_v_self->_length - __pyx_v_nbytes); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":399 + * self._pos0 += nbytes + * self._length -= nbytes + * break # <<<<<<<<<<<<<< + * + * cdef bytes read_bytes(self, ssize_t nbytes): +*/ + goto __pyx_L4_break; + } + __pyx_L5:; + } + __pyx_L4_break:; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":383 + * break + * + * cdef inline _read_and_discard(self, ssize_t nbytes): # <<<<<<<<<<<<<< + * cdef: + * ssize_t nread +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer._read_and_discard", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":401 + * break + * + * cdef bytes read_bytes(self, ssize_t nbytes): # <<<<<<<<<<<<<< + * cdef: + * bytes result +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_bytes(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, Py_ssize_t __pyx_v_nbytes) { + PyObject *__pyx_v_result = 0; + char const *__pyx_v_cbuf; + char *__pyx_v_buf; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + char const *__pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("read_bytes", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":408 + * char *buf + * + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * cbuf = self._try_read_bytes(nbytes) + * if cbuf != NULL: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 408, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":409 + * + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(nbytes) # <<<<<<<<<<<<<< + * if cbuf != NULL: + * return cpython.PyBytes_FromStringAndSize(cbuf, nbytes) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__try_read_bytes(__pyx_v_self, __pyx_v_nbytes); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 409, __pyx_L1_error) + __pyx_v_cbuf = __pyx_t_2; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":410 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(nbytes) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * return cpython.PyBytes_FromStringAndSize(cbuf, nbytes) + * +*/ + __pyx_t_3 = (__pyx_v_cbuf != NULL); + if (__pyx_t_3) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":411 + * cbuf = self._try_read_bytes(nbytes) + * if cbuf != NULL: + * return cpython.PyBytes_FromStringAndSize(cbuf, nbytes) # <<<<<<<<<<<<<< + * + * if nbytes > self._length: +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyBytes_FromStringAndSize(__pyx_v_cbuf, __pyx_v_nbytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 411, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":410 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(nbytes) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * return cpython.PyBytes_FromStringAndSize(cbuf, nbytes) + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":413 + * return cpython.PyBytes_FromStringAndSize(cbuf, nbytes) + * + * if nbytes > self._length: # <<<<<<<<<<<<<< + * raise BufferError( + * 'not enough data to read {} bytes'.format(nbytes)) +*/ + __pyx_t_3 = (__pyx_v_nbytes > __pyx_v_self->_length); + if (unlikely(__pyx_t_3)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":414 + * + * if nbytes > self._length: + * raise BufferError( # <<<<<<<<<<<<<< + * 'not enough data to read {} bytes'.format(nbytes)) + * +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 414, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":415 + * if nbytes > self._length: + * raise BufferError( + * 'not enough data to read {} bytes'.format(nbytes)) # <<<<<<<<<<<<<< + * + * if self._current_message_ready: +*/ + __pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_not_enough_data_to_read_bytes; + __Pyx_INCREF(__pyx_t_7); + __pyx_t_8 = PyLong_FromSsize_t(__pyx_v_nbytes); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 415, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_8}; + __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 415, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __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[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __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_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 414, __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(2, 414, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":413 + * return cpython.PyBytes_FromStringAndSize(cbuf, nbytes) + * + * if nbytes > self._length: # <<<<<<<<<<<<<< + * raise BufferError( + * 'not enough data to read {} bytes'.format(nbytes)) +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":417 + * 'not enough data to read {} bytes'.format(nbytes)) + * + * if self._current_message_ready: # <<<<<<<<<<<<<< + * self._current_message_len_unread -= nbytes + * if self._current_message_len_unread < 0: +*/ + if (__pyx_v_self->_current_message_ready) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":418 + * + * if self._current_message_ready: + * self._current_message_len_unread -= nbytes # <<<<<<<<<<<<<< + * if self._current_message_len_unread < 0: + * raise BufferError('buffer overread') +*/ + __pyx_v_self->_current_message_len_unread = (__pyx_v_self->_current_message_len_unread - __pyx_v_nbytes); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":419 + * if self._current_message_ready: + * self._current_message_len_unread -= nbytes + * if self._current_message_len_unread < 0: # <<<<<<<<<<<<<< + * raise BufferError('buffer overread') + * +*/ + __pyx_t_3 = (__pyx_v_self->_current_message_len_unread < 0); + if (unlikely(__pyx_t_3)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":420 + * self._current_message_len_unread -= nbytes + * if self._current_message_len_unread < 0: + * raise BufferError('buffer overread') # <<<<<<<<<<<<<< + * + * result = cpython.PyBytes_FromStringAndSize(NULL, nbytes) +*/ + __pyx_t_5 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 420, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __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[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_buffer_overread}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __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_1)) __PYX_ERR(2, 420, __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(2, 420, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":419 + * if self._current_message_ready: + * self._current_message_len_unread -= nbytes + * if self._current_message_len_unread < 0: # <<<<<<<<<<<<<< + * raise BufferError('buffer overread') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":417 + * 'not enough data to read {} bytes'.format(nbytes)) + * + * if self._current_message_ready: # <<<<<<<<<<<<<< + * self._current_message_len_unread -= nbytes + * if self._current_message_len_unread < 0: +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":422 + * raise BufferError('buffer overread') + * + * result = cpython.PyBytes_FromStringAndSize(NULL, nbytes) # <<<<<<<<<<<<<< + * buf = cpython.PyBytes_AS_STRING(result) + * self._read_into(buf, nbytes) +*/ + __pyx_t_1 = PyBytes_FromStringAndSize(NULL, __pyx_v_nbytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 422, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_result = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":423 + * + * result = cpython.PyBytes_FromStringAndSize(NULL, nbytes) + * buf = cpython.PyBytes_AS_STRING(result) # <<<<<<<<<<<<<< + * self._read_into(buf, nbytes) + * return result +*/ + __pyx_v_buf = PyBytes_AS_STRING(__pyx_v_result); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":424 + * result = cpython.PyBytes_FromStringAndSize(NULL, nbytes) + * buf = cpython.PyBytes_AS_STRING(result) + * self._read_into(buf, nbytes) # <<<<<<<<<<<<<< + * return result + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__read_into(__pyx_v_self, __pyx_v_buf, __pyx_v_nbytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 424, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":425 + * buf = cpython.PyBytes_AS_STRING(result) + * self._read_into(buf, nbytes) + * return result # <<<<<<<<<<<<<< + * + * cdef bytes read_len_prefixed_bytes(self): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_result); + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":401 + * break + * + * cdef bytes read_bytes(self, ssize_t nbytes): # <<<<<<<<<<<<<< + * cdef: + * bytes result +*/ + + /* 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_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.read_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":427 + * return result + * + * cdef bytes read_len_prefixed_bytes(self): # <<<<<<<<<<<<<< + * cdef int32_t size = self.read_int32() + * if size < 0: +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_len_prefixed_bytes(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + int32_t __pyx_v_size; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int32_t __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("read_len_prefixed_bytes", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":428 + * + * cdef bytes read_len_prefixed_bytes(self): + * cdef int32_t size = self.read_int32() # <<<<<<<<<<<<<< + * if size < 0: + * raise BufferError( +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_int32(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int32_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 428, __pyx_L1_error) + __pyx_v_size = __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":429 + * cdef bytes read_len_prefixed_bytes(self): + * cdef int32_t size = self.read_int32() + * if size < 0: # <<<<<<<<<<<<<< + * raise BufferError( + * 'negative length for a len-prefixed bytes value') +*/ + __pyx_t_2 = (__pyx_v_size < 0); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":430 + * cdef int32_t size = self.read_int32() + * if size < 0: + * raise BufferError( # <<<<<<<<<<<<<< + * 'negative length for a len-prefixed bytes value') + * if size == 0: +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 430, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); + __pyx_t_6 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_negative_length_for_a_len_prefix}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 430, __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(2, 430, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":429 + * cdef bytes read_len_prefixed_bytes(self): + * cdef int32_t size = self.read_int32() + * if size < 0: # <<<<<<<<<<<<<< + * raise BufferError( + * 'negative length for a len-prefixed bytes value') +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":432 + * raise BufferError( + * 'negative length for a len-prefixed bytes value') + * if size == 0: # <<<<<<<<<<<<<< + * return b'' + * return self.read_bytes(size) +*/ + __pyx_t_2 = (__pyx_v_size == 0); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":433 + * 'negative length for a len-prefixed bytes value') + * if size == 0: + * return b'' # <<<<<<<<<<<<<< + * return self.read_bytes(size) + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_b_); + __pyx_r = __pyx_mstate_global->__pyx_kp_b_; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":432 + * raise BufferError( + * 'negative length for a len-prefixed bytes value') + * if size == 0: # <<<<<<<<<<<<<< + * return b'' + * return self.read_bytes(size) +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":434 + * if size == 0: + * return b'' + * return self.read_bytes(size) # <<<<<<<<<<<<<< + * + * cdef str read_len_prefixed_utf8(self): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_bytes(__pyx_v_self, __pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 434, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":427 + * return result + * + * cdef bytes read_len_prefixed_bytes(self): # <<<<<<<<<<<<<< + * cdef int32_t size = self.read_int32() + * if size < 0: +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.read_len_prefixed_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":436 + * return self.read_bytes(size) + * + * cdef str read_len_prefixed_utf8(self): # <<<<<<<<<<<<<< + * cdef: + * int32_t size +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_len_prefixed_utf8(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + int32_t __pyx_v_size; + char const *__pyx_v_cbuf; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int32_t __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + char const *__pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("read_len_prefixed_utf8", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":441 + * const char *cbuf + * + * size = self.read_int32() # <<<<<<<<<<<<<< + * if size < 0: + * raise BufferError( +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_int32(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int32_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 441, __pyx_L1_error) + __pyx_v_size = __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":442 + * + * size = self.read_int32() + * if size < 0: # <<<<<<<<<<<<<< + * raise BufferError( + * 'negative length for a len-prefixed bytes value') +*/ + __pyx_t_2 = (__pyx_v_size < 0); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":443 + * size = self.read_int32() + * if size < 0: + * raise BufferError( # <<<<<<<<<<<<<< + * 'negative length for a len-prefixed bytes value') + * +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 443, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); + __pyx_t_6 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_negative_length_for_a_len_prefix}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 443, __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(2, 443, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":442 + * + * size = self.read_int32() + * if size < 0: # <<<<<<<<<<<<<< + * raise BufferError( + * 'negative length for a len-prefixed bytes value') +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":446 + * 'negative length for a len-prefixed bytes value') + * + * if size == 0: # <<<<<<<<<<<<<< + * return '' + * +*/ + __pyx_t_2 = (__pyx_v_size == 0); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":447 + * + * if size == 0: + * return '' # <<<<<<<<<<<<<< + * + * self._ensure_first_buf() +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_); + __pyx_r = __pyx_mstate_global->__pyx_kp_u_; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":446 + * 'negative length for a len-prefixed bytes value') + * + * if size == 0: # <<<<<<<<<<<<<< + * return '' + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":449 + * return '' + * + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * cbuf = self._try_read_bytes(size) + * if cbuf != NULL: +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 449, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":450 + * + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(size) # <<<<<<<<<<<<<< + * if cbuf != NULL: + * return cpython.PyUnicode_DecodeUTF8(cbuf, size, NULL) +*/ + __pyx_t_7 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__try_read_bytes(__pyx_v_self, __pyx_v_size); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 450, __pyx_L1_error) + __pyx_v_cbuf = __pyx_t_7; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":451 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(size) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * return cpython.PyUnicode_DecodeUTF8(cbuf, size, NULL) + * else: +*/ + __pyx_t_2 = (__pyx_v_cbuf != NULL); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":452 + * cbuf = self._try_read_bytes(size) + * if cbuf != NULL: + * return cpython.PyUnicode_DecodeUTF8(cbuf, size, NULL) # <<<<<<<<<<<<<< + * else: + * return self.read_bytes(size).decode('utf-8') +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = PyUnicode_DecodeUTF8(__pyx_v_cbuf, __pyx_v_size, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 452, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":451 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(size) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * return cpython.PyUnicode_DecodeUTF8(cbuf, size, NULL) + * else: +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":454 + * return cpython.PyUnicode_DecodeUTF8(cbuf, size, NULL) + * else: + * return self.read_bytes(size).decode('utf-8') # <<<<<<<<<<<<<< + * + * cdef read_uuid(self): +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_bytes(__pyx_v_self, __pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 454, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (unlikely(__pyx_t_3 == Py_None)) { + PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode"); + __PYX_ERR(2, 454, __pyx_L1_error) + } + __pyx_t_5 = __Pyx_decode_bytes(__pyx_t_3, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 454, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = ((PyObject*)__pyx_t_5); + __pyx_t_5 = 0; + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":436 + * return self.read_bytes(size) + * + * cdef str read_len_prefixed_utf8(self): # <<<<<<<<<<<<<< + * cdef: + * int32_t size +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.read_len_prefixed_utf8", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":456 + * return self.read_bytes(size).decode('utf-8') + * + * cdef read_uuid(self): # <<<<<<<<<<<<<< + * cdef: + * bytes mem +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_uuid(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + char const *__pyx_v_cbuf; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + char const *__pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("read_uuid", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":461 + * const char *cbuf + * + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * cbuf = self._try_read_bytes(16) + * if cbuf != NULL: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 461, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":462 + * + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(16) # <<<<<<<<<<<<<< + * if cbuf != NULL: + * return gaussdb_uuid_from_buf(cbuf) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__try_read_bytes(__pyx_v_self, 16); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 462, __pyx_L1_error) + __pyx_v_cbuf = __pyx_t_2; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":463 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(16) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * return gaussdb_uuid_from_buf(cbuf) + * else: +*/ + __pyx_t_3 = (__pyx_v_cbuf != NULL); + if (__pyx_t_3) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":464 + * cbuf = self._try_read_bytes(16) + * if cbuf != NULL: + * return gaussdb_uuid_from_buf(cbuf) # <<<<<<<<<<<<<< + * else: + * return gaussdb_UUID(self.read_bytes(16)) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_uuid_from_buf(__pyx_v_cbuf); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 464, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":463 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(16) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * return gaussdb_uuid_from_buf(cbuf) + * else: +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":466 + * return gaussdb_uuid_from_buf(cbuf) + * else: + * return gaussdb_UUID(self.read_bytes(16)) # <<<<<<<<<<<<<< + * + * cdef inline char read_byte(self) except? -1: +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_UUID); + __pyx_t_5 = __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_UUID; + __pyx_t_6 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_bytes(__pyx_v_self, 16); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 466, __pyx_L1_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_1 = __Pyx_PyObject_FastCall(__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_1)) __PYX_ERR(2, 466, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":456 + * return self.read_bytes(size).decode('utf-8') + * + * cdef read_uuid(self): # <<<<<<<<<<<<<< + * cdef: + * bytes mem +*/ + + /* 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_6); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.read_uuid", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":468 + * return gaussdb_UUID(self.read_bytes(16)) + * + * cdef inline char read_byte(self) except? -1: # <<<<<<<<<<<<<< + * cdef const char *first_byte + * +*/ + +static CYTHON_INLINE char __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_byte(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + char const *__pyx_v_first_byte; + char __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + char const *__pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("read_byte", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":471 + * cdef const char *first_byte + * + * if GAUSSDB_DEBUG: # <<<<<<<<<<<<<< + * if not self._buf0: + * raise BufferError( +*/ + __pyx_t_1 = (GAUSSDB_DEBUG != 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":472 + * + * if GAUSSDB_DEBUG: + * if not self._buf0: # <<<<<<<<<<<<<< + * raise BufferError( + * 'debug: first buffer of ReadBuffer is empty') +*/ + __pyx_t_1 = (__pyx_v_self->_buf0 != Py_None)&&(__Pyx_PyBytes_GET_SIZE(__pyx_v_self->_buf0) != 0); + if (unlikely(((!CYTHON_ASSUME_SAFE_MACROS) && __pyx_t_1 < 0))) __PYX_ERR(2, 472, __pyx_L1_error) + __pyx_t_2 = (!__pyx_t_1); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":473 + * if GAUSSDB_DEBUG: + * if not self._buf0: + * raise BufferError( # <<<<<<<<<<<<<< + * 'debug: first buffer of ReadBuffer is empty') + * +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 473, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); + __pyx_t_6 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_debug_first_buffer_of_ReadBuffer}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 473, __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(2, 473, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":472 + * + * if GAUSSDB_DEBUG: + * if not self._buf0: # <<<<<<<<<<<<<< + * raise BufferError( + * 'debug: first buffer of ReadBuffer is empty') +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":471 + * cdef const char *first_byte + * + * if GAUSSDB_DEBUG: # <<<<<<<<<<<<<< + * if not self._buf0: + * raise BufferError( +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":476 + * 'debug: first buffer of ReadBuffer is empty') + * + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * first_byte = self._try_read_bytes(1) + * if first_byte is NULL: +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 476, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":477 + * + * self._ensure_first_buf() + * first_byte = self._try_read_bytes(1) # <<<<<<<<<<<<<< + * if first_byte is NULL: + * raise BufferError('not enough data to read one byte') +*/ + __pyx_t_7 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__try_read_bytes(__pyx_v_self, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 477, __pyx_L1_error) + __pyx_v_first_byte = __pyx_t_7; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":478 + * self._ensure_first_buf() + * first_byte = self._try_read_bytes(1) + * if first_byte is NULL: # <<<<<<<<<<<<<< + * raise BufferError('not enough data to read one byte') + * +*/ + __pyx_t_2 = (__pyx_v_first_byte == NULL); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":479 + * first_byte = self._try_read_bytes(1) + * if first_byte is NULL: + * raise BufferError('not enough data to read one byte') # <<<<<<<<<<<<<< + * + * return first_byte[0] +*/ + __pyx_t_5 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 479, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __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[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_not_enough_data_to_read_one_byte}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __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; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 479, __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(2, 479, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":478 + * self._ensure_first_buf() + * first_byte = self._try_read_bytes(1) + * if first_byte is NULL: # <<<<<<<<<<<<<< + * raise BufferError('not enough data to read one byte') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":481 + * raise BufferError('not enough data to read one byte') + * + * return first_byte[0] # <<<<<<<<<<<<<< + * + * cdef inline int64_t read_int64(self) except? -1: +*/ + __pyx_r = (__pyx_v_first_byte[0]); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":468 + * return gaussdb_UUID(self.read_bytes(16)) + * + * cdef inline char read_byte(self) except? -1: # <<<<<<<<<<<<<< + * cdef const char *first_byte + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.read_byte", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":483 + * return first_byte[0] + * + * cdef inline int64_t read_int64(self) except? -1: # <<<<<<<<<<<<<< + * cdef: + * bytes mem +*/ + +static CYTHON_INLINE int64_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_int64(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + PyObject *__pyx_v_mem = 0; + char const *__pyx_v_cbuf; + int64_t __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + char const *__pyx_t_2; + int __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("read_int64", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":488 + * const char *cbuf + * + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * cbuf = self._try_read_bytes(8) + * if cbuf != NULL: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 488, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":489 + * + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(8) # <<<<<<<<<<<<<< + * if cbuf != NULL: + * return hton.unpack_int64(cbuf) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__try_read_bytes(__pyx_v_self, 8); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 489, __pyx_L1_error) + __pyx_v_cbuf = __pyx_t_2; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":490 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(8) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * return hton.unpack_int64(cbuf) + * else: +*/ + __pyx_t_3 = (__pyx_v_cbuf != NULL); + if (__pyx_t_3) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":491 + * cbuf = self._try_read_bytes(8) + * if cbuf != NULL: + * return hton.unpack_int64(cbuf) # <<<<<<<<<<<<<< + * else: + * mem = self.read_bytes(8) +*/ + __pyx_r = unpack_int64(__pyx_v_cbuf); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":490 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(8) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * return hton.unpack_int64(cbuf) + * else: +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":493 + * return hton.unpack_int64(cbuf) + * else: + * mem = self.read_bytes(8) # <<<<<<<<<<<<<< + * return hton.unpack_int64(cpython.PyBytes_AS_STRING(mem)) + * +*/ + /*else*/ { + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_bytes(__pyx_v_self, 8); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 493, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_mem = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":494 + * else: + * mem = self.read_bytes(8) + * return hton.unpack_int64(cpython.PyBytes_AS_STRING(mem)) # <<<<<<<<<<<<<< + * + * cdef inline int32_t read_int32(self) except? -1: +*/ + __pyx_r = unpack_int64(PyBytes_AS_STRING(__pyx_v_mem)); + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":483 + * return first_byte[0] + * + * cdef inline int64_t read_int64(self) except? -1: # <<<<<<<<<<<<<< + * cdef: + * bytes mem +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.read_int64", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_mem); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":496 + * return hton.unpack_int64(cpython.PyBytes_AS_STRING(mem)) + * + * cdef inline int32_t read_int32(self) except? -1: # <<<<<<<<<<<<<< + * cdef: + * bytes mem +*/ + +static CYTHON_INLINE int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_int32(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + PyObject *__pyx_v_mem = 0; + char const *__pyx_v_cbuf; + int32_t __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + char const *__pyx_t_2; + int __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("read_int32", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":501 + * const char *cbuf + * + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * cbuf = self._try_read_bytes(4) + * if cbuf != NULL: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 501, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":502 + * + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(4) # <<<<<<<<<<<<<< + * if cbuf != NULL: + * return hton.unpack_int32(cbuf) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__try_read_bytes(__pyx_v_self, 4); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 502, __pyx_L1_error) + __pyx_v_cbuf = __pyx_t_2; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":503 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(4) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * return hton.unpack_int32(cbuf) + * else: +*/ + __pyx_t_3 = (__pyx_v_cbuf != NULL); + if (__pyx_t_3) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":504 + * cbuf = self._try_read_bytes(4) + * if cbuf != NULL: + * return hton.unpack_int32(cbuf) # <<<<<<<<<<<<<< + * else: + * mem = self.read_bytes(4) +*/ + __pyx_r = unpack_int32(__pyx_v_cbuf); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":503 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(4) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * return hton.unpack_int32(cbuf) + * else: +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":506 + * return hton.unpack_int32(cbuf) + * else: + * mem = self.read_bytes(4) # <<<<<<<<<<<<<< + * return hton.unpack_int32(cpython.PyBytes_AS_STRING(mem)) + * +*/ + /*else*/ { + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_bytes(__pyx_v_self, 4); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 506, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_mem = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":507 + * else: + * mem = self.read_bytes(4) + * return hton.unpack_int32(cpython.PyBytes_AS_STRING(mem)) # <<<<<<<<<<<<<< + * + * cdef inline int16_t read_int16(self) except? -1: +*/ + __pyx_r = unpack_int32(PyBytes_AS_STRING(__pyx_v_mem)); + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":496 + * return hton.unpack_int64(cpython.PyBytes_AS_STRING(mem)) + * + * cdef inline int32_t read_int32(self) except? -1: # <<<<<<<<<<<<<< + * cdef: + * bytes mem +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.read_int32", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_mem); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":509 + * return hton.unpack_int32(cpython.PyBytes_AS_STRING(mem)) + * + * cdef inline int16_t read_int16(self) except? -1: # <<<<<<<<<<<<<< + * cdef: + * bytes mem +*/ + +static CYTHON_INLINE int16_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_int16(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + PyObject *__pyx_v_mem = 0; + char const *__pyx_v_cbuf; + int16_t __pyx_r; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + char const *__pyx_t_2; + int __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("read_int16", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":514 + * const char *cbuf + * + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * cbuf = self._try_read_bytes(2) + * if cbuf != NULL: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 514, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":515 + * + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(2) # <<<<<<<<<<<<<< + * if cbuf != NULL: + * return hton.unpack_int16(cbuf) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__try_read_bytes(__pyx_v_self, 2); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 515, __pyx_L1_error) + __pyx_v_cbuf = __pyx_t_2; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":516 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(2) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * return hton.unpack_int16(cbuf) + * else: +*/ + __pyx_t_3 = (__pyx_v_cbuf != NULL); + if (__pyx_t_3) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":517 + * cbuf = self._try_read_bytes(2) + * if cbuf != NULL: + * return hton.unpack_int16(cbuf) # <<<<<<<<<<<<<< + * else: + * mem = self.read_bytes(2) +*/ + __pyx_r = unpack_int16(__pyx_v_cbuf); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":516 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(2) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * return hton.unpack_int16(cbuf) + * else: +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":519 + * return hton.unpack_int16(cbuf) + * else: + * mem = self.read_bytes(2) # <<<<<<<<<<<<<< + * return hton.unpack_int16(cpython.PyBytes_AS_STRING(mem)) + * +*/ + /*else*/ { + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_bytes(__pyx_v_self, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 519, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_mem = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":520 + * else: + * mem = self.read_bytes(2) + * return hton.unpack_int16(cpython.PyBytes_AS_STRING(mem)) # <<<<<<<<<<<<<< + * + * cdef inline read_null_str(self): +*/ + __pyx_r = unpack_int16(PyBytes_AS_STRING(__pyx_v_mem)); + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":509 + * return hton.unpack_int32(cpython.PyBytes_AS_STRING(mem)) + * + * cdef inline int16_t read_int16(self) except? -1: # <<<<<<<<<<<<<< + * cdef: + * bytes mem +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.read_int16", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_mem); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":522 + * return hton.unpack_int16(cpython.PyBytes_AS_STRING(mem)) + * + * cdef inline read_null_str(self): # <<<<<<<<<<<<<< + * if not self._current_message_ready: + * raise BufferError( +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_null_str(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + Py_ssize_t __pyx_v_pos; + Py_ssize_t __pyx_v_nread; + PyObject *__pyx_v_result = 0; + char const *__pyx_v_buf; + char const *__pyx_v_buf_start; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + char const *__pyx_t_6; + Py_ssize_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("read_null_str", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":523 + * + * cdef inline read_null_str(self): + * if not self._current_message_ready: # <<<<<<<<<<<<<< + * raise BufferError( + * 'read_null_str only works when the message guaranteed ' +*/ + __pyx_t_1 = (!__pyx_v_self->_current_message_ready); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":524 + * cdef inline read_null_str(self): + * if not self._current_message_ready: + * raise BufferError( # <<<<<<<<<<<<<< + * 'read_null_str only works when the message guaranteed ' + * 'to be in the buffer') +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 524, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_read_null_str_only_works_when_th}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 524, __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(2, 524, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":523 + * + * cdef inline read_null_str(self): + * if not self._current_message_ready: # <<<<<<<<<<<<<< + * raise BufferError( + * 'read_null_str only works when the message guaranteed ' +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":535 + * const char *buf_start + * + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * + * buf_start = cpython.PyBytes_AS_STRING(self._buf0) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 535, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":537 + * self._ensure_first_buf() + * + * buf_start = cpython.PyBytes_AS_STRING(self._buf0) # <<<<<<<<<<<<<< + * buf = buf_start + self._pos0 + * while buf - buf_start < self._len0: +*/ + __pyx_t_2 = __pyx_v_self->_buf0; + __Pyx_INCREF(__pyx_t_2); + __pyx_v_buf_start = PyBytes_AS_STRING(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":538 + * + * buf_start = cpython.PyBytes_AS_STRING(self._buf0) + * buf = buf_start + self._pos0 # <<<<<<<<<<<<<< + * while buf - buf_start < self._len0: + * if buf[0] == 0: +*/ + __pyx_v_buf = (__pyx_v_buf_start + __pyx_v_self->_pos0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":539 + * buf_start = cpython.PyBytes_AS_STRING(self._buf0) + * buf = buf_start + self._pos0 + * while buf - buf_start < self._len0: # <<<<<<<<<<<<<< + * if buf[0] == 0: + * pos = buf - buf_start +*/ + while (1) { + __pyx_t_1 = ((__pyx_v_buf - __pyx_v_buf_start) < __pyx_v_self->_len0); + if (!__pyx_t_1) break; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":540 + * buf = buf_start + self._pos0 + * while buf - buf_start < self._len0: + * if buf[0] == 0: # <<<<<<<<<<<<<< + * pos = buf - buf_start + * nread = pos - self._pos0 +*/ + __pyx_t_1 = ((__pyx_v_buf[0]) == 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":541 + * while buf - buf_start < self._len0: + * if buf[0] == 0: + * pos = buf - buf_start # <<<<<<<<<<<<<< + * nread = pos - self._pos0 + * buf = self._try_read_bytes(nread + 1) +*/ + __pyx_v_pos = (__pyx_v_buf - __pyx_v_buf_start); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":542 + * if buf[0] == 0: + * pos = buf - buf_start + * nread = pos - self._pos0 # <<<<<<<<<<<<<< + * buf = self._try_read_bytes(nread + 1) + * if buf != NULL: +*/ + __pyx_v_nread = (__pyx_v_pos - __pyx_v_self->_pos0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":543 + * pos = buf - buf_start + * nread = pos - self._pos0 + * buf = self._try_read_bytes(nread + 1) # <<<<<<<<<<<<<< + * if buf != NULL: + * return cpython.PyBytes_FromStringAndSize(buf, nread) +*/ + __pyx_t_6 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__try_read_bytes(__pyx_v_self, (__pyx_v_nread + 1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 543, __pyx_L1_error) + __pyx_v_buf = __pyx_t_6; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":544 + * nread = pos - self._pos0 + * buf = self._try_read_bytes(nread + 1) + * if buf != NULL: # <<<<<<<<<<<<<< + * return cpython.PyBytes_FromStringAndSize(buf, nread) + * else: +*/ + __pyx_t_1 = (__pyx_v_buf != NULL); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":545 + * buf = self._try_read_bytes(nread + 1) + * if buf != NULL: + * return cpython.PyBytes_FromStringAndSize(buf, nread) # <<<<<<<<<<<<<< + * else: + * break +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = PyBytes_FromStringAndSize(__pyx_v_buf, __pyx_v_nread); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 545, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":544 + * nread = pos - self._pos0 + * buf = self._try_read_bytes(nread + 1) + * if buf != NULL: # <<<<<<<<<<<<<< + * return cpython.PyBytes_FromStringAndSize(buf, nread) + * else: +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":547 + * return cpython.PyBytes_FromStringAndSize(buf, nread) + * else: + * break # <<<<<<<<<<<<<< + * else: + * buf += 1 +*/ + /*else*/ { + goto __pyx_L5_break; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":540 + * buf = buf_start + self._pos0 + * while buf - buf_start < self._len0: + * if buf[0] == 0: # <<<<<<<<<<<<<< + * pos = buf - buf_start + * nread = pos - self._pos0 +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":549 + * break + * else: + * buf += 1 # <<<<<<<<<<<<<< + * + * result = b'' +*/ + /*else*/ { + __pyx_v_buf = (__pyx_v_buf + 1); + } + } + __pyx_L5_break:; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":551 + * buf += 1 + * + * result = b'' # <<<<<<<<<<<<<< + * while True: + * pos = self._buf0.find(b'\x00', self._pos0) +*/ + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_b_); + __pyx_v_result = __pyx_mstate_global->__pyx_kp_b_; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":552 + * + * result = b'' + * while True: # <<<<<<<<<<<<<< + * pos = self._buf0.find(b'\x00', self._pos0) + * if pos >= 0: +*/ + while (1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":553 + * result = b'' + * while True: + * pos = self._buf0.find(b'\x00', self._pos0) # <<<<<<<<<<<<<< + * if pos >= 0: + * result += self._buf0[self._pos0 : pos] +*/ + __pyx_t_4 = __pyx_v_self->_buf0; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_3 = PyLong_FromSsize_t(__pyx_v_self->_pos0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 553, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_b__2, __pyx_t_3}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_find, __pyx_callargs+__pyx_t_5, (3-__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(2, 553, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_t_7 = PyLong_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 553, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_pos = __pyx_t_7; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":554 + * while True: + * pos = self._buf0.find(b'\x00', self._pos0) + * if pos >= 0: # <<<<<<<<<<<<<< + * result += self._buf0[self._pos0 : pos] + * nread = pos - self._pos0 + 1 +*/ + __pyx_t_1 = (__pyx_v_pos >= 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":555 + * pos = self._buf0.find(b'\x00', self._pos0) + * if pos >= 0: + * result += self._buf0[self._pos0 : pos] # <<<<<<<<<<<<<< + * nread = pos - self._pos0 + 1 + * self._pos0 = pos + 1 +*/ + if (unlikely(__pyx_v_self->_buf0 == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 555, __pyx_L1_error) + } + __pyx_t_2 = PySequence_GetSlice(__pyx_v_self->_buf0, __pyx_v_self->_pos0, __pyx_v_pos); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 555, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 555, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":556 + * if pos >= 0: + * result += self._buf0[self._pos0 : pos] + * nread = pos - self._pos0 + 1 # <<<<<<<<<<<<<< + * self._pos0 = pos + 1 + * self._length -= nread +*/ + __pyx_v_nread = ((__pyx_v_pos - __pyx_v_self->_pos0) + 1); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":557 + * result += self._buf0[self._pos0 : pos] + * nread = pos - self._pos0 + 1 + * self._pos0 = pos + 1 # <<<<<<<<<<<<<< + * self._length -= nread + * +*/ + __pyx_v_self->_pos0 = (__pyx_v_pos + 1); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":558 + * nread = pos - self._pos0 + 1 + * self._pos0 = pos + 1 + * self._length -= nread # <<<<<<<<<<<<<< + * + * self._current_message_len_unread -= nread +*/ + __pyx_v_self->_length = (__pyx_v_self->_length - __pyx_v_nread); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":560 + * self._length -= nread + * + * self._current_message_len_unread -= nread # <<<<<<<<<<<<<< + * if self._current_message_len_unread < 0: + * raise BufferError( +*/ + __pyx_v_self->_current_message_len_unread = (__pyx_v_self->_current_message_len_unread - __pyx_v_nread); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":561 + * + * self._current_message_len_unread -= nread + * if self._current_message_len_unread < 0: # <<<<<<<<<<<<<< + * raise BufferError( + * 'read_null_str: buffer overread') +*/ + __pyx_t_1 = (__pyx_v_self->_current_message_len_unread < 0); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":562 + * self._current_message_len_unread -= nread + * if self._current_message_len_unread < 0: + * raise BufferError( # <<<<<<<<<<<<<< + * 'read_null_str: buffer overread') + * +*/ + __pyx_t_2 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 562, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_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, __pyx_mstate_global->__pyx_kp_u_read_null_str_buffer_overread}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 562, __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(2, 562, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":561 + * + * self._current_message_len_unread -= nread + * if self._current_message_len_unread < 0: # <<<<<<<<<<<<<< + * raise BufferError( + * 'read_null_str: buffer overread') +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":565 + * 'read_null_str: buffer overread') + * + * return result # <<<<<<<<<<<<<< + * + * else: +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_result); + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":554 + * while True: + * pos = self._buf0.find(b'\x00', self._pos0) + * if pos >= 0: # <<<<<<<<<<<<<< + * result += self._buf0[self._pos0 : pos] + * nread = pos - self._pos0 + 1 +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":568 + * + * else: + * result += self._buf0[self._pos0:] # <<<<<<<<<<<<<< + * nread = self._len0 - self._pos0 + * self._pos0 = self._len0 +*/ + /*else*/ { + if (unlikely(__pyx_v_self->_buf0 == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(2, 568, __pyx_L1_error) + } + __pyx_t_3 = PySequence_GetSlice(__pyx_v_self->_buf0, __pyx_v_self->_pos0, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 568, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 568, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF_SET(__pyx_v_result, ((PyObject*)__pyx_t_4)); + __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":569 + * else: + * result += self._buf0[self._pos0:] + * nread = self._len0 - self._pos0 # <<<<<<<<<<<<<< + * self._pos0 = self._len0 + * self._length -= nread +*/ + __pyx_v_nread = (__pyx_v_self->_len0 - __pyx_v_self->_pos0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":570 + * result += self._buf0[self._pos0:] + * nread = self._len0 - self._pos0 + * self._pos0 = self._len0 # <<<<<<<<<<<<<< + * self._length -= nread + * +*/ + __pyx_t_7 = __pyx_v_self->_len0; + __pyx_v_self->_pos0 = __pyx_t_7; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":571 + * nread = self._len0 - self._pos0 + * self._pos0 = self._len0 + * self._length -= nread # <<<<<<<<<<<<<< + * + * self._current_message_len_unread -= nread +*/ + __pyx_v_self->_length = (__pyx_v_self->_length - __pyx_v_nread); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":573 + * self._length -= nread + * + * self._current_message_len_unread -= nread # <<<<<<<<<<<<<< + * if self._current_message_len_unread < 0: + * raise BufferError( +*/ + __pyx_v_self->_current_message_len_unread = (__pyx_v_self->_current_message_len_unread - __pyx_v_nread); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":574 + * + * self._current_message_len_unread -= nread + * if self._current_message_len_unread < 0: # <<<<<<<<<<<<<< + * raise BufferError( + * 'read_null_str: buffer overread') +*/ + __pyx_t_1 = (__pyx_v_self->_current_message_len_unread < 0); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":575 + * self._current_message_len_unread -= nread + * if self._current_message_len_unread < 0: + * raise BufferError( # <<<<<<<<<<<<<< + * 'read_null_str: buffer overread') + * +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 575, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = 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_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_read_null_str_buffer_overread}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 575, __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(2, 575, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":574 + * + * self._current_message_len_unread -= nread + * if self._current_message_len_unread < 0: # <<<<<<<<<<<<<< + * raise BufferError( + * 'read_null_str: buffer overread') +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":578 + * 'read_null_str: buffer overread') + * + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * + * cdef int32_t take_message(self) except -1: +*/ + __pyx_t_4 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 578, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":522 + * return hton.unpack_int16(cpython.PyBytes_AS_STRING(mem)) + * + * cdef inline read_null_str(self): # <<<<<<<<<<<<<< + * if not self._current_message_ready: + * raise BufferError( +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.read_null_str", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":580 + * self._ensure_first_buf() + * + * cdef int32_t take_message(self) except -1: # <<<<<<<<<<<<<< + * cdef: + * const char *cbuf +*/ + +static int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_take_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + char const *__pyx_v_cbuf; + int32_t __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + char const *__pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int32_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("take_message", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":584 + * const char *cbuf + * + * if self._current_message_ready: # <<<<<<<<<<<<<< + * return 1 + * +*/ + if (__pyx_v_self->_current_message_ready) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":585 + * + * if self._current_message_ready: + * return 1 # <<<<<<<<<<<<<< + * + * if self._current_message_type == 0: +*/ + __pyx_r = 1; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":584 + * const char *cbuf + * + * if self._current_message_ready: # <<<<<<<<<<<<<< + * return 1 + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":587 + * return 1 + * + * if self._current_message_type == 0: # <<<<<<<<<<<<<< + * if self._length < 1: + * return 0 +*/ + __pyx_t_1 = (__pyx_v_self->_current_message_type == 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":588 + * + * if self._current_message_type == 0: + * if self._length < 1: # <<<<<<<<<<<<<< + * return 0 + * self._ensure_first_buf() +*/ + __pyx_t_1 = (__pyx_v_self->_length < 1); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":589 + * if self._current_message_type == 0: + * if self._length < 1: + * return 0 # <<<<<<<<<<<<<< + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(1) +*/ + __pyx_r = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":588 + * + * if self._current_message_type == 0: + * if self._length < 1: # <<<<<<<<<<<<<< + * return 0 + * self._ensure_first_buf() +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":590 + * if self._length < 1: + * return 0 + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * cbuf = self._try_read_bytes(1) + * if cbuf == NULL: +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 590, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":591 + * return 0 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(1) # <<<<<<<<<<<<<< + * if cbuf == NULL: + * raise BufferError( +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__try_read_bytes(__pyx_v_self, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 591, __pyx_L1_error) + __pyx_v_cbuf = __pyx_t_3; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":592 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(1) + * if cbuf == NULL: # <<<<<<<<<<<<<< + * raise BufferError( + * 'failed to read one byte on a non-empty buffer') +*/ + __pyx_t_1 = (__pyx_v_cbuf == NULL); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":593 + * cbuf = self._try_read_bytes(1) + * if cbuf == NULL: + * raise BufferError( # <<<<<<<<<<<<<< + * 'failed to read one byte on a non-empty buffer') + * self._current_message_type = cbuf[0] +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 593, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_5))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); + __pyx_t_6 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_failed_to_read_one_byte_on_a_non}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 593, __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(2, 593, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":592 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(1) + * if cbuf == NULL: # <<<<<<<<<<<<<< + * raise BufferError( + * 'failed to read one byte on a non-empty buffer') +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":595 + * raise BufferError( + * 'failed to read one byte on a non-empty buffer') + * self._current_message_type = cbuf[0] # <<<<<<<<<<<<<< + * + * if self._current_message_len == 0: +*/ + __pyx_v_self->_current_message_type = (__pyx_v_cbuf[0]); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":587 + * return 1 + * + * if self._current_message_type == 0: # <<<<<<<<<<<<<< + * if self._length < 1: + * return 0 +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":597 + * self._current_message_type = cbuf[0] + * + * if self._current_message_len == 0: # <<<<<<<<<<<<<< + * if self._length < 4: + * return 0 +*/ + __pyx_t_1 = (__pyx_v_self->_current_message_len == 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":598 + * + * if self._current_message_len == 0: + * if self._length < 4: # <<<<<<<<<<<<<< + * return 0 + * +*/ + __pyx_t_1 = (__pyx_v_self->_length < 4); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":599 + * if self._current_message_len == 0: + * if self._length < 4: + * return 0 # <<<<<<<<<<<<<< + * + * self._ensure_first_buf() +*/ + __pyx_r = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":598 + * + * if self._current_message_len == 0: + * if self._length < 4: # <<<<<<<<<<<<<< + * return 0 + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":601 + * return 0 + * + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * cbuf = self._try_read_bytes(4) + * if cbuf != NULL: +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 601, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":602 + * + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(4) # <<<<<<<<<<<<<< + * if cbuf != NULL: + * self._current_message_len = hton.unpack_int32(cbuf) +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__try_read_bytes(__pyx_v_self, 4); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 602, __pyx_L1_error) + __pyx_v_cbuf = __pyx_t_3; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":603 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(4) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * self._current_message_len = hton.unpack_int32(cbuf) + * else: +*/ + __pyx_t_1 = (__pyx_v_cbuf != NULL); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":604 + * cbuf = self._try_read_bytes(4) + * if cbuf != NULL: + * self._current_message_len = hton.unpack_int32(cbuf) # <<<<<<<<<<<<<< + * else: + * self._current_message_len = self.read_int32() +*/ + __pyx_v_self->_current_message_len = unpack_int32(__pyx_v_cbuf); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":603 + * self._ensure_first_buf() + * cbuf = self._try_read_bytes(4) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * self._current_message_len = hton.unpack_int32(cbuf) + * else: +*/ + goto __pyx_L9; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":606 + * self._current_message_len = hton.unpack_int32(cbuf) + * else: + * self._current_message_len = self.read_int32() # <<<<<<<<<<<<<< + * + * self._current_message_len_unread = self._current_message_len - 4 +*/ + /*else*/ { + __pyx_t_7 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_int32(__pyx_v_self); if (unlikely(__pyx_t_7 == ((int32_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 606, __pyx_L1_error) + __pyx_v_self->_current_message_len = __pyx_t_7; + } + __pyx_L9:; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":608 + * self._current_message_len = self.read_int32() + * + * self._current_message_len_unread = self._current_message_len - 4 # <<<<<<<<<<<<<< + * + * if self._length < self._current_message_len_unread: +*/ + __pyx_v_self->_current_message_len_unread = (__pyx_v_self->_current_message_len - 4); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":597 + * self._current_message_type = cbuf[0] + * + * if self._current_message_len == 0: # <<<<<<<<<<<<<< + * if self._length < 4: + * return 0 +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":610 + * self._current_message_len_unread = self._current_message_len - 4 + * + * if self._length < self._current_message_len_unread: # <<<<<<<<<<<<<< + * return 0 + * +*/ + __pyx_t_1 = (__pyx_v_self->_length < __pyx_v_self->_current_message_len_unread); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":611 + * + * if self._length < self._current_message_len_unread: + * return 0 # <<<<<<<<<<<<<< + * + * self._current_message_ready = 1 +*/ + __pyx_r = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":610 + * self._current_message_len_unread = self._current_message_len - 4 + * + * if self._length < self._current_message_len_unread: # <<<<<<<<<<<<<< + * return 0 + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":613 + * return 0 + * + * self._current_message_ready = 1 # <<<<<<<<<<<<<< + * return 1 + * +*/ + __pyx_v_self->_current_message_ready = 1; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":614 + * + * self._current_message_ready = 1 + * return 1 # <<<<<<<<<<<<<< + * + * cdef inline int32_t take_message_type(self, char mtype) except -1: +*/ + __pyx_r = 1; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":580 + * self._ensure_first_buf() + * + * cdef int32_t take_message(self) except -1: # <<<<<<<<<<<<<< + * cdef: + * const char *cbuf +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.take_message", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":616 + * return 1 + * + * cdef inline int32_t take_message_type(self, char mtype) except -1: # <<<<<<<<<<<<<< + * cdef const char *buf0 + * +*/ + +static CYTHON_INLINE int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_take_message_type(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, char __pyx_v_mtype) { + char const *__pyx_v_buf0; + int32_t __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int32_t __pyx_t_3; + int32_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("take_message_type", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":619 + * cdef const char *buf0 + * + * if self._current_message_ready: # <<<<<<<<<<<<<< + * return self._current_message_type == mtype + * elif self._length >= 1: +*/ + if (__pyx_v_self->_current_message_ready) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":620 + * + * if self._current_message_ready: + * return self._current_message_type == mtype # <<<<<<<<<<<<<< + * elif self._length >= 1: + * self._ensure_first_buf() +*/ + __pyx_r = (__pyx_v_self->_current_message_type == __pyx_v_mtype); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":619 + * cdef const char *buf0 + * + * if self._current_message_ready: # <<<<<<<<<<<<<< + * return self._current_message_type == mtype + * elif self._length >= 1: +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":621 + * if self._current_message_ready: + * return self._current_message_type == mtype + * elif self._length >= 1: # <<<<<<<<<<<<<< + * self._ensure_first_buf() + * buf0 = cpython.PyBytes_AS_STRING(self._buf0) +*/ + __pyx_t_1 = (__pyx_v_self->_length >= 1); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":622 + * return self._current_message_type == mtype + * elif self._length >= 1: + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * buf0 = cpython.PyBytes_AS_STRING(self._buf0) + * +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 622, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":623 + * elif self._length >= 1: + * self._ensure_first_buf() + * buf0 = cpython.PyBytes_AS_STRING(self._buf0) # <<<<<<<<<<<<<< + * + * return buf0[self._pos0] == mtype and self.take_message() +*/ + __pyx_t_2 = __pyx_v_self->_buf0; + __Pyx_INCREF(__pyx_t_2); + __pyx_v_buf0 = PyBytes_AS_STRING(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":625 + * buf0 = cpython.PyBytes_AS_STRING(self._buf0) + * + * return buf0[self._pos0] == mtype and self.take_message() # <<<<<<<<<<<<<< + * else: + * return 0 +*/ + __pyx_t_1 = ((__pyx_v_buf0[__pyx_v_self->_pos0]) == __pyx_v_mtype); + if (__pyx_t_1) { + } else { + __pyx_t_3 = __pyx_t_1; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_take_message(__pyx_v_self); if (unlikely(__pyx_t_4 == ((int32_t)-1))) __PYX_ERR(2, 625, __pyx_L1_error) + __pyx_t_3 = __pyx_t_4; + __pyx_L4_bool_binop_done:; + __pyx_r = __pyx_t_3; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":621 + * if self._current_message_ready: + * return self._current_message_type == mtype + * elif self._length >= 1: # <<<<<<<<<<<<<< + * self._ensure_first_buf() + * buf0 = cpython.PyBytes_AS_STRING(self._buf0) +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":627 + * return buf0[self._pos0] == mtype and self.take_message() + * else: + * return 0 # <<<<<<<<<<<<<< + * + * cdef int32_t put_message(self) except -1: +*/ + /*else*/ { + __pyx_r = 0; + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":616 + * return 1 + * + * cdef inline int32_t take_message_type(self, char mtype) except -1: # <<<<<<<<<<<<<< + * cdef const char *buf0 + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.take_message_type", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":629 + * return 0 + * + * cdef int32_t put_message(self) except -1: # <<<<<<<<<<<<<< + * if not self._current_message_ready: + * raise BufferError( +*/ + +static int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_put_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + int32_t __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("put_message", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":630 + * + * cdef int32_t put_message(self) except -1: + * if not self._current_message_ready: # <<<<<<<<<<<<<< + * raise BufferError( + * 'cannot put message: no message taken') +*/ + __pyx_t_1 = (!__pyx_v_self->_current_message_ready); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":631 + * cdef int32_t put_message(self) except -1: + * if not self._current_message_ready: + * raise BufferError( # <<<<<<<<<<<<<< + * 'cannot put message: no message taken') + * self._current_message_ready = False +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 631, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_cannot_put_message_no_message_ta}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 631, __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(2, 631, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":630 + * + * cdef int32_t put_message(self) except -1: + * if not self._current_message_ready: # <<<<<<<<<<<<<< + * raise BufferError( + * 'cannot put message: no message taken') +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":633 + * raise BufferError( + * 'cannot put message: no message taken') + * self._current_message_ready = False # <<<<<<<<<<<<<< + * return 0 + * +*/ + __pyx_v_self->_current_message_ready = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":634 + * 'cannot put message: no message taken') + * self._current_message_ready = False + * return 0 # <<<<<<<<<<<<<< + * + * cdef inline const char* try_consume_message(self, ssize_t* len): +*/ + __pyx_r = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":629 + * return 0 + * + * cdef int32_t put_message(self) except -1: # <<<<<<<<<<<<<< + * if not self._current_message_ready: + * raise BufferError( +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.put_message", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":636 + * return 0 + * + * cdef inline const char* try_consume_message(self, ssize_t* len): # <<<<<<<<<<<<<< + * cdef: + * ssize_t buf_len +*/ + +static CYTHON_INLINE char const *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_try_consume_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, Py_ssize_t *__pyx_v_len) { + Py_ssize_t __pyx_v_buf_len; + char const *__pyx_v_buf; + char const *__pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + Py_ssize_t __pyx_t_3; + char const *__pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("try_consume_message", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":641 + * const char *buf + * + * if not self._current_message_ready: # <<<<<<<<<<<<<< + * return NULL + * +*/ + __pyx_t_1 = (!__pyx_v_self->_current_message_ready); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":642 + * + * if not self._current_message_ready: + * return NULL # <<<<<<<<<<<<<< + * + * self._ensure_first_buf() +*/ + __pyx_r = NULL; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":641 + * const char *buf + * + * if not self._current_message_ready: # <<<<<<<<<<<<<< + * return NULL + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":644 + * return NULL + * + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * buf_len = self._current_message_len_unread + * buf = self._try_read_bytes(buf_len) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 644, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":645 + * + * self._ensure_first_buf() + * buf_len = self._current_message_len_unread # <<<<<<<<<<<<<< + * buf = self._try_read_bytes(buf_len) + * if buf != NULL: +*/ + __pyx_t_3 = __pyx_v_self->_current_message_len_unread; + __pyx_v_buf_len = __pyx_t_3; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":646 + * self._ensure_first_buf() + * buf_len = self._current_message_len_unread + * buf = self._try_read_bytes(buf_len) # <<<<<<<<<<<<<< + * if buf != NULL: + * len[0] = buf_len +*/ + __pyx_t_4 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__try_read_bytes(__pyx_v_self, __pyx_v_buf_len); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 646, __pyx_L1_error) + __pyx_v_buf = __pyx_t_4; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":647 + * buf_len = self._current_message_len_unread + * buf = self._try_read_bytes(buf_len) + * if buf != NULL: # <<<<<<<<<<<<<< + * len[0] = buf_len + * self._finish_message() +*/ + __pyx_t_1 = (__pyx_v_buf != NULL); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":648 + * buf = self._try_read_bytes(buf_len) + * if buf != NULL: + * len[0] = buf_len # <<<<<<<<<<<<<< + * self._finish_message() + * return buf +*/ + (__pyx_v_len[0]) = __pyx_v_buf_len; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":649 + * if buf != NULL: + * len[0] = buf_len + * self._finish_message() # <<<<<<<<<<<<<< + * return buf + * +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__finish_message(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 649, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":647 + * buf_len = self._current_message_len_unread + * buf = self._try_read_bytes(buf_len) + * if buf != NULL: # <<<<<<<<<<<<<< + * len[0] = buf_len + * self._finish_message() +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":650 + * len[0] = buf_len + * self._finish_message() + * return buf # <<<<<<<<<<<<<< + * + * cdef discard_message(self): +*/ + __pyx_r = __pyx_v_buf; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":636 + * return 0 + * + * cdef inline const char* try_consume_message(self, ssize_t* len): # <<<<<<<<<<<<<< + * cdef: + * ssize_t buf_len +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.try_consume_message", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":652 + * return buf + * + * cdef discard_message(self): # <<<<<<<<<<<<<< + * if not self._current_message_ready: + * raise BufferError('no message to discard') +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_discard_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("discard_message", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":653 + * + * cdef discard_message(self): + * if not self._current_message_ready: # <<<<<<<<<<<<<< + * raise BufferError('no message to discard') + * if self._current_message_len_unread > 0: +*/ + __pyx_t_1 = (!__pyx_v_self->_current_message_ready); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":654 + * cdef discard_message(self): + * if not self._current_message_ready: + * raise BufferError('no message to discard') # <<<<<<<<<<<<<< + * if self._current_message_len_unread > 0: + * self._read_and_discard(self._current_message_len_unread) +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 654, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_no_message_to_discard}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 654, __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(2, 654, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":653 + * + * cdef discard_message(self): + * if not self._current_message_ready: # <<<<<<<<<<<<<< + * raise BufferError('no message to discard') + * if self._current_message_len_unread > 0: +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":655 + * if not self._current_message_ready: + * raise BufferError('no message to discard') + * if self._current_message_len_unread > 0: # <<<<<<<<<<<<<< + * self._read_and_discard(self._current_message_len_unread) + * self._current_message_len_unread = 0 +*/ + __pyx_t_1 = (__pyx_v_self->_current_message_len_unread > 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":656 + * raise BufferError('no message to discard') + * if self._current_message_len_unread > 0: + * self._read_and_discard(self._current_message_len_unread) # <<<<<<<<<<<<<< + * self._current_message_len_unread = 0 + * self._finish_message() +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__read_and_discard(__pyx_v_self, __pyx_v_self->_current_message_len_unread); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 656, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":657 + * if self._current_message_len_unread > 0: + * self._read_and_discard(self._current_message_len_unread) + * self._current_message_len_unread = 0 # <<<<<<<<<<<<<< + * self._finish_message() + * +*/ + __pyx_v_self->_current_message_len_unread = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":655 + * if not self._current_message_ready: + * raise BufferError('no message to discard') + * if self._current_message_len_unread > 0: # <<<<<<<<<<<<<< + * self._read_and_discard(self._current_message_len_unread) + * self._current_message_len_unread = 0 +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":658 + * self._read_and_discard(self._current_message_len_unread) + * self._current_message_len_unread = 0 + * self._finish_message() # <<<<<<<<<<<<<< + * + * cdef bytes consume_message(self): +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__finish_message(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 658, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":652 + * return buf + * + * cdef discard_message(self): # <<<<<<<<<<<<<< + * if not self._current_message_ready: + * raise BufferError('no message to discard') +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.discard_message", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":660 + * self._finish_message() + * + * cdef bytes consume_message(self): # <<<<<<<<<<<<<< + * if not self._current_message_ready: + * raise BufferError('no message to consume') +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_consume_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + PyObject *__pyx_v_mem = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("consume_message", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":661 + * + * cdef bytes consume_message(self): + * if not self._current_message_ready: # <<<<<<<<<<<<<< + * raise BufferError('no message to consume') + * if self._current_message_len_unread > 0: +*/ + __pyx_t_1 = (!__pyx_v_self->_current_message_ready); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":662 + * cdef bytes consume_message(self): + * if not self._current_message_ready: + * raise BufferError('no message to consume') # <<<<<<<<<<<<<< + * if self._current_message_len_unread > 0: + * mem = self.read_bytes(self._current_message_len_unread) +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 662, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_no_message_to_consume}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 662, __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(2, 662, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":661 + * + * cdef bytes consume_message(self): + * if not self._current_message_ready: # <<<<<<<<<<<<<< + * raise BufferError('no message to consume') + * if self._current_message_len_unread > 0: +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":663 + * if not self._current_message_ready: + * raise BufferError('no message to consume') + * if self._current_message_len_unread > 0: # <<<<<<<<<<<<<< + * mem = self.read_bytes(self._current_message_len_unread) + * else: +*/ + __pyx_t_1 = (__pyx_v_self->_current_message_len_unread > 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":664 + * raise BufferError('no message to consume') + * if self._current_message_len_unread > 0: + * mem = self.read_bytes(self._current_message_len_unread) # <<<<<<<<<<<<<< + * else: + * mem = b'' +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_bytes(__pyx_v_self, __pyx_v_self->_current_message_len_unread); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 664, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v_mem = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":663 + * if not self._current_message_ready: + * raise BufferError('no message to consume') + * if self._current_message_len_unread > 0: # <<<<<<<<<<<<<< + * mem = self.read_bytes(self._current_message_len_unread) + * else: +*/ + goto __pyx_L4; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":666 + * mem = self.read_bytes(self._current_message_len_unread) + * else: + * mem = b'' # <<<<<<<<<<<<<< + * self._finish_message() + * return mem +*/ + /*else*/ { + __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_b_); + __pyx_v_mem = __pyx_mstate_global->__pyx_kp_b_; + } + __pyx_L4:; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":667 + * else: + * mem = b'' + * self._finish_message() # <<<<<<<<<<<<<< + * return mem + * +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__finish_message(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 667, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":668 + * mem = b'' + * self._finish_message() + * return mem # <<<<<<<<<<<<<< + * + * cdef redirect_messages(self, WriteBuffer buf, char mtype, +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_mem); + __pyx_r = __pyx_v_mem; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":660 + * self._finish_message() + * + * cdef bytes consume_message(self): # <<<<<<<<<<<<<< + * if not self._current_message_ready: + * raise BufferError('no message to consume') +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.consume_message", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_mem); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":670 + * return mem + * + * cdef redirect_messages(self, WriteBuffer buf, char mtype, # <<<<<<<<<<<<<< + * int stop_at=0): + * if not self._current_message_ready: +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_redirect_messages(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, char __pyx_v_mtype, struct __pyx_opt_args_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_redirect_messages *__pyx_optional_args) { + int __pyx_v_stop_at = ((int)0); + char const *__pyx_v_cbuf; + Py_ssize_t __pyx_v_cbuf_len; + int32_t __pyx_v_msg_len; + Py_ssize_t __pyx_v_new_pos0; + Py_ssize_t __pyx_v_pos_delta; + int32_t __pyx_v_done; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + char const *__pyx_t_6; + int __pyx_t_7; + Py_ssize_t __pyx_t_8; + int32_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("redirect_messages", 0); + if (__pyx_optional_args) { + if (__pyx_optional_args->__pyx_n > 0) { + __pyx_v_stop_at = __pyx_optional_args->stop_at; + } + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":672 + * cdef redirect_messages(self, WriteBuffer buf, char mtype, + * int stop_at=0): + * if not self._current_message_ready: # <<<<<<<<<<<<<< + * raise BufferError( + * 'consume_full_messages called on a buffer without a ' +*/ + __pyx_t_1 = (!__pyx_v_self->_current_message_ready); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":673 + * int stop_at=0): + * if not self._current_message_ready: + * raise BufferError( # <<<<<<<<<<<<<< + * 'consume_full_messages called on a buffer without a ' + * 'complete first message') +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 673, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_consume_full_messages_called_on}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 673, __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(2, 673, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":672 + * cdef redirect_messages(self, WriteBuffer buf, char mtype, + * int stop_at=0): + * if not self._current_message_ready: # <<<<<<<<<<<<<< + * raise BufferError( + * 'consume_full_messages called on a buffer without a ' +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":676 + * 'consume_full_messages called on a buffer without a ' + * 'complete first message') + * if mtype != self._current_message_type: # <<<<<<<<<<<<<< + * raise BufferError( + * 'consume_full_messages called with a wrong mtype') +*/ + __pyx_t_1 = (__pyx_v_mtype != __pyx_v_self->_current_message_type); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":677 + * 'complete first message') + * if mtype != self._current_message_type: + * raise BufferError( # <<<<<<<<<<<<<< + * 'consume_full_messages called with a wrong mtype') + * if self._current_message_len_unread != self._current_message_len - 4: +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 677, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_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_mstate_global->__pyx_kp_u_consume_full_messages_called_wit}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__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_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 677, __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(2, 677, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":676 + * 'consume_full_messages called on a buffer without a ' + * 'complete first message') + * if mtype != self._current_message_type: # <<<<<<<<<<<<<< + * raise BufferError( + * 'consume_full_messages called with a wrong mtype') +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":679 + * raise BufferError( + * 'consume_full_messages called with a wrong mtype') + * if self._current_message_len_unread != self._current_message_len - 4: # <<<<<<<<<<<<<< + * raise BufferError( + * 'consume_full_messages called on a partially read message') +*/ + __pyx_t_1 = (__pyx_v_self->_current_message_len_unread != (__pyx_v_self->_current_message_len - 4)); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":680 + * 'consume_full_messages called with a wrong mtype') + * if self._current_message_len_unread != self._current_message_len - 4: + * raise BufferError( # <<<<<<<<<<<<<< + * 'consume_full_messages called on a partially read message') + * +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BufferError); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 680, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_consume_full_messages_called_on_2}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 680, __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(2, 680, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":679 + * raise BufferError( + * 'consume_full_messages called with a wrong mtype') + * if self._current_message_len_unread != self._current_message_len - 4: # <<<<<<<<<<<<<< + * raise BufferError( + * 'consume_full_messages called on a partially read message') +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":691 + * int32_t done + * + * while True: # <<<<<<<<<<<<<< + * buf.write_byte(mtype) + * buf.write_int32(self._current_message_len) +*/ + while (1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":692 + * + * while True: + * buf.write_byte(mtype) # <<<<<<<<<<<<<< + * buf.write_int32(self._current_message_len) + * +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_byte(__pyx_v_buf, __pyx_v_mtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 692, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":693 + * while True: + * buf.write_byte(mtype) + * buf.write_int32(self._current_message_len) # <<<<<<<<<<<<<< + * + * cbuf = self.try_consume_message(&cbuf_len) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, __pyx_v_self->_current_message_len); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 693, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":695 + * buf.write_int32(self._current_message_len) + * + * cbuf = self.try_consume_message(&cbuf_len) # <<<<<<<<<<<<<< + * if cbuf != NULL: + * buf.write_cstr(cbuf, cbuf_len) +*/ + __pyx_t_6 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_try_consume_message(__pyx_v_self, (&__pyx_v_cbuf_len)); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 695, __pyx_L1_error) + __pyx_v_cbuf = __pyx_t_6; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":696 + * + * cbuf = self.try_consume_message(&cbuf_len) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * buf.write_cstr(cbuf, cbuf_len) + * else: +*/ + __pyx_t_1 = (__pyx_v_cbuf != NULL); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":697 + * cbuf = self.try_consume_message(&cbuf_len) + * if cbuf != NULL: + * buf.write_cstr(cbuf, cbuf_len) # <<<<<<<<<<<<<< + * else: + * buf.write_bytes(self.consume_message()) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_buf, __pyx_v_cbuf, __pyx_v_cbuf_len); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 697, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":696 + * + * cbuf = self.try_consume_message(&cbuf_len) + * if cbuf != NULL: # <<<<<<<<<<<<<< + * buf.write_cstr(cbuf, cbuf_len) + * else: +*/ + goto __pyx_L8; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":699 + * buf.write_cstr(cbuf, cbuf_len) + * else: + * buf.write_bytes(self.consume_message()) # <<<<<<<<<<<<<< + * + * if self._length > 0: +*/ + /*else*/ { + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_consume_message(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 699, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_bytes(__pyx_v_buf, ((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 699, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + __pyx_L8:; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":701 + * buf.write_bytes(self.consume_message()) + * + * if self._length > 0: # <<<<<<<<<<<<<< + * self._ensure_first_buf() + * else: +*/ + __pyx_t_1 = (__pyx_v_self->_length > 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":702 + * + * if self._length > 0: + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * else: + * return +*/ + __pyx_t_4 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 702, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":701 + * buf.write_bytes(self.consume_message()) + * + * if self._length > 0: # <<<<<<<<<<<<<< + * self._ensure_first_buf() + * else: +*/ + goto __pyx_L9; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":704 + * self._ensure_first_buf() + * else: + * return # <<<<<<<<<<<<<< + * + * if stop_at and buf._length >= stop_at: +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + } + __pyx_L9:; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":706 + * return + * + * if stop_at and buf._length >= stop_at: # <<<<<<<<<<<<<< + * return + * +*/ + __pyx_t_7 = (__pyx_v_stop_at != 0); + if (__pyx_t_7) { + } else { + __pyx_t_1 = __pyx_t_7; + goto __pyx_L11_bool_binop_done; + } + __pyx_t_7 = (__pyx_v_buf->_length >= __pyx_v_stop_at); + __pyx_t_1 = __pyx_t_7; + __pyx_L11_bool_binop_done:; + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":707 + * + * if stop_at and buf._length >= stop_at: + * return # <<<<<<<<<<<<<< + * + * # Fast path: exhaust buf0 as efficiently as possible. +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":706 + * return + * + * if stop_at and buf._length >= stop_at: # <<<<<<<<<<<<<< + * return + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":710 + * + * # Fast path: exhaust buf0 as efficiently as possible. + * if self._pos0 + 5 <= self._len0: # <<<<<<<<<<<<<< + * cbuf = cpython.PyBytes_AS_STRING(self._buf0) + * new_pos0 = self._pos0 +*/ + __pyx_t_1 = ((__pyx_v_self->_pos0 + 5) <= __pyx_v_self->_len0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":711 + * # Fast path: exhaust buf0 as efficiently as possible. + * if self._pos0 + 5 <= self._len0: + * cbuf = cpython.PyBytes_AS_STRING(self._buf0) # <<<<<<<<<<<<<< + * new_pos0 = self._pos0 + * cbuf_len = self._len0 +*/ + __pyx_t_4 = __pyx_v_self->_buf0; + __Pyx_INCREF(__pyx_t_4); + __pyx_v_cbuf = PyBytes_AS_STRING(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":712 + * if self._pos0 + 5 <= self._len0: + * cbuf = cpython.PyBytes_AS_STRING(self._buf0) + * new_pos0 = self._pos0 # <<<<<<<<<<<<<< + * cbuf_len = self._len0 + * +*/ + __pyx_t_8 = __pyx_v_self->_pos0; + __pyx_v_new_pos0 = __pyx_t_8; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":713 + * cbuf = cpython.PyBytes_AS_STRING(self._buf0) + * new_pos0 = self._pos0 + * cbuf_len = self._len0 # <<<<<<<<<<<<<< + * + * done = 0 +*/ + __pyx_t_8 = __pyx_v_self->_len0; + __pyx_v_cbuf_len = __pyx_t_8; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":715 + * cbuf_len = self._len0 + * + * done = 0 # <<<<<<<<<<<<<< + * # Scan the first buffer and find the position of the + * # end of the last "mtype" message. +*/ + __pyx_v_done = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":718 + * # Scan the first buffer and find the position of the + * # end of the last "mtype" message. + * while new_pos0 + 5 <= cbuf_len: # <<<<<<<<<<<<<< + * if (cbuf + new_pos0)[0] != mtype: + * done = 1 +*/ + while (1) { + __pyx_t_1 = ((__pyx_v_new_pos0 + 5) <= __pyx_v_cbuf_len); + if (!__pyx_t_1) break; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":719 + * # end of the last "mtype" message. + * while new_pos0 + 5 <= cbuf_len: + * if (cbuf + new_pos0)[0] != mtype: # <<<<<<<<<<<<<< + * done = 1 + * break +*/ + __pyx_t_1 = (((__pyx_v_cbuf + __pyx_v_new_pos0)[0]) != __pyx_v_mtype); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":720 + * while new_pos0 + 5 <= cbuf_len: + * if (cbuf + new_pos0)[0] != mtype: + * done = 1 # <<<<<<<<<<<<<< + * break + * if (stop_at and +*/ + __pyx_v_done = 1; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":721 + * if (cbuf + new_pos0)[0] != mtype: + * done = 1 + * break # <<<<<<<<<<<<<< + * if (stop_at and + * (buf._length + new_pos0 - self._pos0) > stop_at): +*/ + goto __pyx_L15_break; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":719 + * # end of the last "mtype" message. + * while new_pos0 + 5 <= cbuf_len: + * if (cbuf + new_pos0)[0] != mtype: # <<<<<<<<<<<<<< + * done = 1 + * break +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":722 + * done = 1 + * break + * if (stop_at and # <<<<<<<<<<<<<< + * (buf._length + new_pos0 - self._pos0) > stop_at): + * done = 1 +*/ + __pyx_t_7 = (__pyx_v_stop_at != 0); + if (__pyx_t_7) { + } else { + __pyx_t_1 = __pyx_t_7; + goto __pyx_L18_bool_binop_done; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":723 + * break + * if (stop_at and + * (buf._length + new_pos0 - self._pos0) > stop_at): # <<<<<<<<<<<<<< + * done = 1 + * break +*/ + __pyx_t_7 = (((__pyx_v_buf->_length + __pyx_v_new_pos0) - __pyx_v_self->_pos0) > __pyx_v_stop_at); + __pyx_t_1 = __pyx_t_7; + __pyx_L18_bool_binop_done:; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":722 + * done = 1 + * break + * if (stop_at and # <<<<<<<<<<<<<< + * (buf._length + new_pos0 - self._pos0) > stop_at): + * done = 1 +*/ + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":724 + * if (stop_at and + * (buf._length + new_pos0 - self._pos0) > stop_at): + * done = 1 # <<<<<<<<<<<<<< + * break + * msg_len = hton.unpack_int32(cbuf + new_pos0 + 1) + 1 +*/ + __pyx_v_done = 1; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":725 + * (buf._length + new_pos0 - self._pos0) > stop_at): + * done = 1 + * break # <<<<<<<<<<<<<< + * msg_len = hton.unpack_int32(cbuf + new_pos0 + 1) + 1 + * if new_pos0 + msg_len > cbuf_len: +*/ + goto __pyx_L15_break; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":722 + * done = 1 + * break + * if (stop_at and # <<<<<<<<<<<<<< + * (buf._length + new_pos0 - self._pos0) > stop_at): + * done = 1 +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":726 + * done = 1 + * break + * msg_len = hton.unpack_int32(cbuf + new_pos0 + 1) + 1 # <<<<<<<<<<<<<< + * if new_pos0 + msg_len > cbuf_len: + * break +*/ + __pyx_v_msg_len = (unpack_int32(((__pyx_v_cbuf + __pyx_v_new_pos0) + 1)) + 1); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":727 + * break + * msg_len = hton.unpack_int32(cbuf + new_pos0 + 1) + 1 + * if new_pos0 + msg_len > cbuf_len: # <<<<<<<<<<<<<< + * break + * new_pos0 += msg_len +*/ + __pyx_t_1 = ((__pyx_v_new_pos0 + __pyx_v_msg_len) > __pyx_v_cbuf_len); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":728 + * msg_len = hton.unpack_int32(cbuf + new_pos0 + 1) + 1 + * if new_pos0 + msg_len > cbuf_len: + * break # <<<<<<<<<<<<<< + * new_pos0 += msg_len + * +*/ + goto __pyx_L15_break; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":727 + * break + * msg_len = hton.unpack_int32(cbuf + new_pos0 + 1) + 1 + * if new_pos0 + msg_len > cbuf_len: # <<<<<<<<<<<<<< + * break + * new_pos0 += msg_len +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":729 + * if new_pos0 + msg_len > cbuf_len: + * break + * new_pos0 += msg_len # <<<<<<<<<<<<<< + * + * if new_pos0 != self._pos0: +*/ + __pyx_v_new_pos0 = (__pyx_v_new_pos0 + __pyx_v_msg_len); + } + __pyx_L15_break:; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":731 + * new_pos0 += msg_len + * + * if new_pos0 != self._pos0: # <<<<<<<<<<<<<< + * assert self._pos0 < new_pos0 <= self._len0 + * +*/ + __pyx_t_1 = (__pyx_v_new_pos0 != __pyx_v_self->_pos0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":732 + * + * if new_pos0 != self._pos0: + * assert self._pos0 < new_pos0 <= self._len0 # <<<<<<<<<<<<<< + * + * pos_delta = new_pos0 - self._pos0 +*/ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(__pyx_assertions_enabled())) { + __pyx_t_1 = (__pyx_v_self->_pos0 < __pyx_v_new_pos0); + if (__pyx_t_1) { + __pyx_t_1 = (__pyx_v_new_pos0 <= __pyx_v_self->_len0); + } + if (unlikely(!__pyx_t_1)) { + __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); + __PYX_ERR(2, 732, __pyx_L1_error) + } + } + #else + if ((1)); else __PYX_ERR(2, 732, __pyx_L1_error) + #endif + + /* "async_gaussdb/gaussdbproto/buffer.pyx":734 + * assert self._pos0 < new_pos0 <= self._len0 + * + * pos_delta = new_pos0 - self._pos0 # <<<<<<<<<<<<<< + * buf.write_cstr( + * cbuf + self._pos0, +*/ + __pyx_v_pos_delta = (__pyx_v_new_pos0 - __pyx_v_self->_pos0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":735 + * + * pos_delta = new_pos0 - self._pos0 + * buf.write_cstr( # <<<<<<<<<<<<<< + * cbuf + self._pos0, + * pos_delta) +*/ + __pyx_t_4 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_buf, (__pyx_v_cbuf + __pyx_v_self->_pos0), __pyx_v_pos_delta); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 735, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":739 + * pos_delta) + * + * self._pos0 = new_pos0 # <<<<<<<<<<<<<< + * self._length -= pos_delta + * +*/ + __pyx_v_self->_pos0 = __pyx_v_new_pos0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":740 + * + * self._pos0 = new_pos0 + * self._length -= pos_delta # <<<<<<<<<<<<<< + * + * assert self._length >= 0 +*/ + __pyx_v_self->_length = (__pyx_v_self->_length - __pyx_v_pos_delta); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":742 + * self._length -= pos_delta + * + * assert self._length >= 0 # <<<<<<<<<<<<<< + * + * if done: +*/ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(__pyx_assertions_enabled())) { + __pyx_t_1 = (__pyx_v_self->_length >= 0); + if (unlikely(!__pyx_t_1)) { + __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); + __PYX_ERR(2, 742, __pyx_L1_error) + } + } + #else + if ((1)); else __PYX_ERR(2, 742, __pyx_L1_error) + #endif + + /* "async_gaussdb/gaussdbproto/buffer.pyx":731 + * new_pos0 += msg_len + * + * if new_pos0 != self._pos0: # <<<<<<<<<<<<<< + * assert self._pos0 < new_pos0 <= self._len0 + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":744 + * assert self._length >= 0 + * + * if done: # <<<<<<<<<<<<<< + * # The next message is of a different type. + * return +*/ + __pyx_t_1 = (__pyx_v_done != 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":746 + * if done: + * # The next message is of a different type. + * return # <<<<<<<<<<<<<< + * + * # Back to slow path. +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":744 + * assert self._length >= 0 + * + * if done: # <<<<<<<<<<<<<< + * # The next message is of a different type. + * return +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":710 + * + * # Fast path: exhaust buf0 as efficiently as possible. + * if self._pos0 + 5 <= self._len0: # <<<<<<<<<<<<<< + * cbuf = cpython.PyBytes_AS_STRING(self._buf0) + * new_pos0 = self._pos0 +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":749 + * + * # Back to slow path. + * if not self.take_message_type(mtype): # <<<<<<<<<<<<<< + * return + * +*/ + __pyx_t_9 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_take_message_type(__pyx_v_self, __pyx_v_mtype); if (unlikely(__pyx_t_9 == ((int32_t)-1))) __PYX_ERR(2, 749, __pyx_L1_error) + __pyx_t_1 = (!(__pyx_t_9 != 0)); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":750 + * # Back to slow path. + * if not self.take_message_type(mtype): + * return # <<<<<<<<<<<<<< + * + * cdef bytearray consume_messages(self, char mtype): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":749 + * + * # Back to slow path. + * if not self.take_message_type(mtype): # <<<<<<<<<<<<<< + * return + * +*/ + } + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":670 + * return mem + * + * cdef redirect_messages(self, WriteBuffer buf, char mtype, # <<<<<<<<<<<<<< + * int stop_at=0): + * if not self._current_message_ready: +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.redirect_messages", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":752 + * return + * + * cdef bytearray consume_messages(self, char mtype): # <<<<<<<<<<<<<< + * """Consume consecutive messages of the same type.""" + * cdef: +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_consume_messages(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, char __pyx_v_mtype) { + char *__pyx_v_buf; + Py_ssize_t __pyx_v_nbytes; + Py_ssize_t __pyx_v_total_bytes; + PyObject *__pyx_v_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int32_t __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + Py_ssize_t __pyx_t_4; + int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("consume_messages", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":757 + * char *buf + * ssize_t nbytes + * ssize_t total_bytes = 0 # <<<<<<<<<<<<<< + * bytearray result + * +*/ + __pyx_v_total_bytes = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":760 + * bytearray result + * + * if not self.take_message_type(mtype): # <<<<<<<<<<<<<< + * return None + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_take_message_type(__pyx_v_self, __pyx_v_mtype); if (unlikely(__pyx_t_1 == ((int32_t)-1))) __PYX_ERR(2, 760, __pyx_L1_error) + __pyx_t_2 = (!(__pyx_t_1 != 0)); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":761 + * + * if not self.take_message_type(mtype): + * return None # <<<<<<<<<<<<<< + * + * # consume_messages is a volume-oriented method, so +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":760 + * bytearray result + * + * if not self.take_message_type(mtype): # <<<<<<<<<<<<<< + * return None + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":766 + * # we assume that the remainder of the buffer will contain + * # messages of the requested type. + * result = cpythonx.PyByteArray_FromStringAndSize(NULL, self._length) # <<<<<<<<<<<<<< + * buf = cpythonx.PyByteArray_AsString(result) + * +*/ + __pyx_t_3 = PyByteArray_FromStringAndSize(NULL, __pyx_v_self->_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 766, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (!(likely(PyByteArray_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytearray", __pyx_t_3))) __PYX_ERR(2, 766, __pyx_L1_error) + __pyx_v_result = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":767 + * # messages of the requested type. + * result = cpythonx.PyByteArray_FromStringAndSize(NULL, self._length) + * buf = cpythonx.PyByteArray_AsString(result) # <<<<<<<<<<<<<< + * + * while self.take_message_type(mtype): +*/ + __pyx_v_buf = PyByteArray_AsString(__pyx_v_result); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":769 + * buf = cpythonx.PyByteArray_AsString(result) + * + * while self.take_message_type(mtype): # <<<<<<<<<<<<<< + * self._ensure_first_buf() + * nbytes = self._current_message_len_unread +*/ + while (1) { + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_take_message_type(__pyx_v_self, __pyx_v_mtype); if (unlikely(__pyx_t_1 == ((int32_t)-1))) __PYX_ERR(2, 769, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 0); + if (!__pyx_t_2) break; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":770 + * + * while self.take_message_type(mtype): + * self._ensure_first_buf() # <<<<<<<<<<<<<< + * nbytes = self._current_message_len_unread + * self._read_into(buf, nbytes) +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 770, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":771 + * while self.take_message_type(mtype): + * self._ensure_first_buf() + * nbytes = self._current_message_len_unread # <<<<<<<<<<<<<< + * self._read_into(buf, nbytes) + * buf += nbytes +*/ + __pyx_t_4 = __pyx_v_self->_current_message_len_unread; + __pyx_v_nbytes = __pyx_t_4; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":772 + * self._ensure_first_buf() + * nbytes = self._current_message_len_unread + * self._read_into(buf, nbytes) # <<<<<<<<<<<<<< + * buf += nbytes + * total_bytes += nbytes +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__read_into(__pyx_v_self, __pyx_v_buf, __pyx_v_nbytes); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 772, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":773 + * nbytes = self._current_message_len_unread + * self._read_into(buf, nbytes) + * buf += nbytes # <<<<<<<<<<<<<< + * total_bytes += nbytes + * self._finish_message() +*/ + __pyx_v_buf = (__pyx_v_buf + __pyx_v_nbytes); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":774 + * self._read_into(buf, nbytes) + * buf += nbytes + * total_bytes += nbytes # <<<<<<<<<<<<<< + * self._finish_message() + * +*/ + __pyx_v_total_bytes = (__pyx_v_total_bytes + __pyx_v_nbytes); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":775 + * buf += nbytes + * total_bytes += nbytes + * self._finish_message() # <<<<<<<<<<<<<< + * + * # Clamp the result to an actual size read. +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__finish_message(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 775, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":778 + * + * # Clamp the result to an actual size read. + * cpythonx.PyByteArray_Resize(result, total_bytes) # <<<<<<<<<<<<<< + * + * return result +*/ + __pyx_t_5 = PyByteArray_Resize(__pyx_v_result, __pyx_v_total_bytes); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(2, 778, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/buffer.pyx":780 + * cpythonx.PyByteArray_Resize(result, total_bytes) + * + * return result # <<<<<<<<<<<<<< + * + * cdef finish_message(self): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_result); + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":752 + * return + * + * cdef bytearray consume_messages(self, char mtype): # <<<<<<<<<<<<<< + * """Consume consecutive messages of the same type.""" + * cdef: +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.consume_messages", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":782 + * return result + * + * cdef finish_message(self): # <<<<<<<<<<<<<< + * if self._current_message_type == 0 or not self._current_message_ready: + * # The message has already been finished (e.g by consume_message()), +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_finish_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + PyObject *__pyx_v_mtype = NULL; + PyObject *__pyx_v_discarded = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("finish_message", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":783 + * + * cdef finish_message(self): + * if self._current_message_type == 0 or not self._current_message_ready: # <<<<<<<<<<<<<< + * # The message has already been finished (e.g by consume_message()), + * # or has been put back by put_message(). +*/ + __pyx_t_2 = (__pyx_v_self->_current_message_type == 0); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = (!__pyx_v_self->_current_message_ready); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":786 + * # The message has already been finished (e.g by consume_message()), + * # or has been put back by put_message(). + * return # <<<<<<<<<<<<<< + * + * if self._current_message_len_unread: +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":783 + * + * cdef finish_message(self): + * if self._current_message_type == 0 or not self._current_message_ready: # <<<<<<<<<<<<<< + * # The message has already been finished (e.g by consume_message()), + * # or has been put back by put_message(). +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":788 + * return + * + * if self._current_message_len_unread: # <<<<<<<<<<<<<< + * if GAUSSDB_DEBUG: + * mtype = chr(self._current_message_type) +*/ + __pyx_t_1 = (__pyx_v_self->_current_message_len_unread != 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":789 + * + * if self._current_message_len_unread: + * if GAUSSDB_DEBUG: # <<<<<<<<<<<<<< + * mtype = chr(self._current_message_type) + * +*/ + __pyx_t_1 = (GAUSSDB_DEBUG != 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":790 + * if self._current_message_len_unread: + * if GAUSSDB_DEBUG: + * mtype = chr(self._current_message_type) # <<<<<<<<<<<<<< + * + * discarded = self.consume_message() +*/ + __pyx_t_3 = PyUnicode_FromOrdinal(__pyx_v_self->_current_message_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 790, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_mtype = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":789 + * + * if self._current_message_len_unread: + * if GAUSSDB_DEBUG: # <<<<<<<<<<<<<< + * mtype = chr(self._current_message_type) + * +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":792 + * mtype = chr(self._current_message_type) + * + * discarded = self.consume_message() # <<<<<<<<<<<<<< + * + * if GAUSSDB_DEBUG: +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_consume_message(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 792, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_discarded = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":794 + * discarded = self.consume_message() + * + * if GAUSSDB_DEBUG: # <<<<<<<<<<<<<< + * print('!!! discarding message {!r} unread data: {!r}'.format( + * mtype, +*/ + __pyx_t_1 = (GAUSSDB_DEBUG != 0); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/buffer.pyx":795 + * + * if GAUSSDB_DEBUG: + * print('!!! discarding message {!r} unread data: {!r}'.format( # <<<<<<<<<<<<<< + * mtype, + * discarded)) +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_print); + __pyx_t_5 = __pyx_builtin_print; + __pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_discarding_message_r_unread_dat; + __Pyx_INCREF(__pyx_t_7); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":796 + * if GAUSSDB_DEBUG: + * print('!!! discarding message {!r} unread data: {!r}'.format( + * mtype, # <<<<<<<<<<<<<< + * discarded)) + * +*/ + if (unlikely(!__pyx_v_mtype)) { __Pyx_RaiseUnboundLocalError("mtype"); __PYX_ERR(2, 796, __pyx_L1_error) } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":797 + * print('!!! discarding message {!r} unread data: {!r}'.format( + * mtype, + * discarded)) # <<<<<<<<<<<<<< + * + * self._finish_message() +*/ + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_mtype, __pyx_v_discarded}; + __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_8, (3-__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(2, 795, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 795, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":794 + * discarded = self.consume_message() + * + * if GAUSSDB_DEBUG: # <<<<<<<<<<<<<< + * print('!!! discarding message {!r} unread data: {!r}'.format( + * mtype, +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":788 + * return + * + * if self._current_message_len_unread: # <<<<<<<<<<<<<< + * if GAUSSDB_DEBUG: + * mtype = chr(self._current_message_type) +*/ + } + + /* "async_gaussdb/gaussdbproto/buffer.pyx":799 + * discarded)) + * + * self._finish_message() # <<<<<<<<<<<<<< + * + * cdef inline _finish_message(self): +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__finish_message(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 799, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":782 + * return result + * + * cdef finish_message(self): # <<<<<<<<<<<<<< + * if self._current_message_type == 0 or not self._current_message_ready: + * # The message has already been finished (e.g by consume_message()), +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.finish_message", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_mtype); + __Pyx_XDECREF(__pyx_v_discarded); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":801 + * self._finish_message() + * + * cdef inline _finish_message(self): # <<<<<<<<<<<<<< + * self._current_message_type = 0 + * self._current_message_len = 0 +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__finish_message(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("_finish_message", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":802 + * + * cdef inline _finish_message(self): + * self._current_message_type = 0 # <<<<<<<<<<<<<< + * self._current_message_len = 0 + * self._current_message_ready = 0 +*/ + __pyx_v_self->_current_message_type = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":803 + * cdef inline _finish_message(self): + * self._current_message_type = 0 + * self._current_message_len = 0 # <<<<<<<<<<<<<< + * self._current_message_ready = 0 + * self._current_message_len_unread = 0 +*/ + __pyx_v_self->_current_message_len = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":804 + * self._current_message_type = 0 + * self._current_message_len = 0 + * self._current_message_ready = 0 # <<<<<<<<<<<<<< + * self._current_message_len_unread = 0 + * +*/ + __pyx_v_self->_current_message_ready = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":805 + * self._current_message_len = 0 + * self._current_message_ready = 0 + * self._current_message_len_unread = 0 # <<<<<<<<<<<<<< + * + * @staticmethod +*/ + __pyx_v_self->_current_message_len_unread = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":801 + * self._finish_message() + * + * cdef inline _finish_message(self): # <<<<<<<<<<<<<< + * self._current_message_type = 0 + * self._current_message_len = 0 +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/buffer.pyx":807 + * self._current_message_len_unread = 0 + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef ReadBuffer new_message_parser(object data): + * cdef ReadBuffer buf +*/ + +static struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_new_message_parser(PyObject *__pyx_v_data) { + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_buf = 0; + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("new_message_parser", 0); + + /* "async_gaussdb/gaussdbproto/buffer.pyx":811 + * cdef ReadBuffer buf + * + * buf = ReadBuffer.__new__(ReadBuffer) # <<<<<<<<<<<<<< + * buf.feed_data(data) + * +*/ + __pyx_t_1 = ((PyObject *)__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 811, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + __pyx_v_buf = ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":812 + * + * buf = ReadBuffer.__new__(ReadBuffer) + * buf.feed_data(data) # <<<<<<<<<<<<<< + * + * buf._current_message_ready = 1 +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_feed_data(__pyx_v_buf, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 812, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":814 + * buf.feed_data(data) + * + * buf._current_message_ready = 1 # <<<<<<<<<<<<<< + * buf._current_message_len_unread = buf._len0 + * +*/ + __pyx_v_buf->_current_message_ready = 1; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":815 + * + * buf._current_message_ready = 1 + * buf._current_message_len_unread = buf._len0 # <<<<<<<<<<<<<< + * + * return buf +*/ + __pyx_t_2 = __pyx_v_buf->_len0; + __pyx_v_buf->_current_message_len_unread = __pyx_t_2; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":817 + * buf._current_message_len_unread = buf._len0 + * + * return buf # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF((PyObject *)__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_buf); + __pyx_r = __pyx_v_buf; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":807 + * self._current_message_len_unread = 0 + * + * @staticmethod # <<<<<<<<<<<<<< + * cdef ReadBuffer new_message_parser(object data): + * cdef ReadBuffer buf +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.new_message_parser", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_buf); + __Pyx_XGIVEREF((PyObject *)__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_3__reduce_cython__(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_3__reduce_cython__(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("__reduce_cython__ (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("__reduce_cython__", 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("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_2__reduce_cython__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":2 + * def __reduce_cython__(self): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" +*/ + __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __PYX_ERR(3, 2, __pyx_L1_error) + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_5__setstate_cython__(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_5__setstate_cython__(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___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (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_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 3, __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(3, 3, __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, "__setstate_cython__", 0) < 0) __PYX_ERR(3, 3, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(3, 3, __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(3, 3, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 3, __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("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_4__setstate_cython__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *)__pyx_v_self), __pyx_v___pyx_state); + + /* 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_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":4 + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< +*/ + __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __PYX_ERR(3, 4, __pyx_L1_error) + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":78 + * + * + * cdef gaussdb_uuid_bytes_from_str(str u, char *out): # <<<<<<<<<<<<<< + * cdef: + * const char *orig_buf +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_uuid_bytes_from_str(PyObject *__pyx_v_u, char *__pyx_v_out) { + char const *__pyx_v_orig_buf; + Py_ssize_t __pyx_v_size; + unsigned char __pyx_v_ch; + uint8_t __pyx_v_acc; + uint8_t __pyx_v_part; + uint8_t __pyx_v_acc_set; + int __pyx_v_i; + int __pyx_v_j; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9[4]; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + Py_ssize_t __pyx_t_12; + Py_ssize_t __pyx_t_13; + int __pyx_t_14; + PyObject *__pyx_t_15[3]; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("gaussdb_uuid_bytes_from_str", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":86 + * int i, j + * + * orig_buf = PyUnicode_AsUTF8AndSize(u, &size) # <<<<<<<<<<<<<< + * if size > 36 or size < 32: + * raise ValueError( +*/ + __pyx_t_1 = PyUnicode_AsUTF8AndSize(__pyx_v_u, (&__pyx_v_size)); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(1, 86, __pyx_L1_error) + __pyx_v_orig_buf = __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":87 + * + * orig_buf = PyUnicode_AsUTF8AndSize(u, &size) + * if size > 36 or size < 32: # <<<<<<<<<<<<<< + * raise ValueError( + * f'invalid UUID {u!r}: ' +*/ + __pyx_t_3 = (__pyx_v_size > 36); + if (!__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_3 = (__pyx_v_size < 32); + __pyx_t_2 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":88 + * orig_buf = PyUnicode_AsUTF8AndSize(u, &size) + * if size > 36 or size < 32: + * raise ValueError( # <<<<<<<<<<<<<< + * f'invalid UUID {u!r}: ' + * f'length must be between 32..36 characters, got {size}') +*/ + __pyx_t_5 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_6 = __pyx_builtin_ValueError; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":89 + * if size > 36 or size < 32: + * raise ValueError( + * f'invalid UUID {u!r}: ' # <<<<<<<<<<<<<< + * f'length must be between 32..36 characters, got {size}') + * +*/ + __pyx_t_7 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_u), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":90 + * raise ValueError( + * f'invalid UUID {u!r}: ' + * f'length must be between 32..36 characters, got {size}') # <<<<<<<<<<<<<< + * + * acc_set = 0 +*/ + __pyx_t_8 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_size, 0, ' ', 'd'); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 90, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_invalid_UUID; + __pyx_t_9[1] = __pyx_t_7; + __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u_length_must_be_between_32_36_ch; + __pyx_t_9[3] = __pyx_t_8; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":89 + * if size > 36 or size < 32: + * raise ValueError( + * f'invalid UUID {u!r}: ' # <<<<<<<<<<<<<< + * f'length must be between 32..36 characters, got {size}') + * +*/ + __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_9, 4, 13 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 48 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7)); + if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_10}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 88, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_Raise(__pyx_t_4, 0, 0, 0); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __PYX_ERR(1, 88, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/uuid.pyx":87 + * + * orig_buf = PyUnicode_AsUTF8AndSize(u, &size) + * if size > 36 or size < 32: # <<<<<<<<<<<<<< + * raise ValueError( + * f'invalid UUID {u!r}: ' +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":92 + * f'length must be between 32..36 characters, got {size}') + * + * acc_set = 0 # <<<<<<<<<<<<<< + * j = 0 + * for i in range(size): +*/ + __pyx_v_acc_set = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":93 + * + * acc_set = 0 + * j = 0 # <<<<<<<<<<<<<< + * for i in range(size): + * ch = orig_buf[i] +*/ + __pyx_v_j = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":94 + * acc_set = 0 + * j = 0 + * for i in range(size): # <<<<<<<<<<<<<< + * ch = orig_buf[i] + * if ch == b'-': +*/ + __pyx_t_12 = __pyx_v_size; + __pyx_t_13 = __pyx_t_12; + for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) { + __pyx_v_i = __pyx_t_14; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":95 + * j = 0 + * for i in range(size): + * ch = orig_buf[i] # <<<<<<<<<<<<<< + * if ch == b'-': + * continue +*/ + __pyx_v_ch = ((unsigned char)(__pyx_v_orig_buf[__pyx_v_i])); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":96 + * for i in range(size): + * ch = orig_buf[i] + * if ch == b'-': # <<<<<<<<<<<<<< + * continue + * +*/ + __pyx_t_2 = (__pyx_v_ch == ((unsigned char)'-')); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":97 + * ch = orig_buf[i] + * if ch == b'-': + * continue # <<<<<<<<<<<<<< + * + * part = _hextable[ch] +*/ + goto __pyx_L6_continue; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":96 + * for i in range(size): + * ch = orig_buf[i] + * if ch == b'-': # <<<<<<<<<<<<<< + * continue + * +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":99 + * continue + * + * part = _hextable[ch] # <<<<<<<<<<<<<< + * if part == -1: + * if ch >= 0x20 and ch <= 0x7e: +*/ + __pyx_v_part = ((uint8_t)((int8_t)(__pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto__hextable[__pyx_v_ch]))); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":100 + * + * part = _hextable[ch] + * if part == -1: # <<<<<<<<<<<<<< + * if ch >= 0x20 and ch <= 0x7e: + * raise ValueError( +*/ + __pyx_t_2 = (__pyx_v_part == ((uint8_t)-1L)); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":101 + * part = _hextable[ch] + * if part == -1: + * if ch >= 0x20 and ch <= 0x7e: # <<<<<<<<<<<<<< + * raise ValueError( + * f'invalid UUID {u!r}: unexpected character {chr(ch)!r}') +*/ + __pyx_t_3 = (__pyx_v_ch >= 0x20); + if (__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L11_bool_binop_done; + } + __pyx_t_3 = (__pyx_v_ch <= 0x7e); + __pyx_t_2 = __pyx_t_3; + __pyx_L11_bool_binop_done:; + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":102 + * if part == -1: + * if ch >= 0x20 and ch <= 0x7e: + * raise ValueError( # <<<<<<<<<<<<<< + * f'invalid UUID {u!r}: unexpected character {chr(ch)!r}') + * else: +*/ + __pyx_t_6 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_10 = __pyx_builtin_ValueError; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":103 + * if ch >= 0x20 and ch <= 0x7e: + * raise ValueError( + * f'invalid UUID {u!r}: unexpected character {chr(ch)!r}') # <<<<<<<<<<<<<< + * else: + * raise ValueError('invalid UUID {u!r}: unexpected character') +*/ + __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_u), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_8 = PyUnicode_FromOrdinal(__pyx_v_ch); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_8), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_invalid_UUID; + __pyx_t_9[1] = __pyx_t_5; + __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u_unexpected_character; + __pyx_t_9[3] = __pyx_t_7; + __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_9, 4, 13 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 23 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7)); + if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__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_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 102, __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(1, 102, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/uuid.pyx":101 + * part = _hextable[ch] + * if part == -1: + * if ch >= 0x20 and ch <= 0x7e: # <<<<<<<<<<<<<< + * raise ValueError( + * f'invalid UUID {u!r}: unexpected character {chr(ch)!r}') +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":105 + * f'invalid UUID {u!r}: unexpected character {chr(ch)!r}') + * else: + * raise ValueError('invalid UUID {u!r}: unexpected character') # <<<<<<<<<<<<<< + * + * if acc_set: +*/ + /*else*/ { + __pyx_t_10 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_8 = __pyx_builtin_ValueError; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_mstate_global->__pyx_kp_u_invalid_UUID_u_r_unexpected_char}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__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_4)) __PYX_ERR(1, 105, __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(1, 105, __pyx_L1_error) + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":100 + * + * part = _hextable[ch] + * if part == -1: # <<<<<<<<<<<<<< + * if ch >= 0x20 and ch <= 0x7e: + * raise ValueError( +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":107 + * raise ValueError('invalid UUID {u!r}: unexpected character') + * + * if acc_set: # <<<<<<<<<<<<<< + * acc |= part + * out[j] = acc +*/ + __pyx_t_2 = (__pyx_v_acc_set != 0); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":108 + * + * if acc_set: + * acc |= part # <<<<<<<<<<<<<< + * out[j] = acc + * acc_set = 0 +*/ + __pyx_v_acc = (__pyx_v_acc | __pyx_v_part); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":109 + * if acc_set: + * acc |= part + * out[j] = acc # <<<<<<<<<<<<<< + * acc_set = 0 + * j += 1 +*/ + (__pyx_v_out[__pyx_v_j]) = ((char)__pyx_v_acc); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":110 + * acc |= part + * out[j] = acc + * acc_set = 0 # <<<<<<<<<<<<<< + * j += 1 + * else: +*/ + __pyx_v_acc_set = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":111 + * out[j] = acc + * acc_set = 0 + * j += 1 # <<<<<<<<<<<<<< + * else: + * acc = (part << 4) +*/ + __pyx_v_j = (__pyx_v_j + 1); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":107 + * raise ValueError('invalid UUID {u!r}: unexpected character') + * + * if acc_set: # <<<<<<<<<<<<<< + * acc |= part + * out[j] = acc +*/ + goto __pyx_L13; + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":113 + * j += 1 + * else: + * acc = (part << 4) # <<<<<<<<<<<<<< + * acc_set = 1 + * +*/ + /*else*/ { + __pyx_v_acc = ((uint8_t)(__pyx_v_part << 4)); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":114 + * else: + * acc = (part << 4) + * acc_set = 1 # <<<<<<<<<<<<<< + * + * if j > 16 or (j == 16 and acc_set): +*/ + __pyx_v_acc_set = 1; + } + __pyx_L13:; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":116 + * acc_set = 1 + * + * if j > 16 or (j == 16 and acc_set): # <<<<<<<<<<<<<< + * raise ValueError( + * f'invalid UUID {u!r}: decodes to more than 16 bytes') +*/ + __pyx_t_3 = (__pyx_v_j > 16); + if (!__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_3 = (__pyx_v_j == 16); + if (__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_3 = (__pyx_v_acc_set != 0); + __pyx_t_2 = __pyx_t_3; + __pyx_L15_bool_binop_done:; + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":117 + * + * if j > 16 or (j == 16 and acc_set): + * raise ValueError( # <<<<<<<<<<<<<< + * f'invalid UUID {u!r}: decodes to more than 16 bytes') + * +*/ + __pyx_t_8 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_10 = __pyx_builtin_ValueError; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":118 + * if j > 16 or (j == 16 and acc_set): + * raise ValueError( + * f'invalid UUID {u!r}: decodes to more than 16 bytes') # <<<<<<<<<<<<<< + * + * if j != 16: +*/ + __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_u), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_15[0] = __pyx_mstate_global->__pyx_kp_u_invalid_UUID; + __pyx_t_15[1] = __pyx_t_6; + __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u_decodes_to_more_than_16_bytes; + __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_15, 3, 13 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 31, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6)); + if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_7}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __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_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 117, __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(1, 117, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/uuid.pyx":116 + * acc_set = 1 + * + * if j > 16 or (j == 16 and acc_set): # <<<<<<<<<<<<<< + * raise ValueError( + * f'invalid UUID {u!r}: decodes to more than 16 bytes') +*/ + } + __pyx_L6_continue:; + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":120 + * f'invalid UUID {u!r}: decodes to more than 16 bytes') + * + * if j != 16: # <<<<<<<<<<<<<< + * raise ValueError( + * f'invalid UUID {u!r}: decodes to less than 16 bytes') +*/ + __pyx_t_2 = (__pyx_v_j != 16); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":121 + * + * if j != 16: + * raise ValueError( # <<<<<<<<<<<<<< + * f'invalid UUID {u!r}: decodes to less than 16 bytes') + * +*/ + __pyx_t_10 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_7 = __pyx_builtin_ValueError; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":122 + * if j != 16: + * raise ValueError( + * f'invalid UUID {u!r}: decodes to less than 16 bytes') # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_8 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_u), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_15[0] = __pyx_mstate_global->__pyx_kp_u_invalid_UUID; + __pyx_t_15[1] = __pyx_t_8; + __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u_decodes_to_less_than_16_bytes; + __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_15, 3, 13 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8) + 31, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8)); + if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_6}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__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_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 121, __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(1, 121, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/uuid.pyx":120 + * f'invalid UUID {u!r}: decodes to more than 16 bytes') + * + * if j != 16: # <<<<<<<<<<<<<< + * raise ValueError( + * f'invalid UUID {u!r}: decodes to less than 16 bytes') +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":78 + * + * + * cdef gaussdb_uuid_bytes_from_str(str u, char *out): # <<<<<<<<<<<<<< + * cdef: + * const char *orig_buf +*/ + + /* 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_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.gaussdb_uuid_bytes_from_str", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe_1__reduce_cython__(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe_1__reduce_cython__(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("__reduce_cython__ (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("__reduce_cython__", 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("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe___reduce_cython__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe___reduce_cython__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = () # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: +*/ + __Pyx_INCREF(__pyx_mstate_global->__pyx_empty_tuple); + __pyx_v_state = __pyx_mstate_global->__pyx_empty_tuple; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = () + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None: + * state += (_dict,) +*/ + __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v__dict = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":7 + * state = () + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True +*/ + __pyx_t_2 = (__pyx_v__dict != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: +*/ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict) != (0)) __PYX_ERR(3, 8, __pyx_L1_error); + __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "(tree fragment)":9 + * if _dict is not None: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = False +*/ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = () + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True +*/ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = False # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle___UUIDReplaceMe, (type(self), 0xe3b0c44, None), state +*/ + /*else*/ { + __pyx_v_use_setstate = 0; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = False + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle___UUIDReplaceMe, (type(self), 0xe3b0c44, None), state + * else: +*/ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = False + * if use_setstate: + * return __pyx_unpickle___UUIDReplaceMe, (type(self), 0xe3b0c44, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle___UUIDReplaceMe, (type(self), 0xe3b0c44, state) +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_pyx_unpickle___UUIDReplaceMe); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))) != (0)) __PYX_ERR(3, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_mstate_global->__pyx_int_238750788); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_238750788); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_mstate_global->__pyx_int_238750788) != (0)) __PYX_ERR(3, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None) != (0)) __PYX_ERR(3, 13, __pyx_L1_error); + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3) != (0)) __PYX_ERR(3, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1) != (0)) __PYX_ERR(3, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state) != (0)) __PYX_ERR(3, 13, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = False + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle___UUIDReplaceMe, (type(self), 0xe3b0c44, None), state + * else: +*/ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle___UUIDReplaceMe, (type(self), 0xe3b0c44, None), state + * else: + * return __pyx_unpickle___UUIDReplaceMe, (type(self), 0xe3b0c44, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle___UUIDReplaceMe__set_state(self, __pyx_state) +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_pyx_unpickle___UUIDReplaceMe); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))) != (0)) __PYX_ERR(3, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_mstate_global->__pyx_int_238750788); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_238750788); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_mstate_global->__pyx_int_238750788) != (0)) __PYX_ERR(3, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state) != (0)) __PYX_ERR(3, 15, __pyx_L1_error); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4) != (0)) __PYX_ERR(3, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(3, 15, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.__UUIDReplaceMe.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle___UUIDReplaceMe, (type(self), 0xe3b0c44, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle___UUIDReplaceMe__set_state(self, __pyx_state) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe_3__setstate_cython__(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe_3__setstate_cython__(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___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (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_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 16, __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(3, 16, __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, "__setstate_cython__", 0) < 0) __PYX_ERR(3, 16, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(3, 16, __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(3, 16, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 16, __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("async_gaussdb.gaussdbproto.gaussdbproto.__UUIDReplaceMe.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe_2__setstate_cython__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe *)__pyx_v_self), __pyx_v___pyx_state); + + /* 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_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe_2__setstate_cython__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":17 + * return __pyx_unpickle___UUIDReplaceMe, (type(self), 0xe3b0c44, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle___UUIDReplaceMe__set_state(self, __pyx_state) # <<<<<<<<<<<<<< +*/ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(3, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto___pyx_unpickle___UUIDReplaceMe__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle___UUIDReplaceMe, (type(self), 0xe3b0c44, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle___UUIDReplaceMe__set_state(self, __pyx_state) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.__UUIDReplaceMe.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":129 + * + * + * cdef gaussdb_uuid_from_buf(const char *buf): # <<<<<<<<<<<<<< + * cdef: + * UUID u = UUID.__new__(UUID) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_uuid_from_buf(char const *__pyx_v_buf) { + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_u = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("gaussdb_uuid_from_buf", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":131 + * cdef gaussdb_uuid_from_buf(const char *buf): + * cdef: + * UUID u = UUID.__new__(UUID) # <<<<<<<<<<<<<< + * memcpy(u._data, buf, 16) + * return u +*/ + __pyx_t_1 = ((PyObject *)__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 131, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_1); + __pyx_v_u = ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":132 + * cdef: + * UUID u = UUID.__new__(UUID) + * memcpy(u._data, buf, 16) # <<<<<<<<<<<<<< + * return u + * +*/ + (void)(memcpy(__pyx_v_u->_data, __pyx_v_buf, 16)); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":133 + * UUID u = UUID.__new__(UUID) + * memcpy(u._data, buf, 16) + * return u # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF((PyObject *)__pyx_v_u); + __pyx_r = ((PyObject *)__pyx_v_u); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":129 + * + * + * cdef gaussdb_uuid_from_buf(const char *buf): # <<<<<<<<<<<<<< + * cdef: + * UUID u = UUID.__new__(UUID) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.gaussdb_uuid_from_buf", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_u); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":146 + * object __weakref__ + * + * def __cinit__(self): # <<<<<<<<<<<<<< + * self._int = None + * self._hash = None +*/ + +/* Python wrapper */ +static int __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID___cinit__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static int __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID___cinit__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + int __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__cinit__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":147 + * + * def __cinit__(self): + * self._int = None # <<<<<<<<<<<<<< + * self._hash = None + * +*/ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->_int); + __Pyx_DECREF(__pyx_v_self->_int); + __pyx_v_self->_int = Py_None; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":148 + * def __cinit__(self): + * self._int = None + * self._hash = None # <<<<<<<<<<<<<< + * + * def __init__(self, inp): +*/ + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + __Pyx_GOTREF(__pyx_v_self->_hash); + __Pyx_DECREF(__pyx_v_self->_hash); + __pyx_v_self->_hash = Py_None; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":146 + * object __weakref__ + * + * def __cinit__(self): # <<<<<<<<<<<<<< + * self._int = None + * self._hash = None +*/ + + /* function exit code */ + __pyx_r = 0; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":150 + * self._hash = None + * + * def __init__(self, inp): # <<<<<<<<<<<<<< + * cdef: + * char *buf +*/ + +/* Python wrapper */ +static int __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_inp = 0; + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + 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_inp,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 150, __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(1, 150, __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(1, 150, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, i); __PYX_ERR(1, 150, __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(1, 150, __pyx_L3_error) + } + __pyx_v_inp = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 150, __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("async_gaussdb.gaussdbproto.gaussdbproto.UUID.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return -1; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_2__init__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self), __pyx_v_inp); + + /* 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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_2__init__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self, PyObject *__pyx_v_inp) { + char *__pyx_v_buf; + Py_ssize_t __pyx_v_size; + int __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__init__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":155 + * Py_ssize_t size + * + * if cpython.PyBytes_Check(inp): # <<<<<<<<<<<<<< + * cpython.PyBytes_AsStringAndSize(inp, &buf, &size) + * if size != 16: +*/ + __pyx_t_1 = PyBytes_Check(__pyx_v_inp); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":156 + * + * if cpython.PyBytes_Check(inp): + * cpython.PyBytes_AsStringAndSize(inp, &buf, &size) # <<<<<<<<<<<<<< + * if size != 16: + * raise ValueError(f'16 bytes were expected, got {size}') +*/ + __pyx_t_2 = PyBytes_AsStringAndSize(__pyx_v_inp, (&__pyx_v_buf), (&__pyx_v_size)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 156, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/uuid.pyx":157 + * if cpython.PyBytes_Check(inp): + * cpython.PyBytes_AsStringAndSize(inp, &buf, &size) + * if size != 16: # <<<<<<<<<<<<<< + * raise ValueError(f'16 bytes were expected, got {size}') + * memcpy(self._data, buf, 16) +*/ + __pyx_t_1 = (__pyx_v_size != 16); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":158 + * cpython.PyBytes_AsStringAndSize(inp, &buf, &size) + * if size != 16: + * raise ValueError(f'16 bytes were expected, got {size}') # <<<<<<<<<<<<<< + * memcpy(self._data, buf, 16) + * +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_5 = __pyx_builtin_ValueError; + __pyx_t_6 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_size, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_16_bytes_were_expected_got, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 158, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_7}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 158, __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(1, 158, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/uuid.pyx":157 + * if cpython.PyBytes_Check(inp): + * cpython.PyBytes_AsStringAndSize(inp, &buf, &size) + * if size != 16: # <<<<<<<<<<<<<< + * raise ValueError(f'16 bytes were expected, got {size}') + * memcpy(self._data, buf, 16) +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":159 + * if size != 16: + * raise ValueError(f'16 bytes were expected, got {size}') + * memcpy(self._data, buf, 16) # <<<<<<<<<<<<<< + * + * elif cpython.PyUnicode_Check(inp): +*/ + (void)(memcpy(__pyx_v_self->_data, __pyx_v_buf, 16)); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":155 + * Py_ssize_t size + * + * if cpython.PyBytes_Check(inp): # <<<<<<<<<<<<<< + * cpython.PyBytes_AsStringAndSize(inp, &buf, &size) + * if size != 16: +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":161 + * memcpy(self._data, buf, 16) + * + * elif cpython.PyUnicode_Check(inp): # <<<<<<<<<<<<<< + * gaussdb_uuid_bytes_from_str(inp, self._data) + * else: +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_inp); + if (likely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":162 + * + * elif cpython.PyUnicode_Check(inp): + * gaussdb_uuid_bytes_from_str(inp, self._data) # <<<<<<<<<<<<<< + * else: + * raise TypeError(f'a bytes or str object expected, got {inp!r}') +*/ + if (!(likely(PyUnicode_CheckExact(__pyx_v_inp))||((__pyx_v_inp) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_inp))) __PYX_ERR(1, 162, __pyx_L1_error) + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_uuid_bytes_from_str(((PyObject*)__pyx_v_inp), __pyx_v_self->_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 162, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":161 + * memcpy(self._data, buf, 16) + * + * elif cpython.PyUnicode_Check(inp): # <<<<<<<<<<<<<< + * gaussdb_uuid_bytes_from_str(inp, self._data) + * else: +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":164 + * gaussdb_uuid_bytes_from_str(inp, self._data) + * else: + * raise TypeError(f'a bytes or str object expected, got {inp!r}') # <<<<<<<<<<<<<< + * + * @property +*/ + /*else*/ { + __pyx_t_5 = NULL; + __Pyx_INCREF(__pyx_builtin_TypeError); + __pyx_t_7 = __pyx_builtin_TypeError; + __pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_inp), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_a_bytes_or_str_object_expected_g, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 164, __pyx_L1_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(__pyx_t_7, __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; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 164, __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(1, 164, __pyx_L1_error) + } + __pyx_L3:; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":150 + * self._hash = None + * + * def __init__(self, inp): # <<<<<<<<<<<<<< + * cdef: + * char *buf +*/ + + /* 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("async_gaussdb.gaussdbproto.gaussdbproto.UUID.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":166 + * raise TypeError(f'a bytes or str object expected, got {inp!r}') + * + * @property # <<<<<<<<<<<<<< + * def bytes(self): + * return cpython.PyBytes_FromStringAndSize(self._data, 16) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_5bytes_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_5bytes_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_5bytes___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_5bytes___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":168 + * @property + * def bytes(self): + * return cpython.PyBytes_FromStringAndSize(self._data, 16) # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyBytes_FromStringAndSize(__pyx_v_self->_data, 16); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 168, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":166 + * raise TypeError(f'a bytes or str object expected, got {inp!r}') + * + * @property # <<<<<<<<<<<<<< + * def bytes(self): + * return cpython.PyBytes_FromStringAndSize(self._data, 16) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.bytes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":170 + * return cpython.PyBytes_FromStringAndSize(self._data, 16) + * + * @property # <<<<<<<<<<<<<< + * def int(self): + * if self._int is None: +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3int_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3int_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3int___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3int___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":172 + * @property + * def int(self): + * if self._int is None: # <<<<<<<<<<<<<< + * # The cache is important because `self.int` can be + * # used multiple times by __hash__ etc. +*/ + __pyx_t_1 = (__pyx_v_self->_int == Py_None); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":175 + * # The cache is important because `self.int` can be + * # used multiple times by __hash__ etc. + * self._int = int.from_bytes(self.bytes, 'big') # <<<<<<<<<<<<<< + * return self._int + * +*/ + __pyx_t_3 = ((PyObject *)(&PyLong_Type)); + __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_bytes); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_4, __pyx_mstate_global->__pyx_n_u_big}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_from_bytes, __pyx_callargs+__pyx_t_5, (3-__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(1, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_GIVEREF(__pyx_t_2); + __Pyx_GOTREF(__pyx_v_self->_int); + __Pyx_DECREF(__pyx_v_self->_int); + __pyx_v_self->_int = __pyx_t_2; + __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":172 + * @property + * def int(self): + * if self._int is None: # <<<<<<<<<<<<<< + * # The cache is important because `self.int` can be + * # used multiple times by __hash__ etc. +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":176 + * # used multiple times by __hash__ etc. + * self._int = int.from_bytes(self.bytes, 'big') + * return self._int # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_self->_int); + __pyx_r = __pyx_v_self->_int; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":170 + * return cpython.PyBytes_FromStringAndSize(self._data, 16) + * + * @property # <<<<<<<<<<<<<< + * def int(self): + * if self._int is None: +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.int.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":178 + * return self._int + * + * @property # <<<<<<<<<<<<<< + * def is_safe(self): + * return uuid.SafeUUID.unknown +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7is_safe_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7is_safe_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7is_safe___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7is_safe___get__(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":180 + * @property + * def is_safe(self): + * return uuid.SafeUUID.unknown # <<<<<<<<<<<<<< + * + * def __str__(self): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_uuid); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_SafeUUID); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 180, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_unknown); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 180, __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; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":178 + * return self._int + * + * @property # <<<<<<<<<<<<<< + * def is_safe(self): + * return uuid.SafeUUID.unknown +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.is_safe.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":182 + * return uuid.SafeUUID.unknown + * + * def __str__(self): # <<<<<<<<<<<<<< + * cdef char out[36] + * uuid_to_str(self._data, out) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_5__str__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_5__str__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__str__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_4__str__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_4__str__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + char __pyx_v_out[36]; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__str__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":184 + * def __str__(self): + * cdef char out[36] + * uuid_to_str(self._data, out) # <<<<<<<<<<<<<< + * return PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, out, 36) + * +*/ + uuid_to_str(__pyx_v_self->_data, __pyx_v_out); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":185 + * cdef char out[36] + * uuid_to_str(self._data, out) + * return PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, out, 36) # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, ((void *)__pyx_v_out), 36); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 185, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":182 + * return uuid.SafeUUID.unknown + * + * def __str__(self): # <<<<<<<<<<<<<< + * cdef char out[36] + * uuid_to_str(self._data, out) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":187 + * return PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, out, 36) + * + * @property # <<<<<<<<<<<<<< + * def hex(self): + * cdef char out[32] +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3hex_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3hex_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3hex___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3hex___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + char __pyx_v_out[32]; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":190 + * def hex(self): + * cdef char out[32] + * uuid_to_hex(self._data, out) # <<<<<<<<<<<<<< + * return PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, out, 32) + * +*/ + uuid_to_hex(__pyx_v_self->_data, __pyx_v_out); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":191 + * cdef char out[32] + * uuid_to_hex(self._data, out) + * return PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, out, 32) # <<<<<<<<<<<<<< + * + * def __repr__(self): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, ((void *)__pyx_v_out), 32); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":187 + * return PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, out, 36) + * + * @property # <<<<<<<<<<<<<< + * def hex(self): + * cdef char out[32] +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.hex.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":193 + * return PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, out, 32) + * + * def __repr__(self): # <<<<<<<<<<<<<< + * return f"UUID('{self}')" + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7__repr__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_6__repr__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_6__repr__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2[3]; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__repr__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":194 + * + * def __repr__(self): + * return f"UUID('{self}')" # <<<<<<<<<<<<<< + * + * def __reduce__(self): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_FormatSimple(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 194, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2[0] = __pyx_mstate_global->__pyx_kp_u_UUID; + __pyx_t_2[1] = __pyx_t_1; + __pyx_t_2[2] = __pyx_mstate_global->__pyx_kp_u__3; + __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, 6 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 2, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1)); + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 194, __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; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":193 + * return PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, out, 32) + * + * def __repr__(self): # <<<<<<<<<<<<<< + * return f"UUID('{self}')" + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":196 + * return f"UUID('{self}')" + * + * def __reduce__(self): # <<<<<<<<<<<<<< + * return (type(self), (self.bytes,)) + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_9__reduce__(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_9__reduce__ = {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_9__reduce__(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("__reduce__ (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("__reduce__", 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("__reduce__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8__reduce__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8__reduce__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":197 + * + * def __reduce__(self): + * return (type(self), (self.bytes,)) # <<<<<<<<<<<<<< + * + * def __eq__(self, other): +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_bytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1) != (0)) __PYX_ERR(1, 197, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 197, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))) != (0)) __PYX_ERR(1, 197, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2) != (0)) __PYX_ERR(1, 197, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":196 + * return f"UUID('{self}')" + * + * def __reduce__(self): # <<<<<<<<<<<<<< + * return (type(self), (self.bytes,)) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":199 + * return (type(self), (self.bytes,)) + * + * def __eq__(self, other): # <<<<<<<<<<<<<< + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) == 0 +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_11__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_11__eq__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__eq__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_10__eq__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self), ((PyObject *)__pyx_v_other)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_10__eq__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self, PyObject *__pyx_v_other) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__eq__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":200 + * + * def __eq__(self, other): + * if type(other) is UUID: # <<<<<<<<<<<<<< + * return memcmp(self._data, (other)._data, 16) == 0 + * if isinstance(other, std_UUID): +*/ + __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_other)) == ((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID)); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":201 + * def __eq__(self, other): + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) == 0 # <<<<<<<<<<<<<< + * if isinstance(other, std_UUID): + * return self.int == other.int +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyBool_FromLong((memcmp(__pyx_v_self->_data, ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_other)->_data, 16) == 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 201, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":200 + * + * def __eq__(self, other): + * if type(other) is UUID: # <<<<<<<<<<<<<< + * return memcmp(self._data, (other)._data, 16) == 0 + * if isinstance(other, std_UUID): +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":202 + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) == 0 + * if isinstance(other, std_UUID): # <<<<<<<<<<<<<< + * return self.int == other.int + * return NotImplemented +*/ + __pyx_t_2 = __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_std_UUID; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = PyObject_IsInstance(__pyx_v_other, __pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 202, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":203 + * return memcmp(self._data, (other)._data, 16) == 0 + * if isinstance(other, std_UUID): + * return self.int == other.int # <<<<<<<<<<<<<< + * return NotImplemented + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 203, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 203, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":202 + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) == 0 + * if isinstance(other, std_UUID): # <<<<<<<<<<<<<< + * return self.int == other.int + * return NotImplemented +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":204 + * if isinstance(other, std_UUID): + * return self.int == other.int + * return NotImplemented # <<<<<<<<<<<<<< + * + * def __ne__(self, other): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_builtin_NotImplemented); + __pyx_r = __pyx_builtin_NotImplemented; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":199 + * return (type(self), (self.bytes,)) + * + * def __eq__(self, other): # <<<<<<<<<<<<<< + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) == 0 +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.__eq__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":206 + * return NotImplemented + * + * def __ne__(self, other): # <<<<<<<<<<<<<< + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) != 0 +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_13__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_13__ne__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__ne__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_12__ne__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self), ((PyObject *)__pyx_v_other)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_12__ne__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self, PyObject *__pyx_v_other) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__ne__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":207 + * + * def __ne__(self, other): + * if type(other) is UUID: # <<<<<<<<<<<<<< + * return memcmp(self._data, (other)._data, 16) != 0 + * if isinstance(other, std_UUID): +*/ + __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_other)) == ((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID)); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":208 + * def __ne__(self, other): + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) != 0 # <<<<<<<<<<<<<< + * if isinstance(other, std_UUID): + * return self.int != other.int +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyBool_FromLong((memcmp(__pyx_v_self->_data, ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_other)->_data, 16) != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 208, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":207 + * + * def __ne__(self, other): + * if type(other) is UUID: # <<<<<<<<<<<<<< + * return memcmp(self._data, (other)._data, 16) != 0 + * if isinstance(other, std_UUID): +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":209 + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) != 0 + * if isinstance(other, std_UUID): # <<<<<<<<<<<<<< + * return self.int != other.int + * return NotImplemented +*/ + __pyx_t_2 = __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_std_UUID; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = PyObject_IsInstance(__pyx_v_other, __pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 209, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":210 + * return memcmp(self._data, (other)._data, 16) != 0 + * if isinstance(other, std_UUID): + * return self.int != other.int # <<<<<<<<<<<<<< + * return NotImplemented + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 210, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":209 + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) != 0 + * if isinstance(other, std_UUID): # <<<<<<<<<<<<<< + * return self.int != other.int + * return NotImplemented +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":211 + * if isinstance(other, std_UUID): + * return self.int != other.int + * return NotImplemented # <<<<<<<<<<<<<< + * + * def __lt__(self, other): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_builtin_NotImplemented); + __pyx_r = __pyx_builtin_NotImplemented; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":206 + * return NotImplemented + * + * def __ne__(self, other): # <<<<<<<<<<<<<< + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) != 0 +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.__ne__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":213 + * return NotImplemented + * + * def __lt__(self, other): # <<<<<<<<<<<<<< + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) < 0 +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_15__lt__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_15__lt__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__lt__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_14__lt__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self), ((PyObject *)__pyx_v_other)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_14__lt__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self, PyObject *__pyx_v_other) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__lt__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":214 + * + * def __lt__(self, other): + * if type(other) is UUID: # <<<<<<<<<<<<<< + * return memcmp(self._data, (other)._data, 16) < 0 + * if isinstance(other, std_UUID): +*/ + __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_other)) == ((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID)); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":215 + * def __lt__(self, other): + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) < 0 # <<<<<<<<<<<<<< + * if isinstance(other, std_UUID): + * return self.int < other.int +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyBool_FromLong((memcmp(__pyx_v_self->_data, ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_other)->_data, 16) < 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 215, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":214 + * + * def __lt__(self, other): + * if type(other) is UUID: # <<<<<<<<<<<<<< + * return memcmp(self._data, (other)._data, 16) < 0 + * if isinstance(other, std_UUID): +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":216 + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) < 0 + * if isinstance(other, std_UUID): # <<<<<<<<<<<<<< + * return self.int < other.int + * return NotImplemented +*/ + __pyx_t_2 = __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_std_UUID; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = PyObject_IsInstance(__pyx_v_other, __pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 216, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":217 + * return memcmp(self._data, (other)._data, 16) < 0 + * if isinstance(other, std_UUID): + * return self.int < other.int # <<<<<<<<<<<<<< + * return NotImplemented + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 217, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 217, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 217, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":216 + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) < 0 + * if isinstance(other, std_UUID): # <<<<<<<<<<<<<< + * return self.int < other.int + * return NotImplemented +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":218 + * if isinstance(other, std_UUID): + * return self.int < other.int + * return NotImplemented # <<<<<<<<<<<<<< + * + * def __gt__(self, other): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_builtin_NotImplemented); + __pyx_r = __pyx_builtin_NotImplemented; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":213 + * return NotImplemented + * + * def __lt__(self, other): # <<<<<<<<<<<<<< + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) < 0 +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.__lt__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":220 + * return NotImplemented + * + * def __gt__(self, other): # <<<<<<<<<<<<<< + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) > 0 +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_17__gt__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_17__gt__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__gt__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_16__gt__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self), ((PyObject *)__pyx_v_other)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_16__gt__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self, PyObject *__pyx_v_other) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__gt__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":221 + * + * def __gt__(self, other): + * if type(other) is UUID: # <<<<<<<<<<<<<< + * return memcmp(self._data, (other)._data, 16) > 0 + * if isinstance(other, std_UUID): +*/ + __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_other)) == ((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID)); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":222 + * def __gt__(self, other): + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) > 0 # <<<<<<<<<<<<<< + * if isinstance(other, std_UUID): + * return self.int > other.int +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyBool_FromLong((memcmp(__pyx_v_self->_data, ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_other)->_data, 16) > 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 222, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":221 + * + * def __gt__(self, other): + * if type(other) is UUID: # <<<<<<<<<<<<<< + * return memcmp(self._data, (other)._data, 16) > 0 + * if isinstance(other, std_UUID): +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":223 + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) > 0 + * if isinstance(other, std_UUID): # <<<<<<<<<<<<<< + * return self.int > other.int + * return NotImplemented +*/ + __pyx_t_2 = __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_std_UUID; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = PyObject_IsInstance(__pyx_v_other, __pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 223, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":224 + * return memcmp(self._data, (other)._data, 16) > 0 + * if isinstance(other, std_UUID): + * return self.int > other.int # <<<<<<<<<<<<<< + * return NotImplemented + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 224, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":223 + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) > 0 + * if isinstance(other, std_UUID): # <<<<<<<<<<<<<< + * return self.int > other.int + * return NotImplemented +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":225 + * if isinstance(other, std_UUID): + * return self.int > other.int + * return NotImplemented # <<<<<<<<<<<<<< + * + * def __le__(self, other): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_builtin_NotImplemented); + __pyx_r = __pyx_builtin_NotImplemented; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":220 + * return NotImplemented + * + * def __gt__(self, other): # <<<<<<<<<<<<<< + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) > 0 +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.__gt__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":227 + * return NotImplemented + * + * def __le__(self, other): # <<<<<<<<<<<<<< + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) <= 0 +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_19__le__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_19__le__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__le__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_18__le__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self), ((PyObject *)__pyx_v_other)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_18__le__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self, PyObject *__pyx_v_other) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__le__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":228 + * + * def __le__(self, other): + * if type(other) is UUID: # <<<<<<<<<<<<<< + * return memcmp(self._data, (other)._data, 16) <= 0 + * if isinstance(other, std_UUID): +*/ + __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_other)) == ((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID)); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":229 + * def __le__(self, other): + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) <= 0 # <<<<<<<<<<<<<< + * if isinstance(other, std_UUID): + * return self.int <= other.int +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyBool_FromLong((memcmp(__pyx_v_self->_data, ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_other)->_data, 16) <= 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 229, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":228 + * + * def __le__(self, other): + * if type(other) is UUID: # <<<<<<<<<<<<<< + * return memcmp(self._data, (other)._data, 16) <= 0 + * if isinstance(other, std_UUID): +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":230 + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) <= 0 + * if isinstance(other, std_UUID): # <<<<<<<<<<<<<< + * return self.int <= other.int + * return NotImplemented +*/ + __pyx_t_2 = __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_std_UUID; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = PyObject_IsInstance(__pyx_v_other, __pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 230, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":231 + * return memcmp(self._data, (other)._data, 16) <= 0 + * if isinstance(other, std_UUID): + * return self.int <= other.int # <<<<<<<<<<<<<< + * return NotImplemented + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_LE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 231, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":230 + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) <= 0 + * if isinstance(other, std_UUID): # <<<<<<<<<<<<<< + * return self.int <= other.int + * return NotImplemented +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":232 + * if isinstance(other, std_UUID): + * return self.int <= other.int + * return NotImplemented # <<<<<<<<<<<<<< + * + * def __ge__(self, other): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_builtin_NotImplemented); + __pyx_r = __pyx_builtin_NotImplemented; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":227 + * return NotImplemented + * + * def __le__(self, other): # <<<<<<<<<<<<<< + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) <= 0 +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.__le__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":234 + * return NotImplemented + * + * def __ge__(self, other): # <<<<<<<<<<<<<< + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) >= 0 +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_21__ge__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_21__ge__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__ge__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_20__ge__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self), ((PyObject *)__pyx_v_other)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_20__ge__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self, PyObject *__pyx_v_other) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__ge__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":235 + * + * def __ge__(self, other): + * if type(other) is UUID: # <<<<<<<<<<<<<< + * return memcmp(self._data, (other)._data, 16) >= 0 + * if isinstance(other, std_UUID): +*/ + __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_other)) == ((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID)); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":236 + * def __ge__(self, other): + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) >= 0 # <<<<<<<<<<<<<< + * if isinstance(other, std_UUID): + * return self.int >= other.int +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyBool_FromLong((memcmp(__pyx_v_self->_data, ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_other)->_data, 16) >= 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 236, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":235 + * + * def __ge__(self, other): + * if type(other) is UUID: # <<<<<<<<<<<<<< + * return memcmp(self._data, (other)._data, 16) >= 0 + * if isinstance(other, std_UUID): +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":237 + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) >= 0 + * if isinstance(other, std_UUID): # <<<<<<<<<<<<<< + * return self.int >= other.int + * return NotImplemented +*/ + __pyx_t_2 = __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_std_UUID; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_1 = PyObject_IsInstance(__pyx_v_other, __pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 237, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":238 + * return memcmp(self._data, (other)._data, 16) >= 0 + * if isinstance(other, std_UUID): + * return self.int >= other.int # <<<<<<<<<<<<<< + * return NotImplemented + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 238, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 238, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 238, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":237 + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) >= 0 + * if isinstance(other, std_UUID): # <<<<<<<<<<<<<< + * return self.int >= other.int + * return NotImplemented +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":239 + * if isinstance(other, std_UUID): + * return self.int >= other.int + * return NotImplemented # <<<<<<<<<<<<<< + * + * def __hash__(self): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_builtin_NotImplemented); + __pyx_r = __pyx_builtin_NotImplemented; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":234 + * return NotImplemented + * + * def __ge__(self, other): # <<<<<<<<<<<<<< + * if type(other) is UUID: + * return memcmp(self._data, (other)._data, 16) >= 0 +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.__ge__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":241 + * return NotImplemented + * + * def __hash__(self): # <<<<<<<<<<<<<< + * # In EdgeDB every schema object has a uuid and there are + * # huge hash-maps of them. We want UUID.__hash__ to be +*/ + +/* Python wrapper */ +static Py_hash_t __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_23__hash__(PyObject *__pyx_v_self); /*proto*/ +static Py_hash_t __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_23__hash__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + Py_hash_t __pyx_r; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_22__hash__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static Py_hash_t __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_22__hash__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + Py_hash_t __pyx_r; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + Py_hash_t __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__hash__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":245 + * # huge hash-maps of them. We want UUID.__hash__ to be + * # as fast as possible. + * if self._hash is not None: # <<<<<<<<<<<<<< + * return self._hash + * +*/ + __pyx_t_1 = (__pyx_v_self->_hash != Py_None); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":246 + * # as fast as possible. + * if self._hash is not None: + * return self._hash # <<<<<<<<<<<<<< + * + * self._hash = hash(self.int) +*/ + __pyx_t_2 = __Pyx_PyLong_AsHash_t(__pyx_v_self->_hash); if (unlikely((__pyx_t_2 == (Py_hash_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 246, __pyx_L1_error) + __pyx_r = __pyx_t_2; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":245 + * # huge hash-maps of them. We want UUID.__hash__ to be + * # as fast as possible. + * if self._hash is not None: # <<<<<<<<<<<<<< + * return self._hash + * +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":248 + * return self._hash + * + * self._hash = hash(self.int) # <<<<<<<<<<<<<< + * return self._hash + * +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 248, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = PyObject_Hash(__pyx_t_3); if (unlikely(__pyx_t_2 == ((Py_hash_t)-1))) __PYX_ERR(1, 248, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyLong_FromHash_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 248, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_3); + __Pyx_GOTREF(__pyx_v_self->_hash); + __Pyx_DECREF(__pyx_v_self->_hash); + __pyx_v_self->_hash = __pyx_t_3; + __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":249 + * + * self._hash = hash(self.int) + * return self._hash # <<<<<<<<<<<<<< + * + * def __int__(self): +*/ + __pyx_t_2 = __Pyx_PyLong_AsHash_t(__pyx_v_self->_hash); if (unlikely((__pyx_t_2 == (Py_hash_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 249, __pyx_L1_error) + __pyx_r = __pyx_t_2; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":241 + * return NotImplemented + * + * def __hash__(self): # <<<<<<<<<<<<<< + * # In EdgeDB every schema object has a uuid and there are + * # huge hash-maps of them. We want UUID.__hash__ to be +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":251 + * return self._hash + * + * def __int__(self): # <<<<<<<<<<<<<< + * return self.int + * +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_25__int__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_25__int__(PyObject *__pyx_v_self) { + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__int__ (wrapper)", 0); + __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs); + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_24__int__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_24__int__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__int__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":252 + * + * def __int__(self): + * return self.int # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 252, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":251 + * return self._hash + * + * def __int__(self): # <<<<<<<<<<<<<< + * return self.int + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.__int__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":254 + * return self.int + * + * @property # <<<<<<<<<<<<<< + * def bytes_le(self): + * bytes = self.bytes +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8bytes_le_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8bytes_le_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8bytes_le___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8bytes_le___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_v_bytes = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":256 + * @property + * def bytes_le(self): + * bytes = self.bytes # <<<<<<<<<<<<<< + * return (bytes[4-1::-1] + bytes[6-1:4-1:-1] + bytes[8-1:6-1:-1] + + * bytes[8:]) +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_bytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 256, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_bytes = __pyx_t_1; + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":257 + * def bytes_le(self): + * bytes = self.bytes + * return (bytes[4-1::-1] + bytes[6-1:4-1:-1] + bytes[8-1:6-1:-1] + # <<<<<<<<<<<<<< + * bytes[8:]) + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_bytes, __pyx_mstate_global->__pyx_slice[0]); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_bytes, __pyx_mstate_global->__pyx_slice[1]); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_bytes, __pyx_mstate_global->__pyx_slice[2]); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":258 + * bytes = self.bytes + * return (bytes[4-1::-1] + bytes[6-1:4-1:-1] + bytes[8-1:6-1:-1] + + * bytes[8:]) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_bytes, 8, 0, NULL, NULL, &__pyx_mstate_global->__pyx_slice[3], 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 258, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":257 + * def bytes_le(self): + * bytes = self.bytes + * return (bytes[4-1::-1] + bytes[6-1:4-1:-1] + bytes[8-1:6-1:-1] + # <<<<<<<<<<<<<< + * bytes[8:]) + * +*/ + __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":254 + * return self.int + * + * @property # <<<<<<<<<<<<<< + * def bytes_le(self): + * bytes = self.bytes +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.bytes_le.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":260 + * bytes[8:]) + * + * @property # <<<<<<<<<<<<<< + * def fields(self): + * return (self.time_low, self.time_mid, self.time_hi_version, +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_6fields_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_6fields_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_6fields___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_6fields___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":262 + * @property + * def fields(self): + * return (self.time_low, self.time_mid, self.time_hi_version, # <<<<<<<<<<<<<< + * self.clock_seq_hi_variant, self.clock_seq_low, self.node) + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_time_low); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 262, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_time_mid); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 262, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_time_hi_version); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 262, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":263 + * def fields(self): + * return (self.time_low, self.time_mid, self.time_hi_version, + * self.clock_seq_hi_variant, self.clock_seq_low, self.node) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_clock_seq_hi_variant); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 263, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_clock_seq_low); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 263, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_node); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 263, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":262 + * @property + * def fields(self): + * return (self.time_low, self.time_mid, self.time_hi_version, # <<<<<<<<<<<<<< + * self.clock_seq_hi_variant, self.clock_seq_low, self.node) + * +*/ + __pyx_t_7 = PyTuple_New(6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 262, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1) != (0)) __PYX_ERR(1, 262, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2) != (0)) __PYX_ERR(1, 262, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_3) != (0)) __PYX_ERR(1, 262, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_4) != (0)) __PYX_ERR(1, 262, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_5); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_t_5) != (0)) __PYX_ERR(1, 262, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 5, __pyx_t_6) != (0)) __PYX_ERR(1, 262, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_t_3 = 0; + __pyx_t_4 = 0; + __pyx_t_5 = 0; + __pyx_t_6 = 0; + __pyx_r = __pyx_t_7; + __pyx_t_7 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":260 + * bytes[8:]) + * + * @property # <<<<<<<<<<<<<< + * def fields(self): + * return (self.time_low, self.time_mid, self.time_hi_version, +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.fields.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":265 + * self.clock_seq_hi_variant, self.clock_seq_low, self.node) + * + * @property # <<<<<<<<<<<<<< + * def time_low(self): + * return self.int >> 96 +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8time_low_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8time_low_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8time_low___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8time_low___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":267 + * @property + * def time_low(self): + * return self.int >> 96 # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 267, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyNumber_Rshift(__pyx_t_1, __pyx_mstate_global->__pyx_int_96); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 267, __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; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":265 + * self.clock_seq_hi_variant, self.clock_seq_low, self.node) + * + * @property # <<<<<<<<<<<<<< + * def time_low(self): + * return self.int >> 96 +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.time_low.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":269 + * return self.int >> 96 + * + * @property # <<<<<<<<<<<<<< + * def time_mid(self): + * return (self.int >> 80) & 0xffff +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8time_mid_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8time_mid_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8time_mid___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8time_mid___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":271 + * @property + * def time_mid(self): + * return (self.int >> 80) & 0xffff # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 271, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyNumber_Rshift(__pyx_t_1, __pyx_mstate_global->__pyx_int_80); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 271, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyLong_AndObjC(__pyx_t_2, __pyx_mstate_global->__pyx_int_65535, 0xffff, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 271, __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; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":269 + * return self.int >> 96 + * + * @property # <<<<<<<<<<<<<< + * def time_mid(self): + * return (self.int >> 80) & 0xffff +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.time_mid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":273 + * return (self.int >> 80) & 0xffff + * + * @property # <<<<<<<<<<<<<< + * def time_hi_version(self): + * return (self.int >> 64) & 0xffff +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_15time_hi_version_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_15time_hi_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_15time_hi_version___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_15time_hi_version___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":275 + * @property + * def time_hi_version(self): + * return (self.int >> 64) & 0xffff # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 275, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyNumber_Rshift(__pyx_t_1, __pyx_mstate_global->__pyx_int_64); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 275, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyLong_AndObjC(__pyx_t_2, __pyx_mstate_global->__pyx_int_65535, 0xffff, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 275, __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; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":273 + * return (self.int >> 80) & 0xffff + * + * @property # <<<<<<<<<<<<<< + * def time_hi_version(self): + * return (self.int >> 64) & 0xffff +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.time_hi_version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":277 + * return (self.int >> 64) & 0xffff + * + * @property # <<<<<<<<<<<<<< + * def clock_seq_hi_variant(self): + * return (self.int >> 56) & 0xff +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_20clock_seq_hi_variant_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_20clock_seq_hi_variant_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_20clock_seq_hi_variant___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_20clock_seq_hi_variant___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":279 + * @property + * def clock_seq_hi_variant(self): + * return (self.int >> 56) & 0xff # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 279, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyLong_RshiftObjC(__pyx_t_1, __pyx_mstate_global->__pyx_int_56, 56, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 279, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyLong_AndObjC(__pyx_t_2, __pyx_mstate_global->__pyx_int_255, 0xff, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 279, __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; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":277 + * return (self.int >> 64) & 0xffff + * + * @property # <<<<<<<<<<<<<< + * def clock_seq_hi_variant(self): + * return (self.int >> 56) & 0xff +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.clock_seq_hi_variant.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":281 + * return (self.int >> 56) & 0xff + * + * @property # <<<<<<<<<<<<<< + * def clock_seq_low(self): + * return (self.int >> 48) & 0xff +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_13clock_seq_low_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_13clock_seq_low_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_13clock_seq_low___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_13clock_seq_low___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":283 + * @property + * def clock_seq_low(self): + * return (self.int >> 48) & 0xff # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 283, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyLong_RshiftObjC(__pyx_t_1, __pyx_mstate_global->__pyx_int_48, 48, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 283, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyLong_AndObjC(__pyx_t_2, __pyx_mstate_global->__pyx_int_255, 0xff, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 283, __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; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":281 + * return (self.int >> 56) & 0xff + * + * @property # <<<<<<<<<<<<<< + * def clock_seq_low(self): + * return (self.int >> 48) & 0xff +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.clock_seq_low.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":285 + * return (self.int >> 48) & 0xff + * + * @property # <<<<<<<<<<<<<< + * def time(self): + * return (((self.time_hi_version & 0x0fff) << 48) | +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_4time_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_4time_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_4time___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_4time___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":287 + * @property + * def time(self): + * return (((self.time_hi_version & 0x0fff) << 48) | # <<<<<<<<<<<<<< + * (self.time_mid << 32) | self.time_low) + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_time_hi_version); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 287, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyLong_AndObjC(__pyx_t_1, __pyx_mstate_global->__pyx_int_4095, 0x0fff, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 287, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyLong_LshiftObjC(__pyx_t_2, __pyx_mstate_global->__pyx_int_48, 48, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 287, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":288 + * def time(self): + * return (((self.time_hi_version & 0x0fff) << 48) | + * (self.time_mid << 32) | self.time_low) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_time_mid); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 288, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyLong_LshiftObjC(__pyx_t_2, __pyx_mstate_global->__pyx_int_32, 32, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 288, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":287 + * @property + * def time(self): + * return (((self.time_hi_version & 0x0fff) << 48) | # <<<<<<<<<<<<<< + * (self.time_mid << 32) | self.time_low) + * +*/ + __pyx_t_2 = PyNumber_Or(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 287, __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; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":288 + * def time(self): + * return (((self.time_hi_version & 0x0fff) << 48) | + * (self.time_mid << 32) | self.time_low) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_time_low); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 288, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyNumber_Or(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 288, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":285 + * return (self.int >> 48) & 0xff + * + * @property # <<<<<<<<<<<<<< + * def time(self): + * return (((self.time_hi_version & 0x0fff) << 48) | +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.time.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":290 + * (self.time_mid << 32) | self.time_low) + * + * @property # <<<<<<<<<<<<<< + * def clock_seq(self): + * return (((self.clock_seq_hi_variant & 0x3f) << 8) | +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_9clock_seq_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_9clock_seq_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_9clock_seq___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_9clock_seq___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":292 + * @property + * def clock_seq(self): + * return (((self.clock_seq_hi_variant & 0x3f) << 8) | # <<<<<<<<<<<<<< + * self.clock_seq_low) + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_clock_seq_hi_variant); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 292, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyLong_AndObjC(__pyx_t_1, __pyx_mstate_global->__pyx_int_63, 0x3f, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 292, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyLong_LshiftObjC(__pyx_t_2, __pyx_mstate_global->__pyx_int_8, 8, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 292, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":293 + * def clock_seq(self): + * return (((self.clock_seq_hi_variant & 0x3f) << 8) | + * self.clock_seq_low) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_clock_seq_low); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 293, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":292 + * @property + * def clock_seq(self): + * return (((self.clock_seq_hi_variant & 0x3f) << 8) | # <<<<<<<<<<<<<< + * self.clock_seq_low) + * +*/ + __pyx_t_3 = PyNumber_Or(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 292, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":290 + * (self.time_mid << 32) | self.time_low) + * + * @property # <<<<<<<<<<<<<< + * def clock_seq(self): + * return (((self.clock_seq_hi_variant & 0x3f) << 8) | +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.clock_seq.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":295 + * self.clock_seq_low) + * + * @property # <<<<<<<<<<<<<< + * def node(self): + * return self.int & 0xffffffffffff +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_4node_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_4node_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_4node___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_4node___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":297 + * @property + * def node(self): + * return self.int & 0xffffffffffff # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 297, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyNumber_And(__pyx_t_1, __pyx_mstate_global->__pyx_int_0xffffffffffff); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 297, __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; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":295 + * self.clock_seq_low) + * + * @property # <<<<<<<<<<<<<< + * def node(self): + * return self.int & 0xffffffffffff +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.node.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":299 + * return self.int & 0xffffffffffff + * + * @property # <<<<<<<<<<<<<< + * def urn(self): + * return 'urn:uuid:' + str(self) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3urn_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3urn_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3urn___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3urn___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":301 + * @property + * def urn(self): + * return 'urn:uuid:' + str(self) # <<<<<<<<<<<<<< + * + * @property +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __Pyx_PyObject_Unicode(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 301, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_urn_uuid, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 301, __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; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":299 + * return self.int & 0xffffffffffff + * + * @property # <<<<<<<<<<<<<< + * def urn(self): + * return 'urn:uuid:' + str(self) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.urn.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":303 + * return 'urn:uuid:' + str(self) + * + * @property # <<<<<<<<<<<<<< + * def variant(self): + * if not self.int & (0x8000 << 48): +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7variant_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7variant_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7variant___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7variant___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_t_3; + int __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":305 + * @property + * def variant(self): + * if not self.int & (0x8000 << 48): # <<<<<<<<<<<<<< + * return uuid.RESERVED_NCS + * elif not self.int & (0x4000 << 48): +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 305, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyNumber_And(__pyx_t_1, __pyx_mstate_global->__pyx_int_0x8000000000000000); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 305, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = (!__pyx_t_3); + if (__pyx_t_4) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":306 + * def variant(self): + * if not self.int & (0x8000 << 48): + * return uuid.RESERVED_NCS # <<<<<<<<<<<<<< + * elif not self.int & (0x4000 << 48): + * return uuid.RFC_4122 +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_uuid); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 306, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_RESERVED_NCS); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 306, __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; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":305 + * @property + * def variant(self): + * if not self.int & (0x8000 << 48): # <<<<<<<<<<<<<< + * return uuid.RESERVED_NCS + * elif not self.int & (0x4000 << 48): +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":307 + * if not self.int & (0x8000 << 48): + * return uuid.RESERVED_NCS + * elif not self.int & (0x4000 << 48): # <<<<<<<<<<<<<< + * return uuid.RFC_4122 + * elif not self.int & (0x2000 << 48): +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 307, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyNumber_And(__pyx_t_1, __pyx_mstate_global->__pyx_int_0x4000000000000000); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 307, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 307, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_3 = (!__pyx_t_4); + if (__pyx_t_3) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":308 + * return uuid.RESERVED_NCS + * elif not self.int & (0x4000 << 48): + * return uuid.RFC_4122 # <<<<<<<<<<<<<< + * elif not self.int & (0x2000 << 48): + * return uuid.RESERVED_MICROSOFT +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_uuid); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 308, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_RFC_4122); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 308, __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; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":307 + * if not self.int & (0x8000 << 48): + * return uuid.RESERVED_NCS + * elif not self.int & (0x4000 << 48): # <<<<<<<<<<<<<< + * return uuid.RFC_4122 + * elif not self.int & (0x2000 << 48): +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":309 + * elif not self.int & (0x4000 << 48): + * return uuid.RFC_4122 + * elif not self.int & (0x2000 << 48): # <<<<<<<<<<<<<< + * return uuid.RESERVED_MICROSOFT + * else: +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 309, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyNumber_And(__pyx_t_1, __pyx_mstate_global->__pyx_int_0x2000000000000000); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 309, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 309, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = (!__pyx_t_3); + if (__pyx_t_4) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":310 + * return uuid.RFC_4122 + * elif not self.int & (0x2000 << 48): + * return uuid.RESERVED_MICROSOFT # <<<<<<<<<<<<<< + * else: + * return uuid.RESERVED_FUTURE +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_uuid); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 310, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_RESERVED_MICROSOFT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 310, __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; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":309 + * elif not self.int & (0x4000 << 48): + * return uuid.RFC_4122 + * elif not self.int & (0x2000 << 48): # <<<<<<<<<<<<<< + * return uuid.RESERVED_MICROSOFT + * else: +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":312 + * return uuid.RESERVED_MICROSOFT + * else: + * return uuid.RESERVED_FUTURE # <<<<<<<<<<<<<< + * + * @property +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_uuid); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 312, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_RESERVED_FUTURE); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 312, __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; + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":303 + * return 'urn:uuid:' + str(self) + * + * @property # <<<<<<<<<<<<<< + * def variant(self): + * if not self.int & (0x8000 << 48): +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.variant.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/uuid.pyx":314 + * return uuid.RESERVED_FUTURE + * + * @property # <<<<<<<<<<<<<< + * def version(self): + * # The version bits are only meaningful for RFC 4122 UUIDs. +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7version_1__get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7version_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_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7version___get__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7version___get__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__get__", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":317 + * def version(self): + * # The version bits are only meaningful for RFC 4122 UUIDs. + * if self.variant == uuid.RFC_4122: # <<<<<<<<<<<<<< + * return int((self.int >> 76) & 0xf) + * +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_variant); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 317, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_uuid); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 317, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_RFC_4122); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 317, __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(1, 317, __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(1, 317, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_4) { + + /* "async_gaussdb/gaussdbproto/uuid.pyx":318 + * # The version bits are only meaningful for RFC 4122 UUIDs. + * if self.variant == uuid.RFC_4122: + * return int((self.int >> 76) & 0xf) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_int); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 318, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyNumber_Rshift(__pyx_t_2, __pyx_mstate_global->__pyx_int_76); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 318, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyLong_AndObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_15, 0xf, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 318, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 318, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":317 + * def version(self): + * # The version bits are only meaningful for RFC 4122 UUIDs. + * if self.variant == uuid.RFC_4122: # <<<<<<<<<<<<<< + * return int((self.int >> 76) & 0xf) + * +*/ + } + + /* "async_gaussdb/gaussdbproto/uuid.pyx":314 + * return uuid.RESERVED_FUTURE + * + * @property # <<<<<<<<<<<<<< + * def version(self): + * # The version bits are only meaningful for RFC 4122 UUIDs. +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.UUID.version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/context.pyx":10 + * cdef class CodecContext: + * + * cpdef get_text_codec(self): # <<<<<<<<<<<<<< + * raise NotImplementedError + * +*/ + +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_1get_text_codec(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_get_text_codec(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self, int __pyx_skip_dispatch) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_text_codec", 0); + /* 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_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext && + __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_get_text_codec); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_1get_text_codec)) { + __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(__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 10, __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 + } + + /* "async_gaussdb/gaussdbproto/codecs/context.pyx":11 + * + * cpdef get_text_codec(self): + * raise NotImplementedError # <<<<<<<<<<<<<< + * + * cdef is_encoding_utf8(self): +*/ + __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0); + __PYX_ERR(4, 11, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/context.pyx":10 + * cdef class CodecContext: + * + * cpdef get_text_codec(self): # <<<<<<<<<<<<<< + * raise NotImplementedError + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.CodecContext.get_text_codec", __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_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_1get_text_codec(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_1get_text_codec = {"get_text_codec", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_1get_text_codec, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_1get_text_codec(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("get_text_codec (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("get_text_codec", 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("get_text_codec", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_get_text_codec(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_get_text_codec(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_text_codec", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_get_text_codec(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 10, __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("async_gaussdb.gaussdbproto.gaussdbproto.CodecContext.get_text_codec", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/context.pyx":13 + * raise NotImplementedError + * + * cdef is_encoding_utf8(self): # <<<<<<<<<<<<<< + * raise NotImplementedError + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_is_encoding_utf8(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("is_encoding_utf8", 0); + + /* "async_gaussdb/gaussdbproto/codecs/context.pyx":14 + * + * cdef is_encoding_utf8(self): + * raise NotImplementedError # <<<<<<<<<<<<<< + * + * cpdef get_json_decoder(self): +*/ + __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0); + __PYX_ERR(4, 14, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/context.pyx":13 + * raise NotImplementedError + * + * cdef is_encoding_utf8(self): # <<<<<<<<<<<<<< + * raise NotImplementedError + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.CodecContext.is_encoding_utf8", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/context.pyx":16 + * raise NotImplementedError + * + * cpdef get_json_decoder(self): # <<<<<<<<<<<<<< + * raise NotImplementedError + * +*/ + +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_3get_json_decoder(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_get_json_decoder(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self, int __pyx_skip_dispatch) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_json_decoder", 0); + /* 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_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext && + __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_get_json_decoder); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_3get_json_decoder)) { + __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(__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 16, __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 + } + + /* "async_gaussdb/gaussdbproto/codecs/context.pyx":17 + * + * cpdef get_json_decoder(self): + * raise NotImplementedError # <<<<<<<<<<<<<< + * + * cdef is_decoding_json(self): +*/ + __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0); + __PYX_ERR(4, 17, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/context.pyx":16 + * raise NotImplementedError + * + * cpdef get_json_decoder(self): # <<<<<<<<<<<<<< + * raise NotImplementedError + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.CodecContext.get_json_decoder", __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_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_3get_json_decoder(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_3get_json_decoder = {"get_json_decoder", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_3get_json_decoder, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_3get_json_decoder(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("get_json_decoder (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("get_json_decoder", 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("get_json_decoder", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_2get_json_decoder(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_2get_json_decoder(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_json_decoder", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_get_json_decoder(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 16, __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("async_gaussdb.gaussdbproto.gaussdbproto.CodecContext.get_json_decoder", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/context.pyx":19 + * raise NotImplementedError + * + * cdef is_decoding_json(self): # <<<<<<<<<<<<<< + * return False + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_is_decoding_json(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("is_decoding_json", 0); + + /* "async_gaussdb/gaussdbproto/codecs/context.pyx":20 + * + * cdef is_decoding_json(self): + * return False # <<<<<<<<<<<<<< + * + * cpdef get_json_encoder(self): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/context.pyx":19 + * raise NotImplementedError + * + * cdef is_decoding_json(self): # <<<<<<<<<<<<<< + * return False + * +*/ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/context.pyx":22 + * return False + * + * cpdef get_json_encoder(self): # <<<<<<<<<<<<<< + * raise NotImplementedError + * +*/ + +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_5get_json_encoder(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_get_json_encoder(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self, int __pyx_skip_dispatch) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_json_encoder", 0); + /* 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_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext && + __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_get_json_encoder); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_5get_json_encoder)) { + __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(__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 22, __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 + } + + /* "async_gaussdb/gaussdbproto/codecs/context.pyx":23 + * + * cpdef get_json_encoder(self): + * raise NotImplementedError # <<<<<<<<<<<<<< + * + * cdef is_encoding_json(self): +*/ + __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0); + __PYX_ERR(4, 23, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/context.pyx":22 + * return False + * + * cpdef get_json_encoder(self): # <<<<<<<<<<<<<< + * raise NotImplementedError + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.CodecContext.get_json_encoder", __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_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_5get_json_encoder(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_5get_json_encoder = {"get_json_encoder", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_5get_json_encoder, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_5get_json_encoder(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("get_json_encoder (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("get_json_encoder", 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("get_json_encoder", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_4get_json_encoder(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_4get_json_encoder(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("get_json_encoder", 0); + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_get_json_encoder(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 22, __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("async_gaussdb.gaussdbproto.gaussdbproto.CodecContext.get_json_encoder", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/context.pyx":25 + * raise NotImplementedError + * + * cdef is_encoding_json(self): # <<<<<<<<<<<<<< + * return False +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_is_encoding_json(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("is_encoding_json", 0); + + /* "async_gaussdb/gaussdbproto/codecs/context.pyx":26 + * + * cdef is_encoding_json(self): + * return False # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(Py_False); + __pyx_r = Py_False; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/context.pyx":25 + * raise NotImplementedError + * + * cdef is_encoding_json(self): # <<<<<<<<<<<<<< + * return False +*/ + + /* function exit code */ + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_7__reduce_cython__(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_7__reduce_cython__(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("__reduce_cython__ (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("__reduce_cython__", 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("__reduce_cython__", __pyx_kwds); return NULL;} + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_6__reduce_cython__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_self)); + + /* function exit code */ + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_6__reduce_cython__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self) { + PyObject *__pyx_v_state = 0; + PyObject *__pyx_v__dict = 0; + int __pyx_v_use_setstate; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__reduce_cython__", 0); + + /* "(tree fragment)":5 + * cdef object _dict + * cdef bint use_setstate + * state = () # <<<<<<<<<<<<<< + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: +*/ + __Pyx_INCREF(__pyx_mstate_global->__pyx_empty_tuple); + __pyx_v_state = __pyx_mstate_global->__pyx_empty_tuple; + + /* "(tree fragment)":6 + * cdef bint use_setstate + * state = () + * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< + * if _dict is not None: + * state += (_dict,) +*/ + __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v__dict = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":7 + * state = () + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True +*/ + __pyx_t_2 = (__pyx_v__dict != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":8 + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: + * state += (_dict,) # <<<<<<<<<<<<<< + * use_setstate = True + * else: +*/ + __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_v__dict); + __Pyx_GIVEREF(__pyx_v__dict); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict) != (0)) __PYX_ERR(3, 8, __pyx_L1_error); + __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "(tree fragment)":9 + * if _dict is not None: + * state += (_dict,) + * use_setstate = True # <<<<<<<<<<<<<< + * else: + * use_setstate = False +*/ + __pyx_v_use_setstate = 1; + + /* "(tree fragment)":7 + * state = () + * _dict = getattr(self, '__dict__', None) + * if _dict is not None: # <<<<<<<<<<<<<< + * state += (_dict,) + * use_setstate = True +*/ + goto __pyx_L3; + } + + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = False # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_CodecContext, (type(self), 0xe3b0c44, None), state +*/ + /*else*/ { + __pyx_v_use_setstate = 0; + } + __pyx_L3:; + + /* "(tree fragment)":12 + * else: + * use_setstate = False + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_CodecContext, (type(self), 0xe3b0c44, None), state + * else: +*/ + if (__pyx_v_use_setstate) { + + /* "(tree fragment)":13 + * use_setstate = False + * if use_setstate: + * return __pyx_unpickle_CodecContext, (type(self), 0xe3b0c44, None), state # <<<<<<<<<<<<<< + * else: + * return __pyx_unpickle_CodecContext, (type(self), 0xe3b0c44, state) +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_CodecContext); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))) != (0)) __PYX_ERR(3, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_mstate_global->__pyx_int_238750788); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_238750788); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_mstate_global->__pyx_int_238750788) != (0)) __PYX_ERR(3, 13, __pyx_L1_error); + __Pyx_INCREF(Py_None); + __Pyx_GIVEREF(Py_None); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None) != (0)) __PYX_ERR(3, 13, __pyx_L1_error); + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3) != (0)) __PYX_ERR(3, 13, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1) != (0)) __PYX_ERR(3, 13, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state) != (0)) __PYX_ERR(3, 13, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "(tree fragment)":12 + * else: + * use_setstate = False + * if use_setstate: # <<<<<<<<<<<<<< + * return __pyx_unpickle_CodecContext, (type(self), 0xe3b0c44, None), state + * else: +*/ + } + + /* "(tree fragment)":15 + * return __pyx_unpickle_CodecContext, (type(self), 0xe3b0c44, None), state + * else: + * return __pyx_unpickle_CodecContext, (type(self), 0xe3b0c44, state) # <<<<<<<<<<<<<< + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_CodecContext__set_state(self, __pyx_state) +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_CodecContext); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))) != (0)) __PYX_ERR(3, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_mstate_global->__pyx_int_238750788); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_238750788); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_mstate_global->__pyx_int_238750788) != (0)) __PYX_ERR(3, 15, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_state); + __Pyx_GIVEREF(__pyx_v_state); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state) != (0)) __PYX_ERR(3, 15, __pyx_L1_error); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4) != (0)) __PYX_ERR(3, 15, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(3, 15, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + } + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.CodecContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_state); + __Pyx_XDECREF(__pyx_v__dict); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":16 + * else: + * return __pyx_unpickle_CodecContext, (type(self), 0xe3b0c44, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_CodecContext__set_state(self, __pyx_state) +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_9__setstate_cython__(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_9__setstate_cython__(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___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[1] = {0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__setstate_cython__ (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_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 16, __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(3, 16, __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, "__setstate_cython__", 0) < 0) __PYX_ERR(3, 16, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(3, 16, __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(3, 16, __pyx_L3_error) + } + __pyx_v___pyx_state = values[0]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 16, __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("async_gaussdb.gaussdbproto.gaussdbproto.CodecContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_8__setstate_cython__(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_self), __pyx_v___pyx_state); + + /* 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_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_8__setstate_cython__(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_self, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__setstate_cython__", 0); + + /* "(tree fragment)":17 + * return __pyx_unpickle_CodecContext, (type(self), 0xe3b0c44, state) + * def __setstate_cython__(self, __pyx_state): + * __pyx_unpickle_CodecContext__set_state(self, __pyx_state) # <<<<<<<<<<<<<< +*/ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(3, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto___pyx_unpickle_CodecContext__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_CodecContext, (type(self), 0xe3b0c44, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_CodecContext__set_state(self, __pyx_state) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.CodecContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":8 + * + * + * cdef bytea_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * cdef: + * Py_buffer pybuf +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_bytea_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_wbuf, PyObject *__pyx_v_obj) { + Py_buffer __pyx_v_pybuf; + int __pyx_v_pybuf_used; + char *__pyx_v_buf; + Py_ssize_t __pyx_v_len; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + Py_ssize_t __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + int __pyx_t_5; + char const *__pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("bytea_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":11 + * cdef: + * Py_buffer pybuf + * bint pybuf_used = False # <<<<<<<<<<<<<< + * char *buf + * ssize_t len +*/ + __pyx_v_pybuf_used = 0; + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":15 + * ssize_t len + * + * if cpython.PyBytes_CheckExact(obj): # <<<<<<<<<<<<<< + * buf = cpython.PyBytes_AS_STRING(obj) + * len = cpython.Py_SIZE(obj) +*/ + __pyx_t_1 = PyBytes_CheckExact(__pyx_v_obj); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":16 + * + * if cpython.PyBytes_CheckExact(obj): + * buf = cpython.PyBytes_AS_STRING(obj) # <<<<<<<<<<<<<< + * len = cpython.Py_SIZE(obj) + * else: +*/ + __pyx_v_buf = PyBytes_AS_STRING(__pyx_v_obj); + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":17 + * if cpython.PyBytes_CheckExact(obj): + * buf = cpython.PyBytes_AS_STRING(obj) + * len = cpython.Py_SIZE(obj) # <<<<<<<<<<<<<< + * else: + * cpython.PyObject_GetBuffer(obj, &pybuf, cpython.PyBUF_SIMPLE) +*/ + __pyx_v_len = Py_SIZE(__pyx_v_obj); + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":15 + * ssize_t len + * + * if cpython.PyBytes_CheckExact(obj): # <<<<<<<<<<<<<< + * buf = cpython.PyBytes_AS_STRING(obj) + * len = cpython.Py_SIZE(obj) +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":19 + * len = cpython.Py_SIZE(obj) + * else: + * cpython.PyObject_GetBuffer(obj, &pybuf, cpython.PyBUF_SIMPLE) # <<<<<<<<<<<<<< + * pybuf_used = True + * buf = pybuf.buf +*/ + /*else*/ { + __pyx_t_2 = PyObject_GetBuffer(__pyx_v_obj, (&__pyx_v_pybuf), PyBUF_SIMPLE); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 19, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":20 + * else: + * cpython.PyObject_GetBuffer(obj, &pybuf, cpython.PyBUF_SIMPLE) + * pybuf_used = True # <<<<<<<<<<<<<< + * buf = pybuf.buf + * len = pybuf.len +*/ + __pyx_v_pybuf_used = 1; + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":21 + * cpython.PyObject_GetBuffer(obj, &pybuf, cpython.PyBUF_SIMPLE) + * pybuf_used = True + * buf = pybuf.buf # <<<<<<<<<<<<<< + * len = pybuf.len + * +*/ + __pyx_v_buf = ((char *)__pyx_v_pybuf.buf); + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":22 + * pybuf_used = True + * buf = pybuf.buf + * len = pybuf.len # <<<<<<<<<<<<<< + * + * try: +*/ + __pyx_t_3 = __pyx_v_pybuf.len; + __pyx_v_len = __pyx_t_3; + } + __pyx_L3:; + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":24 + * len = pybuf.len + * + * try: # <<<<<<<<<<<<<< + * wbuf.write_int32(len) + * wbuf.write_cstr(buf, len) +*/ + /*try:*/ { + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":25 + * + * try: + * wbuf.write_int32(len) # <<<<<<<<<<<<<< + * wbuf.write_cstr(buf, len) + * finally: +*/ + __pyx_t_4 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_wbuf, ((int32_t)__pyx_v_len)); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 25, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":26 + * try: + * wbuf.write_int32(len) + * wbuf.write_cstr(buf, len) # <<<<<<<<<<<<<< + * finally: + * if pybuf_used: +*/ + __pyx_t_4 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_wbuf, __pyx_v_buf, __pyx_v_len); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 26, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + } + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":28 + * wbuf.write_cstr(buf, len) + * finally: + * if pybuf_used: # <<<<<<<<<<<<<< + * cpython.PyBuffer_Release(&pybuf) + * +*/ + /*finally:*/ { + /*normal exit:*/{ + if (__pyx_v_pybuf_used) { + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":29 + * finally: + * if pybuf_used: + * cpython.PyBuffer_Release(&pybuf) # <<<<<<<<<<<<<< + * + * +*/ + PyBuffer_Release((&__pyx_v_pybuf)); + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":28 + * wbuf.write_cstr(buf, len) + * finally: + * if pybuf_used: # <<<<<<<<<<<<<< + * cpython.PyBuffer_Release(&pybuf) + * +*/ + } + 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_4); __pyx_t_4 = 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_2 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename; + { + if (__pyx_v_pybuf_used) { + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":29 + * finally: + * if pybuf_used: + * cpython.PyBuffer_Release(&pybuf) # <<<<<<<<<<<<<< + * + * +*/ + PyBuffer_Release((&__pyx_v_pybuf)); + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":28 + * wbuf.write_cstr(buf, len) + * finally: + * if pybuf_used: # <<<<<<<<<<<<<< + * cpython.PyBuffer_Release(&pybuf) + * +*/ + } + } + __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_2; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6; + goto __pyx_L1_error; + } + __pyx_L6:; + } + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":8 + * + * + * cdef bytea_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * cdef: + * Py_buffer pybuf +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.bytea_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":32 + * + * + * cdef bytea_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef ssize_t buf_len = buf.len + * return cpython.PyBytes_FromStringAndSize(frb_read_all(buf), buf_len) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_bytea_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + Py_ssize_t __pyx_v_buf_len; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + char const *__pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("bytea_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":33 + * + * cdef bytea_decode(CodecContext settings, FRBuffer *buf): + * cdef ssize_t buf_len = buf.len # <<<<<<<<<<<<<< + * return cpython.PyBytes_FromStringAndSize(frb_read_all(buf), buf_len) +*/ + __pyx_t_1 = __pyx_v_buf->len; + __pyx_v_buf_len = __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":34 + * cdef bytea_decode(CodecContext settings, FRBuffer *buf): + * cdef ssize_t buf_len = buf.len + * return cpython.PyBytes_FromStringAndSize(frb_read_all(buf), buf_len) # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read_all(__pyx_v_buf); if (unlikely(__pyx_t_2 == ((char const *)0) && PyErr_Occurred())) __PYX_ERR(11, 34, __pyx_L1_error) + __pyx_t_3 = PyBytes_FromStringAndSize(__pyx_t_2, __pyx_v_buf_len); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/bytea.pyx":32 + * + * + * cdef bytea_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef ssize_t buf_len = buf.len + * return cpython.PyBytes_FromStringAndSize(frb_read_all(buf), buf_len) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.bytea_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/text.pyx":8 + * + * + * cdef inline as_gaussdb_string_and_size( # <<<<<<<<<<<<<< + * CodecContext settings, obj, char **cstr, ssize_t *size): + * +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_as_gaussdb_string_and_size(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, PyObject *__pyx_v_obj, char **__pyx_v_cstr, Py_ssize_t *__pyx_v_size) { + PyObject *__pyx_v_encoded = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + char const *__pyx_t_9; + int __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("as_gaussdb_string_and_size", 0); + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":11 + * CodecContext settings, obj, char **cstr, ssize_t *size): + * + * if not cpython.PyUnicode_Check(obj): # <<<<<<<<<<<<<< + * raise TypeError('expected str, got {}'.format(type(obj).__name__)) + * +*/ + __pyx_t_1 = (!PyUnicode_Check(__pyx_v_obj)); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":12 + * + * if not cpython.PyUnicode_Check(obj): + * raise TypeError('expected str, got {}'.format(type(obj).__name__)) # <<<<<<<<<<<<<< + * + * if settings.is_encoding_utf8(): +*/ + __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_builtin_TypeError); + __pyx_t_4 = __pyx_builtin_TypeError; + __pyx_t_6 = __pyx_mstate_global->__pyx_kp_u_expected_str_got; + __Pyx_INCREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_obj)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_7}; + __pyx_t_5 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (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_5)) __PYX_ERR(12, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __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_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 12, __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(12, 12, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":11 + * CodecContext settings, obj, char **cstr, ssize_t *size): + * + * if not cpython.PyUnicode_Check(obj): # <<<<<<<<<<<<<< + * raise TypeError('expected str, got {}'.format(type(obj).__name__)) + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":14 + * raise TypeError('expected str, got {}'.format(type(obj).__name__)) + * + * if settings.is_encoding_utf8(): # <<<<<<<<<<<<<< + * cstr[0] = cpythonx.PyUnicode_AsUTF8AndSize(obj, size) + * else: +*/ + __pyx_t_2 = ((struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_settings->__pyx_vtab)->is_encoding_utf8(__pyx_v_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 14, __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(12, 14, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":15 + * + * if settings.is_encoding_utf8(): + * cstr[0] = cpythonx.PyUnicode_AsUTF8AndSize(obj, size) # <<<<<<<<<<<<<< + * else: + * encoded = settings.get_text_codec().encode(obj)[0] +*/ + __pyx_t_9 = PyUnicode_AsUTF8AndSize(__pyx_v_obj, __pyx_v_size); if (unlikely(__pyx_t_9 == ((char const *)0))) __PYX_ERR(12, 15, __pyx_L1_error) + (__pyx_v_cstr[0]) = ((char *)__pyx_t_9); + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":14 + * raise TypeError('expected str, got {}'.format(type(obj).__name__)) + * + * if settings.is_encoding_utf8(): # <<<<<<<<<<<<<< + * cstr[0] = cpythonx.PyUnicode_AsUTF8AndSize(obj, size) + * else: +*/ + goto __pyx_L4; + } + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":17 + * cstr[0] = cpythonx.PyUnicode_AsUTF8AndSize(obj, size) + * else: + * encoded = settings.get_text_codec().encode(obj)[0] # <<<<<<<<<<<<<< + * cpython.PyBytes_AsStringAndSize(encoded, cstr, size) + * +*/ + /*else*/ { + __pyx_t_5 = ((struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_settings->__pyx_vtab)->get_text_codec(__pyx_v_settings, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __pyx_t_5; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_obj}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__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_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_encoded = __pyx_t_5; + __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":18 + * else: + * encoded = settings.get_text_codec().encode(obj)[0] + * cpython.PyBytes_AsStringAndSize(encoded, cstr, size) # <<<<<<<<<<<<<< + * + * if size[0] > 0x7fffffff: +*/ + __pyx_t_10 = PyBytes_AsStringAndSize(__pyx_v_encoded, __pyx_v_cstr, ((Py_ssize_t *)__pyx_v_size)); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(12, 18, __pyx_L1_error) + } + __pyx_L4:; + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":20 + * cpython.PyBytes_AsStringAndSize(encoded, cstr, size) + * + * if size[0] > 0x7fffffff: # <<<<<<<<<<<<<< + * raise ValueError('string too long') + * +*/ + __pyx_t_1 = ((__pyx_v_size[0]) > 0x7fffffff); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":21 + * + * if size[0] > 0x7fffffff: + * raise ValueError('string too long') # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_4 = __pyx_builtin_ValueError; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_string_too_long}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__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_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 21, __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(12, 21, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":20 + * cpython.PyBytes_AsStringAndSize(encoded, cstr, size) + * + * if size[0] > 0x7fffffff: # <<<<<<<<<<<<<< + * raise ValueError('string too long') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":8 + * + * + * cdef inline as_gaussdb_string_and_size( # <<<<<<<<<<<<<< + * CodecContext settings, obj, char **cstr, ssize_t *size): + * +*/ + + /* 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_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.as_gaussdb_string_and_size", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_encoded); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/text.pyx":24 + * + * + * cdef text_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * char *str +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_text_encode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + char *__pyx_v_str; + Py_ssize_t __pyx_v_size; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("text_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":29 + * ssize_t size + * + * as_gaussdb_string_and_size(settings, obj, &str, &size) # <<<<<<<<<<<<<< + * + * buf.write_int32(size) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_as_gaussdb_string_and_size(__pyx_v_settings, __pyx_v_obj, (&__pyx_v_str), (&__pyx_v_size)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":31 + * as_gaussdb_string_and_size(settings, obj, &str, &size) + * + * buf.write_int32(size) # <<<<<<<<<<<<<< + * buf.write_cstr(str, size) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, ((int32_t)__pyx_v_size)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 31, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":32 + * + * buf.write_int32(size) + * buf.write_cstr(str, size) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_buf, __pyx_v_str, __pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":24 + * + * + * cdef text_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * char *str +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.text_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/text.pyx":35 + * + * + * cdef inline decode_gaussdb_string(CodecContext settings, const char* data, # <<<<<<<<<<<<<< + * ssize_t len): + * +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_decode_gaussdb_string(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, char const *__pyx_v_data, Py_ssize_t __pyx_v_len) { + PyObject *__pyx_v_bytes = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("decode_gaussdb_string", 0); + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":38 + * ssize_t len): + * + * if settings.is_encoding_utf8(): # <<<<<<<<<<<<<< + * # decode UTF-8 in strict mode + * return cpython.PyUnicode_DecodeUTF8(data, len, NULL) +*/ + __pyx_t_1 = ((struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_settings->__pyx_vtab)->is_encoding_utf8(__pyx_v_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 38, __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(12, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":40 + * if settings.is_encoding_utf8(): + * # decode UTF-8 in strict mode + * return cpython.PyUnicode_DecodeUTF8(data, len, NULL) # <<<<<<<<<<<<<< + * else: + * bytes = cpython.PyBytes_FromStringAndSize(data, len) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = PyUnicode_DecodeUTF8(__pyx_v_data, __pyx_v_len, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 40, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":38 + * ssize_t len): + * + * if settings.is_encoding_utf8(): # <<<<<<<<<<<<<< + * # decode UTF-8 in strict mode + * return cpython.PyUnicode_DecodeUTF8(data, len, NULL) +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":42 + * return cpython.PyUnicode_DecodeUTF8(data, len, NULL) + * else: + * bytes = cpython.PyBytes_FromStringAndSize(data, len) # <<<<<<<<<<<<<< + * return settings.get_text_codec().decode(bytes)[0] + * +*/ + /*else*/ { + __pyx_t_1 = PyBytes_FromStringAndSize(__pyx_v_data, __pyx_v_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 42, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_bytes = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":43 + * else: + * bytes = cpython.PyBytes_FromStringAndSize(data, len) + * return settings.get_text_codec().decode(bytes)[0] # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = ((struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_settings->__pyx_vtab)->get_text_codec(__pyx_v_settings, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 43, __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_bytes}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_decode, __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_1)) __PYX_ERR(12, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":35 + * + * + * cdef inline decode_gaussdb_string(CodecContext settings, const char* data, # <<<<<<<<<<<<<< + * ssize_t len): + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.decode_gaussdb_string", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/text.pyx":46 + * + * + * cdef text_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef ssize_t buf_len = buf.len + * return decode_gaussdb_string(settings, frb_read_all(buf), buf_len) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_text_decode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + Py_ssize_t __pyx_v_buf_len; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + char const *__pyx_t_2; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("text_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":47 + * + * cdef text_decode(CodecContext settings, FRBuffer *buf): + * cdef ssize_t buf_len = buf.len # <<<<<<<<<<<<<< + * return decode_gaussdb_string(settings, frb_read_all(buf), buf_len) +*/ + __pyx_t_1 = __pyx_v_buf->len; + __pyx_v_buf_len = __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":48 + * cdef text_decode(CodecContext settings, FRBuffer *buf): + * cdef ssize_t buf_len = buf.len + * return decode_gaussdb_string(settings, frb_read_all(buf), buf_len) # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read_all(__pyx_v_buf); if (unlikely(__pyx_t_2 == ((char const *)0) && PyErr_Occurred())) __PYX_ERR(12, 48, __pyx_L1_error) + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_decode_gaussdb_string(__pyx_v_settings, __pyx_t_2, __pyx_v_buf_len); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/text.pyx":46 + * + * + * cdef text_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef ssize_t buf_len = buf.len + * return decode_gaussdb_string(settings, frb_read_all(buf), buf_len) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.text_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":62 + * + * + * cdef inline _local_timezone(): # <<<<<<<<<<<<<< + * d = datetime.datetime.now(datetime.timezone.utc).astimezone() + * return datetime.timezone(d.utcoffset()) +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__local_timezone(void) { + PyObject *__pyx_v_d = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_local_timezone", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":63 + * + * cdef inline _local_timezone(): + * d = datetime.datetime.now(datetime.timezone.utc).astimezone() # <<<<<<<<<<<<<< + * return datetime.timezone(d.utcoffset()) + * +*/ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_4 = __pyx_t_6; + __Pyx_INCREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_now, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__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_3)) __PYX_ERR(13, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_2 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_astimezone, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (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(13, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_d = __pyx_t_1; + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":64 + * cdef inline _local_timezone(): + * d = datetime.datetime.now(datetime.timezone.utc).astimezone() + * return datetime.timezone(d.utcoffset()) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_5 = __pyx_v_d; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_utcoffset, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_t_8 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_2}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __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_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 64, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":62 + * + * + * cdef inline _local_timezone(): # <<<<<<<<<<<<<< + * d = datetime.datetime.now(datetime.timezone.utc).astimezone() + * return datetime.timezone(d.utcoffset()) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto._local_timezone", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_d); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":67 + * + * + * cdef inline _encode_time(WriteBuffer buf, int64_t seconds, # <<<<<<<<<<<<<< + * int32_t microseconds): + * # XXX: add support for double timestamps +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__encode_time(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, int64_t __pyx_v_seconds, int32_t __pyx_v_microseconds) { + int64_t __pyx_v_ts; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_encode_time", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":71 + * # XXX: add support for double timestamps + * # int64 timestamps, + * cdef int64_t ts = seconds * 1000000 + microseconds # <<<<<<<<<<<<<< + * + * if ts == infinity_datetime_ts: +*/ + __pyx_v_ts = ((__pyx_v_seconds * 0xF4240) + __pyx_v_microseconds); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":73 + * cdef int64_t ts = seconds * 1000000 + microseconds + * + * if ts == infinity_datetime_ts: # <<<<<<<<<<<<<< + * buf.write_int64(gaussdb_time64_infinity) + * elif ts == negative_infinity_datetime_ts: +*/ + __pyx_t_1 = (__pyx_v_ts == __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_infinity_datetime_ts); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":74 + * + * if ts == infinity_datetime_ts: + * buf.write_int64(gaussdb_time64_infinity) # <<<<<<<<<<<<<< + * elif ts == negative_infinity_datetime_ts: + * buf.write_int64(gaussdb_time64_negative_infinity) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(__pyx_v_buf, __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_time64_infinity); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 74, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":73 + * cdef int64_t ts = seconds * 1000000 + microseconds + * + * if ts == infinity_datetime_ts: # <<<<<<<<<<<<<< + * buf.write_int64(gaussdb_time64_infinity) + * elif ts == negative_infinity_datetime_ts: +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":75 + * if ts == infinity_datetime_ts: + * buf.write_int64(gaussdb_time64_infinity) + * elif ts == negative_infinity_datetime_ts: # <<<<<<<<<<<<<< + * buf.write_int64(gaussdb_time64_negative_infinity) + * else: +*/ + __pyx_t_1 = (__pyx_v_ts == __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_negative_infinity_datetime_ts); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":76 + * buf.write_int64(gaussdb_time64_infinity) + * elif ts == negative_infinity_datetime_ts: + * buf.write_int64(gaussdb_time64_negative_infinity) # <<<<<<<<<<<<<< + * else: + * buf.write_int64(ts) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(__pyx_v_buf, __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_time64_negative_infinity); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 76, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":75 + * if ts == infinity_datetime_ts: + * buf.write_int64(gaussdb_time64_infinity) + * elif ts == negative_infinity_datetime_ts: # <<<<<<<<<<<<<< + * buf.write_int64(gaussdb_time64_negative_infinity) + * else: +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":78 + * buf.write_int64(gaussdb_time64_negative_infinity) + * else: + * buf.write_int64(ts) # <<<<<<<<<<<<<< + * + * +*/ + /*else*/ { + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(__pyx_v_buf, __pyx_v_ts); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 78, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + } + __pyx_L3:; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":67 + * + * + * cdef inline _encode_time(WriteBuffer buf, int64_t seconds, # <<<<<<<<<<<<<< + * int32_t microseconds): + * # XXX: add support for double timestamps +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto._encode_time", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":81 + * + * + * cdef inline int32_t _decode_time(FRBuffer *buf, int64_t *seconds, # <<<<<<<<<<<<<< + * int32_t *microseconds): + * cdef int64_t ts = hton.unpack_int64(frb_read(buf, 8)) +*/ + +static CYTHON_INLINE int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__decode_time(struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf, int64_t *__pyx_v_seconds, int32_t *__pyx_v_microseconds) { + int64_t __pyx_v_ts; + int32_t __pyx_r; + char const *__pyx_t_1; + int __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":83 + * cdef inline int32_t _decode_time(FRBuffer *buf, int64_t *seconds, + * int32_t *microseconds): + * cdef int64_t ts = hton.unpack_int64(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * + * if ts == gaussdb_time64_infinity: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(13, 83, __pyx_L1_error) + __pyx_v_ts = unpack_int64(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":85 + * cdef int64_t ts = hton.unpack_int64(frb_read(buf, 8)) + * + * if ts == gaussdb_time64_infinity: # <<<<<<<<<<<<<< + * return 1 + * elif ts == gaussdb_time64_negative_infinity: +*/ + __pyx_t_2 = (__pyx_v_ts == __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_time64_infinity); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":86 + * + * if ts == gaussdb_time64_infinity: + * return 1 # <<<<<<<<<<<<<< + * elif ts == gaussdb_time64_negative_infinity: + * return -1 +*/ + __pyx_r = 1; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":85 + * cdef int64_t ts = hton.unpack_int64(frb_read(buf, 8)) + * + * if ts == gaussdb_time64_infinity: # <<<<<<<<<<<<<< + * return 1 + * elif ts == gaussdb_time64_negative_infinity: +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":87 + * if ts == gaussdb_time64_infinity: + * return 1 + * elif ts == gaussdb_time64_negative_infinity: # <<<<<<<<<<<<<< + * return -1 + * else: +*/ + __pyx_t_2 = (__pyx_v_ts == __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_time64_negative_infinity); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":88 + * return 1 + * elif ts == gaussdb_time64_negative_infinity: + * return -1 # <<<<<<<<<<<<<< + * else: + * seconds[0] = ts // 1000000 +*/ + __pyx_r = -1; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":87 + * if ts == gaussdb_time64_infinity: + * return 1 + * elif ts == gaussdb_time64_negative_infinity: # <<<<<<<<<<<<<< + * return -1 + * else: +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":90 + * return -1 + * else: + * seconds[0] = ts // 1000000 # <<<<<<<<<<<<<< + * microseconds[0] = (ts % 1000000) + * return 0 +*/ + /*else*/ { + (__pyx_v_seconds[0]) = __Pyx_div_int64_t(__pyx_v_ts, 0xF4240, 1); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":91 + * else: + * seconds[0] = ts // 1000000 + * microseconds[0] = (ts % 1000000) # <<<<<<<<<<<<<< + * return 0 + * +*/ + (__pyx_v_microseconds[0]) = ((int32_t)__Pyx_mod_int64_t(__pyx_v_ts, 0xF4240, 1)); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":92 + * seconds[0] = ts // 1000000 + * microseconds[0] = (ts % 1000000) + * return 0 # <<<<<<<<<<<<<< + * + * +*/ + __pyx_r = 0; + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":81 + * + * + * cdef inline int32_t _decode_time(FRBuffer *buf, int64_t *seconds, # <<<<<<<<<<<<<< + * int32_t *microseconds): + * cdef int64_t ts = hton.unpack_int64(frb_read(buf, 8)) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto._decode_time", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":95 + * + * + * cdef date_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * int32_t ordinal = cpython.PyLong_AsLong(obj.toordinal()) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_date_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + int32_t __pyx_v_ordinal; + int32_t __pyx_v_gaussdb_ordinal; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + size_t __pyx_t_3; + long __pyx_t_4; + int __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("date_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":97 + * cdef date_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef: + * int32_t ordinal = cpython.PyLong_AsLong(obj.toordinal()) # <<<<<<<<<<<<<< + * int32_t gaussdb_ordinal + * +*/ + __pyx_t_2 = __pyx_v_obj; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_3 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_toordinal, __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(13, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_t_4 = PyLong_AsLong(__pyx_t_1); if (unlikely(__pyx_t_4 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 97, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_ordinal = ((int32_t)__pyx_t_4); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":100 + * int32_t gaussdb_ordinal + * + * if ordinal == infinity_date_ord: # <<<<<<<<<<<<<< + * gaussdb_ordinal = gaussdb_date_infinity + * elif ordinal == negative_infinity_date_ord: +*/ + __pyx_t_5 = (__pyx_v_ordinal == __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_infinity_date_ord); + if (__pyx_t_5) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":101 + * + * if ordinal == infinity_date_ord: + * gaussdb_ordinal = gaussdb_date_infinity # <<<<<<<<<<<<<< + * elif ordinal == negative_infinity_date_ord: + * gaussdb_ordinal = gaussdb_date_negative_infinity +*/ + __pyx_v_gaussdb_ordinal = __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_date_infinity; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":100 + * int32_t gaussdb_ordinal + * + * if ordinal == infinity_date_ord: # <<<<<<<<<<<<<< + * gaussdb_ordinal = gaussdb_date_infinity + * elif ordinal == negative_infinity_date_ord: +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":102 + * if ordinal == infinity_date_ord: + * gaussdb_ordinal = gaussdb_date_infinity + * elif ordinal == negative_infinity_date_ord: # <<<<<<<<<<<<<< + * gaussdb_ordinal = gaussdb_date_negative_infinity + * else: +*/ + __pyx_t_5 = (__pyx_v_ordinal == __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_negative_infinity_date_ord); + if (__pyx_t_5) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":103 + * gaussdb_ordinal = gaussdb_date_infinity + * elif ordinal == negative_infinity_date_ord: + * gaussdb_ordinal = gaussdb_date_negative_infinity # <<<<<<<<<<<<<< + * else: + * gaussdb_ordinal = ordinal - gaussdb_date_offset_ord +*/ + __pyx_v_gaussdb_ordinal = __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_date_negative_infinity; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":102 + * if ordinal == infinity_date_ord: + * gaussdb_ordinal = gaussdb_date_infinity + * elif ordinal == negative_infinity_date_ord: # <<<<<<<<<<<<<< + * gaussdb_ordinal = gaussdb_date_negative_infinity + * else: +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":105 + * gaussdb_ordinal = gaussdb_date_negative_infinity + * else: + * gaussdb_ordinal = ordinal - gaussdb_date_offset_ord # <<<<<<<<<<<<<< + * + * buf.write_int32(4) +*/ + /*else*/ { + __pyx_v_gaussdb_ordinal = (__pyx_v_ordinal - __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_date_offset_ord); + } + __pyx_L3:; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":107 + * gaussdb_ordinal = ordinal - gaussdb_date_offset_ord + * + * buf.write_int32(4) # <<<<<<<<<<<<<< + * buf.write_int32(gaussdb_ordinal) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 4); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 107, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":108 + * + * buf.write_int32(4) + * buf.write_int32(gaussdb_ordinal) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, __pyx_v_gaussdb_ordinal); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":95 + * + * + * cdef date_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * int32_t ordinal = cpython.PyLong_AsLong(obj.toordinal()) +*/ + + /* 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("async_gaussdb.gaussdbproto.gaussdbproto.date_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":111 + * + * + * cdef date_encode_tuple(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * int32_t gaussdb_ordinal +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_date_encode_tuple(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + int32_t __pyx_v_gaussdb_ordinal; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int32_t __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("date_encode_tuple", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":115 + * int32_t gaussdb_ordinal + * + * if len(obj) != 1: # <<<<<<<<<<<<<< + * raise ValueError( + * 'date tuple encoder: expecting 1 element ' +*/ + __pyx_t_1 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(13, 115, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 1); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":116 + * + * if len(obj) != 1: + * raise ValueError( # <<<<<<<<<<<<<< + * 'date tuple encoder: expecting 1 element ' + * 'in tuple, got {}'.format(len(obj))) +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_5 = __pyx_builtin_ValueError; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":118 + * raise ValueError( + * 'date tuple encoder: expecting 1 element ' + * 'in tuple, got {}'.format(len(obj))) # <<<<<<<<<<<<<< + * + * gaussdb_ordinal = obj[0] +*/ + __pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_date_tuple_encoder_expecting_1_e; + __Pyx_INCREF(__pyx_t_7); + __pyx_t_1 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(13, 118, __pyx_L1_error) + __pyx_t_8 = PyLong_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_8}; + __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __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_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 116, __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(13, 116, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":115 + * int32_t gaussdb_ordinal + * + * if len(obj) != 1: # <<<<<<<<<<<<<< + * raise ValueError( + * 'date tuple encoder: expecting 1 element ' +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":120 + * 'in tuple, got {}'.format(len(obj))) + * + * gaussdb_ordinal = obj[0] # <<<<<<<<<<<<<< + * buf.write_int32(4) + * buf.write_int32(gaussdb_ordinal) +*/ + __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyLong_As_int32_t(__pyx_t_3); if (unlikely((__pyx_t_10 == ((int32_t)-1)) && PyErr_Occurred())) __PYX_ERR(13, 120, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_gaussdb_ordinal = __pyx_t_10; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":121 + * + * gaussdb_ordinal = obj[0] + * buf.write_int32(4) # <<<<<<<<<<<<<< + * buf.write_int32(gaussdb_ordinal) + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 4); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":122 + * gaussdb_ordinal = obj[0] + * buf.write_int32(4) + * buf.write_int32(gaussdb_ordinal) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, __pyx_v_gaussdb_ordinal); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":111 + * + * + * cdef date_encode_tuple(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * int32_t gaussdb_ordinal +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.date_encode_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":125 + * + * + * cdef date_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef int32_t gaussdb_ordinal = hton.unpack_int32(frb_read(buf, 4)) + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_date_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + int32_t __pyx_v_gaussdb_ordinal; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("date_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":126 + * + * cdef date_decode(CodecContext settings, FRBuffer *buf): + * cdef int32_t gaussdb_ordinal = hton.unpack_int32(frb_read(buf, 4)) # <<<<<<<<<<<<<< + * + * if gaussdb_ordinal == gaussdb_date_infinity: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(13, 126, __pyx_L1_error) + __pyx_v_gaussdb_ordinal = unpack_int32(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":128 + * cdef int32_t gaussdb_ordinal = hton.unpack_int32(frb_read(buf, 4)) + * + * if gaussdb_ordinal == gaussdb_date_infinity: # <<<<<<<<<<<<<< + * return infinity_date + * elif gaussdb_ordinal == gaussdb_date_negative_infinity: +*/ + __pyx_t_2 = (__pyx_v_gaussdb_ordinal == __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_date_infinity); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":129 + * + * if gaussdb_ordinal == gaussdb_date_infinity: + * return infinity_date # <<<<<<<<<<<<<< + * elif gaussdb_ordinal == gaussdb_date_negative_infinity: + * return negative_infinity_date +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_infinity_date); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 129, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":128 + * cdef int32_t gaussdb_ordinal = hton.unpack_int32(frb_read(buf, 4)) + * + * if gaussdb_ordinal == gaussdb_date_infinity: # <<<<<<<<<<<<<< + * return infinity_date + * elif gaussdb_ordinal == gaussdb_date_negative_infinity: +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":130 + * if gaussdb_ordinal == gaussdb_date_infinity: + * return infinity_date + * elif gaussdb_ordinal == gaussdb_date_negative_infinity: # <<<<<<<<<<<<<< + * return negative_infinity_date + * else: +*/ + __pyx_t_2 = (__pyx_v_gaussdb_ordinal == __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_date_negative_infinity); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":131 + * return infinity_date + * elif gaussdb_ordinal == gaussdb_date_negative_infinity: + * return negative_infinity_date # <<<<<<<<<<<<<< + * else: + * return date_from_ordinal(gaussdb_ordinal + gaussdb_date_offset_ord) +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_negative_infinity_date); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":130 + * if gaussdb_ordinal == gaussdb_date_infinity: + * return infinity_date + * elif gaussdb_ordinal == gaussdb_date_negative_infinity: # <<<<<<<<<<<<<< + * return negative_infinity_date + * else: +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":133 + * return negative_infinity_date + * else: + * return date_from_ordinal(gaussdb_ordinal + gaussdb_date_offset_ord) # <<<<<<<<<<<<<< + * + * +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_date_from_ordinal); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyLong_From_int32_t((__pyx_v_gaussdb_ordinal + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_date_offset_ord)); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 133, __pyx_L1_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(__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(13, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":125 + * + * + * cdef date_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef int32_t gaussdb_ordinal = hton.unpack_int32(frb_read(buf, 4)) + * +*/ + + /* 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("async_gaussdb.gaussdbproto.gaussdbproto.date_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":136 + * + * + * cdef date_decode_tuple(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef int32_t gaussdb_ordinal = hton.unpack_int32(frb_read(buf, 4)) + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_date_decode_tuple(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + int32_t __pyx_v_gaussdb_ordinal; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("date_decode_tuple", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":137 + * + * cdef date_decode_tuple(CodecContext settings, FRBuffer *buf): + * cdef int32_t gaussdb_ordinal = hton.unpack_int32(frb_read(buf, 4)) # <<<<<<<<<<<<<< + * + * return (gaussdb_ordinal,) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(13, 137, __pyx_L1_error) + __pyx_v_gaussdb_ordinal = unpack_int32(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":139 + * cdef int32_t gaussdb_ordinal = hton.unpack_int32(frb_read(buf, 4)) + * + * return (gaussdb_ordinal,) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyLong_From_int32_t(__pyx_v_gaussdb_ordinal); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2) != (0)) __PYX_ERR(13, 139, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":136 + * + * + * cdef date_decode_tuple(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef int32_t gaussdb_ordinal = hton.unpack_int32(frb_read(buf, 4)) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.date_decode_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":142 + * + * + * cdef timestamp_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * if not cpython.datetime.PyDateTime_Check(obj): + * if cpython.datetime.PyDate_Check(obj): +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timestamp_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + PyObject *__pyx_v_delta = NULL; + int64_t __pyx_v_seconds; + int32_t __pyx_v_microseconds; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + PY_LONG_LONG __pyx_t_9; + long __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("timestamp_encode", 0); + __Pyx_INCREF(__pyx_v_obj); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":143 + * + * cdef timestamp_encode(CodecContext settings, WriteBuffer buf, obj): + * if not cpython.datetime.PyDateTime_Check(obj): # <<<<<<<<<<<<<< + * if cpython.datetime.PyDate_Check(obj): + * obj = datetime.datetime(obj.year, obj.month, obj.day) +*/ + __pyx_t_1 = (!PyDateTime_Check(__pyx_v_obj)); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":144 + * cdef timestamp_encode(CodecContext settings, WriteBuffer buf, obj): + * if not cpython.datetime.PyDateTime_Check(obj): + * if cpython.datetime.PyDate_Check(obj): # <<<<<<<<<<<<<< + * obj = datetime.datetime(obj.year, obj.month, obj.day) + * else: +*/ + __pyx_t_1 = PyDate_Check(__pyx_v_obj); + if (likely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":145 + * if not cpython.datetime.PyDateTime_Check(obj): + * if cpython.datetime.PyDate_Check(obj): + * obj = datetime.datetime(obj.year, obj.month, obj.day) # <<<<<<<<<<<<<< + * else: + * raise TypeError( +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_year); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_month); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_day); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 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_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_t_4, __pyx_t_6, __pyx_t_7}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_8, (4-__pyx_t_8) | (__pyx_t_8*__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_6); __pyx_t_6 = 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(13, 145, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_2); + __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":144 + * cdef timestamp_encode(CodecContext settings, WriteBuffer buf, obj): + * if not cpython.datetime.PyDateTime_Check(obj): + * if cpython.datetime.PyDate_Check(obj): # <<<<<<<<<<<<<< + * obj = datetime.datetime(obj.year, obj.month, obj.day) + * else: +*/ + goto __pyx_L4; + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":147 + * obj = datetime.datetime(obj.year, obj.month, obj.day) + * else: + * raise TypeError( # <<<<<<<<<<<<<< + * 'expected a datetime.date or datetime.datetime instance, ' + * 'got {!r}'.format(type(obj).__name__) +*/ + /*else*/ { + __pyx_t_5 = NULL; + __Pyx_INCREF(__pyx_builtin_TypeError); + __pyx_t_7 = __pyx_builtin_TypeError; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":149 + * raise TypeError( + * 'expected a datetime.date or datetime.datetime instance, ' + * 'got {!r}'.format(type(obj).__name__) # <<<<<<<<<<<<<< + * ) + * +*/ + __pyx_t_4 = __pyx_mstate_global->__pyx_kp_u_expected_a_datetime_date_or_date; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_obj)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3}; + __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_8, (2-__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; + if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 149, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __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; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 147, __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(13, 147, __pyx_L1_error) + } + __pyx_L4:; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":143 + * + * cdef timestamp_encode(CodecContext settings, WriteBuffer buf, obj): + * if not cpython.datetime.PyDateTime_Check(obj): # <<<<<<<<<<<<<< + * if cpython.datetime.PyDate_Check(obj): + * obj = datetime.datetime(obj.year, obj.month, obj.day) +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":152 + * ) + * + * delta = obj - gaussdb_epoch_datetime # <<<<<<<<<<<<<< + * cdef: + * int64_t seconds = cpython.PyLong_AsLongLong(delta.days) * 86400 + \ +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_gaussdb_epoch_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_7 = PyNumber_Subtract(__pyx_v_obj, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_delta = __pyx_t_7; + __pyx_t_7 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":154 + * delta = obj - gaussdb_epoch_datetime + * cdef: + * int64_t seconds = cpython.PyLong_AsLongLong(delta.days) * 86400 + \ # <<<<<<<<<<<<<< + * cpython.PyLong_AsLong(delta.seconds) + * int32_t microseconds = cpython.PyLong_AsLong( +*/ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_delta, __pyx_mstate_global->__pyx_n_u_days); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = PyLong_AsLongLong(__pyx_t_7); if (unlikely(__pyx_t_9 == ((PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(13, 154, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":155 + * cdef: + * int64_t seconds = cpython.PyLong_AsLongLong(delta.days) * 86400 + \ + * cpython.PyLong_AsLong(delta.seconds) # <<<<<<<<<<<<<< + * int32_t microseconds = cpython.PyLong_AsLong( + * delta.microseconds) +*/ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_delta, __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_10 = PyLong_AsLong(__pyx_t_7); if (unlikely(__pyx_t_10 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 155, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":154 + * delta = obj - gaussdb_epoch_datetime + * cdef: + * int64_t seconds = cpython.PyLong_AsLongLong(delta.days) * 86400 + \ # <<<<<<<<<<<<<< + * cpython.PyLong_AsLong(delta.seconds) + * int32_t microseconds = cpython.PyLong_AsLong( +*/ + __pyx_v_seconds = ((__pyx_t_9 * 0x15180) + __pyx_t_10); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":157 + * cpython.PyLong_AsLong(delta.seconds) + * int32_t microseconds = cpython.PyLong_AsLong( + * delta.microseconds) # <<<<<<<<<<<<<< + * + * buf.write_int32(8) +*/ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_delta, __pyx_mstate_global->__pyx_n_u_microseconds); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 157, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":156 + * int64_t seconds = cpython.PyLong_AsLongLong(delta.days) * 86400 + \ + * cpython.PyLong_AsLong(delta.seconds) + * int32_t microseconds = cpython.PyLong_AsLong( # <<<<<<<<<<<<<< + * delta.microseconds) + * +*/ + __pyx_t_10 = PyLong_AsLong(__pyx_t_7); if (unlikely(__pyx_t_10 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 156, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_v_microseconds = ((int32_t)__pyx_t_10); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":159 + * delta.microseconds) + * + * buf.write_int32(8) # <<<<<<<<<<<<<< + * _encode_time(buf, seconds, microseconds) + * +*/ + __pyx_t_7 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 8); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 159, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":160 + * + * buf.write_int32(8) + * _encode_time(buf, seconds, microseconds) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_7 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__encode_time(__pyx_v_buf, __pyx_v_seconds, __pyx_v_microseconds); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 160, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":142 + * + * + * cdef timestamp_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * if not cpython.datetime.PyDateTime_Check(obj): + * if cpython.datetime.PyDate_Check(obj): +*/ + + /* 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_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.timestamp_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_delta); + __Pyx_XDECREF(__pyx_v_obj); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":163 + * + * + * cdef timestamp_encode_tuple(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * int64_t microseconds +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timestamp_encode_tuple(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + int64_t __pyx_v_microseconds; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int64_t __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("timestamp_encode_tuple", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":167 + * int64_t microseconds + * + * if len(obj) != 1: # <<<<<<<<<<<<<< + * raise ValueError( + * 'timestamp tuple encoder: expecting 1 element ' +*/ + __pyx_t_1 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(13, 167, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 1); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":168 + * + * if len(obj) != 1: + * raise ValueError( # <<<<<<<<<<<<<< + * 'timestamp tuple encoder: expecting 1 element ' + * 'in tuple, got {}'.format(len(obj))) +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_5 = __pyx_builtin_ValueError; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":170 + * raise ValueError( + * 'timestamp tuple encoder: expecting 1 element ' + * 'in tuple, got {}'.format(len(obj))) # <<<<<<<<<<<<<< + * + * microseconds = obj[0] +*/ + __pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_timestamp_tuple_encoder_expectin; + __Pyx_INCREF(__pyx_t_7); + __pyx_t_1 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(13, 170, __pyx_L1_error) + __pyx_t_8 = PyLong_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_8}; + __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 170, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __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_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 168, __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(13, 168, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":167 + * int64_t microseconds + * + * if len(obj) != 1: # <<<<<<<<<<<<<< + * raise ValueError( + * 'timestamp tuple encoder: expecting 1 element ' +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":172 + * 'in tuple, got {}'.format(len(obj))) + * + * microseconds = obj[0] # <<<<<<<<<<<<<< + * + * buf.write_int32(8) +*/ + __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 172, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyLong_As_int64_t(__pyx_t_3); if (unlikely((__pyx_t_10 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(13, 172, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_microseconds = __pyx_t_10; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":174 + * microseconds = obj[0] + * + * buf.write_int32(8) # <<<<<<<<<<<<<< + * buf.write_int64(microseconds) + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 8); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 174, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":175 + * + * buf.write_int32(8) + * buf.write_int64(microseconds) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(__pyx_v_buf, __pyx_v_microseconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 175, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":163 + * + * + * cdef timestamp_encode_tuple(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * int64_t microseconds +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.timestamp_encode_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":178 + * + * + * cdef timestamp_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int64_t seconds = 0 +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timestamp_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + int64_t __pyx_v_seconds; + int32_t __pyx_v_microseconds; + int32_t __pyx_v_inf; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int32_t __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("timestamp_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":180 + * cdef timestamp_decode(CodecContext settings, FRBuffer *buf): + * cdef: + * int64_t seconds = 0 # <<<<<<<<<<<<<< + * int32_t microseconds = 0 + * int32_t inf = _decode_time(buf, &seconds, µseconds) +*/ + __pyx_v_seconds = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":181 + * cdef: + * int64_t seconds = 0 + * int32_t microseconds = 0 # <<<<<<<<<<<<<< + * int32_t inf = _decode_time(buf, &seconds, µseconds) + * +*/ + __pyx_v_microseconds = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":182 + * int64_t seconds = 0 + * int32_t microseconds = 0 + * int32_t inf = _decode_time(buf, &seconds, µseconds) # <<<<<<<<<<<<<< + * + * if inf > 0: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__decode_time(__pyx_v_buf, (&__pyx_v_seconds), (&__pyx_v_microseconds)); if (unlikely(__pyx_t_1 == ((int32_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 182, __pyx_L1_error) + __pyx_v_inf = __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":184 + * int32_t inf = _decode_time(buf, &seconds, µseconds) + * + * if inf > 0: # <<<<<<<<<<<<<< + * # positive infinity + * return infinity_datetime +*/ + __pyx_t_2 = (__pyx_v_inf > 0); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":186 + * if inf > 0: + * # positive infinity + * return infinity_datetime # <<<<<<<<<<<<<< + * elif inf < 0: + * # negative infinity +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_infinity_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":184 + * int32_t inf = _decode_time(buf, &seconds, µseconds) + * + * if inf > 0: # <<<<<<<<<<<<<< + * # positive infinity + * return infinity_datetime +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":187 + * # positive infinity + * return infinity_datetime + * elif inf < 0: # <<<<<<<<<<<<<< + * # negative infinity + * return negative_infinity_datetime +*/ + __pyx_t_2 = (__pyx_v_inf < 0); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":189 + * elif inf < 0: + * # negative infinity + * return negative_infinity_datetime # <<<<<<<<<<<<<< + * else: + * return gaussdb_epoch_datetime.__add__( +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_negative_infinity_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 189, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":187 + * # positive infinity + * return infinity_datetime + * elif inf < 0: # <<<<<<<<<<<<<< + * # negative infinity + * return negative_infinity_datetime +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":191 + * return negative_infinity_datetime + * else: + * return gaussdb_epoch_datetime.__add__( # <<<<<<<<<<<<<< + * timedelta(0, seconds, microseconds)) + * +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_gaussdb_epoch_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_add); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":192 + * else: + * return gaussdb_epoch_datetime.__add__( + * timedelta(0, seconds, microseconds)) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = __Pyx_PyLong_From_int64_t(__pyx_v_seconds); if (unlikely(!__pyx_t_9)) __PYX_ERR(13, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyLong_From_int32_t(__pyx_v_microseconds); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = 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_11 = 0; + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_mstate_global->__pyx_int_0, __pyx_t_9, __pyx_t_10}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_11, (4-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__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_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 192, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __pyx_t_11 = 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_11 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__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_3)) __PYX_ERR(13, 191, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":178 + * + * + * cdef timestamp_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int64_t seconds = 0 +*/ + + /* 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("async_gaussdb.gaussdbproto.gaussdbproto.timestamp_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":195 + * + * + * cdef timestamp_decode_tuple(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int64_t ts = hton.unpack_int64(frb_read(buf, 8)) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timestamp_decode_tuple(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + int64_t __pyx_v_ts; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("timestamp_decode_tuple", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":197 + * cdef timestamp_decode_tuple(CodecContext settings, FRBuffer *buf): + * cdef: + * int64_t ts = hton.unpack_int64(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * + * return (ts,) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(13, 197, __pyx_L1_error) + __pyx_v_ts = unpack_int64(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":199 + * int64_t ts = hton.unpack_int64(frb_read(buf, 8)) + * + * return (ts,) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyLong_From_int64_t(__pyx_v_ts); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 199, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 199, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2) != (0)) __PYX_ERR(13, 199, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":195 + * + * + * cdef timestamp_decode_tuple(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int64_t ts = hton.unpack_int64(frb_read(buf, 8)) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.timestamp_decode_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":202 + * + * + * cdef timestamptz_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * if not cpython.datetime.PyDateTime_Check(obj): + * if cpython.datetime.PyDate_Check(obj): +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timestamptz_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + PyObject *__pyx_v_utc_dt = NULL; + PyObject *__pyx_v_delta = NULL; + int64_t __pyx_v_seconds; + int32_t __pyx_v_microseconds; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + PyObject *__pyx_t_10 = NULL; + PY_LONG_LONG __pyx_t_11; + long __pyx_t_12; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("timestamptz_encode", 0); + __Pyx_INCREF(__pyx_v_obj); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":203 + * + * cdef timestamptz_encode(CodecContext settings, WriteBuffer buf, obj): + * if not cpython.datetime.PyDateTime_Check(obj): # <<<<<<<<<<<<<< + * if cpython.datetime.PyDate_Check(obj): + * obj = datetime.datetime(obj.year, obj.month, obj.day, +*/ + __pyx_t_1 = (!PyDateTime_Check(__pyx_v_obj)); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":204 + * cdef timestamptz_encode(CodecContext settings, WriteBuffer buf, obj): + * if not cpython.datetime.PyDateTime_Check(obj): + * if cpython.datetime.PyDate_Check(obj): # <<<<<<<<<<<<<< + * obj = datetime.datetime(obj.year, obj.month, obj.day, + * tzinfo=_local_timezone()) +*/ + __pyx_t_1 = PyDate_Check(__pyx_v_obj); + if (likely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":205 + * if not cpython.datetime.PyDateTime_Check(obj): + * if cpython.datetime.PyDate_Check(obj): + * obj = datetime.datetime(obj.year, obj.month, obj.day, # <<<<<<<<<<<<<< + * tzinfo=_local_timezone()) + * else: +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_year); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_month); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_day); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":206 + * if cpython.datetime.PyDate_Check(obj): + * obj = datetime.datetime(obj.year, obj.month, obj.day, + * tzinfo=_local_timezone()) # <<<<<<<<<<<<<< + * else: + * raise TypeError( +*/ + __pyx_t_8 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__local_timezone(); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 206, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = 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_9 = 0; + } + #endif + { + PyObject *__pyx_callargs[4 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_t_4, __pyx_t_6, __pyx_t_7}; + __pyx_t_10 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_8, __pyx_t_10, __pyx_callargs+4, 0) < 0) __PYX_ERR(13, 205, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_5, __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_4); __pyx_t_4 = 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_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 205, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_2); + __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":204 + * cdef timestamptz_encode(CodecContext settings, WriteBuffer buf, obj): + * if not cpython.datetime.PyDateTime_Check(obj): + * if cpython.datetime.PyDate_Check(obj): # <<<<<<<<<<<<<< + * obj = datetime.datetime(obj.year, obj.month, obj.day, + * tzinfo=_local_timezone()) +*/ + goto __pyx_L4; + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":208 + * tzinfo=_local_timezone()) + * else: + * raise TypeError( # <<<<<<<<<<<<<< + * 'expected a datetime.date or datetime.datetime instance, ' + * 'got {!r}'.format(type(obj).__name__) +*/ + /*else*/ { + __pyx_t_5 = NULL; + __Pyx_INCREF(__pyx_builtin_TypeError); + __pyx_t_10 = __pyx_builtin_TypeError; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":210 + * raise TypeError( + * 'expected a datetime.date or datetime.datetime instance, ' + * 'got {!r}'.format(type(obj).__name__) # <<<<<<<<<<<<<< + * ) + * +*/ + __pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_expected_a_datetime_date_or_date; + __Pyx_INCREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_obj)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_9 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_6}; + __pyx_t_8 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 210, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + } + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_8}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_10, __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; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 208, __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(13, 208, __pyx_L1_error) + } + __pyx_L4:; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":203 + * + * cdef timestamptz_encode(CodecContext settings, WriteBuffer buf, obj): + * if not cpython.datetime.PyDateTime_Check(obj): # <<<<<<<<<<<<<< + * if cpython.datetime.PyDate_Check(obj): + * obj = datetime.datetime(obj.year, obj.month, obj.day, +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":213 + * ) + * + * buf.write_int32(8) # <<<<<<<<<<<<<< + * + * if obj == infinity_datetime: +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 8); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 213, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":215 + * buf.write_int32(8) + * + * if obj == infinity_datetime: # <<<<<<<<<<<<<< + * buf.write_int64(gaussdb_time64_infinity) + * return +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_infinity_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 215, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_10 = PyObject_RichCompare(__pyx_v_obj, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 215, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(13, 215, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":216 + * + * if obj == infinity_datetime: + * buf.write_int64(gaussdb_time64_infinity) # <<<<<<<<<<<<<< + * return + * elif obj == negative_infinity_datetime: +*/ + __pyx_t_10 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(__pyx_v_buf, __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_time64_infinity); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 216, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":217 + * if obj == infinity_datetime: + * buf.write_int64(gaussdb_time64_infinity) + * return # <<<<<<<<<<<<<< + * elif obj == negative_infinity_datetime: + * buf.write_int64(gaussdb_time64_negative_infinity) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":215 + * buf.write_int32(8) + * + * if obj == infinity_datetime: # <<<<<<<<<<<<<< + * buf.write_int64(gaussdb_time64_infinity) + * return +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":218 + * buf.write_int64(gaussdb_time64_infinity) + * return + * elif obj == negative_infinity_datetime: # <<<<<<<<<<<<<< + * buf.write_int64(gaussdb_time64_negative_infinity) + * return +*/ + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_negative_infinity_datetime); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 218, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_2 = PyObject_RichCompare(__pyx_v_obj, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 218, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(13, 218, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":219 + * return + * elif obj == negative_infinity_datetime: + * buf.write_int64(gaussdb_time64_negative_infinity) # <<<<<<<<<<<<<< + * return + * +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(__pyx_v_buf, __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_time64_negative_infinity); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 219, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":220 + * elif obj == negative_infinity_datetime: + * buf.write_int64(gaussdb_time64_negative_infinity) + * return # <<<<<<<<<<<<<< + * + * utc_dt = obj.astimezone(utc) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":218 + * buf.write_int64(gaussdb_time64_infinity) + * return + * elif obj == negative_infinity_datetime: # <<<<<<<<<<<<<< + * buf.write_int64(gaussdb_time64_negative_infinity) + * return +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":222 + * return + * + * utc_dt = obj.astimezone(utc) # <<<<<<<<<<<<<< + * + * delta = utc_dt - gaussdb_epoch_datetime_utc +*/ + __pyx_t_10 = __pyx_v_obj; + __Pyx_INCREF(__pyx_t_10); + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 222, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_8}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_astimezone, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (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_2)) __PYX_ERR(13, 222, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_v_utc_dt = __pyx_t_2; + __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":224 + * utc_dt = obj.astimezone(utc) + * + * delta = utc_dt - gaussdb_epoch_datetime_utc # <<<<<<<<<<<<<< + * cdef: + * int64_t seconds = cpython.PyLong_AsLongLong(delta.days) * 86400 + \ +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_gaussdb_epoch_datetime_utc); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = PyNumber_Subtract(__pyx_v_utc_dt, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_v_delta = __pyx_t_8; + __pyx_t_8 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":226 + * delta = utc_dt - gaussdb_epoch_datetime_utc + * cdef: + * int64_t seconds = cpython.PyLong_AsLongLong(delta.days) * 86400 + \ # <<<<<<<<<<<<<< + * cpython.PyLong_AsLong(delta.seconds) + * int32_t microseconds = cpython.PyLong_AsLong( +*/ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_delta, __pyx_mstate_global->__pyx_n_u_days); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 226, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_11 = PyLong_AsLongLong(__pyx_t_8); if (unlikely(__pyx_t_11 == ((PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(13, 226, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":227 + * cdef: + * int64_t seconds = cpython.PyLong_AsLongLong(delta.days) * 86400 + \ + * cpython.PyLong_AsLong(delta.seconds) # <<<<<<<<<<<<<< + * int32_t microseconds = cpython.PyLong_AsLong( + * delta.microseconds) +*/ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_delta, __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 227, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_12 = PyLong_AsLong(__pyx_t_8); if (unlikely(__pyx_t_12 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 227, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":226 + * delta = utc_dt - gaussdb_epoch_datetime_utc + * cdef: + * int64_t seconds = cpython.PyLong_AsLongLong(delta.days) * 86400 + \ # <<<<<<<<<<<<<< + * cpython.PyLong_AsLong(delta.seconds) + * int32_t microseconds = cpython.PyLong_AsLong( +*/ + __pyx_v_seconds = ((__pyx_t_11 * 0x15180) + __pyx_t_12); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":229 + * cpython.PyLong_AsLong(delta.seconds) + * int32_t microseconds = cpython.PyLong_AsLong( + * delta.microseconds) # <<<<<<<<<<<<<< + * + * _encode_time(buf, seconds, microseconds) +*/ + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_delta, __pyx_mstate_global->__pyx_n_u_microseconds); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 229, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":228 + * int64_t seconds = cpython.PyLong_AsLongLong(delta.days) * 86400 + \ + * cpython.PyLong_AsLong(delta.seconds) + * int32_t microseconds = cpython.PyLong_AsLong( # <<<<<<<<<<<<<< + * delta.microseconds) + * +*/ + __pyx_t_12 = PyLong_AsLong(__pyx_t_8); if (unlikely(__pyx_t_12 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 228, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __pyx_v_microseconds = ((int32_t)__pyx_t_12); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":231 + * delta.microseconds) + * + * _encode_time(buf, seconds, microseconds) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_8 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__encode_time(__pyx_v_buf, __pyx_v_seconds, __pyx_v_microseconds); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 231, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":202 + * + * + * cdef timestamptz_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * if not cpython.datetime.PyDateTime_Check(obj): + * if cpython.datetime.PyDate_Check(obj): +*/ + + /* 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_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.timestamptz_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_utc_dt); + __Pyx_XDECREF(__pyx_v_delta); + __Pyx_XDECREF(__pyx_v_obj); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":234 + * + * + * cdef timestamptz_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int64_t seconds = 0 +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timestamptz_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + int64_t __pyx_v_seconds; + int32_t __pyx_v_microseconds; + int32_t __pyx_v_inf; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int32_t __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("timestamptz_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":236 + * cdef timestamptz_decode(CodecContext settings, FRBuffer *buf): + * cdef: + * int64_t seconds = 0 # <<<<<<<<<<<<<< + * int32_t microseconds = 0 + * int32_t inf = _decode_time(buf, &seconds, µseconds) +*/ + __pyx_v_seconds = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":237 + * cdef: + * int64_t seconds = 0 + * int32_t microseconds = 0 # <<<<<<<<<<<<<< + * int32_t inf = _decode_time(buf, &seconds, µseconds) + * +*/ + __pyx_v_microseconds = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":238 + * int64_t seconds = 0 + * int32_t microseconds = 0 + * int32_t inf = _decode_time(buf, &seconds, µseconds) # <<<<<<<<<<<<<< + * + * if inf > 0: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__decode_time(__pyx_v_buf, (&__pyx_v_seconds), (&__pyx_v_microseconds)); if (unlikely(__pyx_t_1 == ((int32_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 238, __pyx_L1_error) + __pyx_v_inf = __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":240 + * int32_t inf = _decode_time(buf, &seconds, µseconds) + * + * if inf > 0: # <<<<<<<<<<<<<< + * # positive infinity + * return infinity_datetime +*/ + __pyx_t_2 = (__pyx_v_inf > 0); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":242 + * if inf > 0: + * # positive infinity + * return infinity_datetime # <<<<<<<<<<<<<< + * elif inf < 0: + * # negative infinity +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_infinity_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 242, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":240 + * int32_t inf = _decode_time(buf, &seconds, µseconds) + * + * if inf > 0: # <<<<<<<<<<<<<< + * # positive infinity + * return infinity_datetime +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":243 + * # positive infinity + * return infinity_datetime + * elif inf < 0: # <<<<<<<<<<<<<< + * # negative infinity + * return negative_infinity_datetime +*/ + __pyx_t_2 = (__pyx_v_inf < 0); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":245 + * elif inf < 0: + * # negative infinity + * return negative_infinity_datetime # <<<<<<<<<<<<<< + * else: + * return gaussdb_epoch_datetime_utc.__add__( +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_negative_infinity_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 245, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":243 + * # positive infinity + * return infinity_datetime + * elif inf < 0: # <<<<<<<<<<<<<< + * # negative infinity + * return negative_infinity_datetime +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":247 + * return negative_infinity_datetime + * else: + * return gaussdb_epoch_datetime_utc.__add__( # <<<<<<<<<<<<<< + * timedelta(0, seconds, microseconds)) + * +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_gaussdb_epoch_datetime_utc); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_add); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":248 + * else: + * return gaussdb_epoch_datetime_utc.__add__( + * timedelta(0, seconds, microseconds)) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_7 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 248, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = __Pyx_PyLong_From_int64_t(__pyx_v_seconds); if (unlikely(!__pyx_t_9)) __PYX_ERR(13, 248, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyLong_From_int32_t(__pyx_v_microseconds); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 248, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = 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_11 = 0; + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_mstate_global->__pyx_int_0, __pyx_t_9, __pyx_t_10}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_11, (4-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__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_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 248, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __pyx_t_11 = 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_11 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__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_3)) __PYX_ERR(13, 247, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":234 + * + * + * cdef timestamptz_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int64_t seconds = 0 +*/ + + /* 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("async_gaussdb.gaussdbproto.gaussdbproto.timestamptz_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":251 + * + * + * cdef time_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * int64_t seconds = cpython.PyLong_AsLong(obj.hour) * 3600 + \ +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_time_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + int64_t __pyx_v_seconds; + int32_t __pyx_v_microseconds; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + long __pyx_t_2; + long __pyx_t_3; + long __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("time_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":253 + * cdef time_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef: + * int64_t seconds = cpython.PyLong_AsLong(obj.hour) * 3600 + \ # <<<<<<<<<<<<<< + * cpython.PyLong_AsLong(obj.minute) * 60 + \ + * cpython.PyLong_AsLong(obj.second) +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_hour); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 253, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyLong_AsLong(__pyx_t_1); if (unlikely(__pyx_t_2 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 253, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":254 + * cdef: + * int64_t seconds = cpython.PyLong_AsLong(obj.hour) * 3600 + \ + * cpython.PyLong_AsLong(obj.minute) * 60 + \ # <<<<<<<<<<<<<< + * cpython.PyLong_AsLong(obj.second) + * int32_t microseconds = cpython.PyLong_AsLong(obj.microsecond) +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_minute); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 254, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyLong_AsLong(__pyx_t_1); if (unlikely(__pyx_t_3 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 254, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":255 + * int64_t seconds = cpython.PyLong_AsLong(obj.hour) * 3600 + \ + * cpython.PyLong_AsLong(obj.minute) * 60 + \ + * cpython.PyLong_AsLong(obj.second) # <<<<<<<<<<<<<< + * int32_t microseconds = cpython.PyLong_AsLong(obj.microsecond) + * +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_second); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 255, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = PyLong_AsLong(__pyx_t_1); if (unlikely(__pyx_t_4 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 255, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":254 + * cdef: + * int64_t seconds = cpython.PyLong_AsLong(obj.hour) * 3600 + \ + * cpython.PyLong_AsLong(obj.minute) * 60 + \ # <<<<<<<<<<<<<< + * cpython.PyLong_AsLong(obj.second) + * int32_t microseconds = cpython.PyLong_AsLong(obj.microsecond) +*/ + __pyx_v_seconds = (((__pyx_t_2 * 0xE10) + (__pyx_t_3 * 60)) + __pyx_t_4); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":256 + * cpython.PyLong_AsLong(obj.minute) * 60 + \ + * cpython.PyLong_AsLong(obj.second) + * int32_t microseconds = cpython.PyLong_AsLong(obj.microsecond) # <<<<<<<<<<<<<< + * + * buf.write_int32(8) +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_microsecond); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 256, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = PyLong_AsLong(__pyx_t_1); if (unlikely(__pyx_t_4 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 256, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_microseconds = ((int32_t)__pyx_t_4); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":258 + * int32_t microseconds = cpython.PyLong_AsLong(obj.microsecond) + * + * buf.write_int32(8) # <<<<<<<<<<<<<< + * _encode_time(buf, seconds, microseconds) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 8); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 258, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":259 + * + * buf.write_int32(8) + * _encode_time(buf, seconds, microseconds) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__encode_time(__pyx_v_buf, __pyx_v_seconds, __pyx_v_microseconds); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 259, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":251 + * + * + * cdef time_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * int64_t seconds = cpython.PyLong_AsLong(obj.hour) * 3600 + \ +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.time_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":262 + * + * + * cdef time_encode_tuple(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * int64_t microseconds +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_time_encode_tuple(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + int64_t __pyx_v_microseconds; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int64_t __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("time_encode_tuple", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":266 + * int64_t microseconds + * + * if len(obj) != 1: # <<<<<<<<<<<<<< + * raise ValueError( + * 'time tuple encoder: expecting 1 element ' +*/ + __pyx_t_1 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(13, 266, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 1); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":267 + * + * if len(obj) != 1: + * raise ValueError( # <<<<<<<<<<<<<< + * 'time tuple encoder: expecting 1 element ' + * 'in tuple, got {}'.format(len(obj))) +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_5 = __pyx_builtin_ValueError; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":269 + * raise ValueError( + * 'time tuple encoder: expecting 1 element ' + * 'in tuple, got {}'.format(len(obj))) # <<<<<<<<<<<<<< + * + * microseconds = obj[0] +*/ + __pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_time_tuple_encoder_expecting_1_e; + __Pyx_INCREF(__pyx_t_7); + __pyx_t_1 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(13, 269, __pyx_L1_error) + __pyx_t_8 = PyLong_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 269, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_8}; + __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 269, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __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_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 267, __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(13, 267, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":266 + * int64_t microseconds + * + * if len(obj) != 1: # <<<<<<<<<<<<<< + * raise ValueError( + * 'time tuple encoder: expecting 1 element ' +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":271 + * 'in tuple, got {}'.format(len(obj))) + * + * microseconds = obj[0] # <<<<<<<<<<<<<< + * + * buf.write_int32(8) +*/ + __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 271, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyLong_As_int64_t(__pyx_t_3); if (unlikely((__pyx_t_10 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(13, 271, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_microseconds = __pyx_t_10; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":273 + * microseconds = obj[0] + * + * buf.write_int32(8) # <<<<<<<<<<<<<< + * buf.write_int64(microseconds) + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 8); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 273, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":274 + * + * buf.write_int32(8) + * buf.write_int64(microseconds) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(__pyx_v_buf, __pyx_v_microseconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 274, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":262 + * + * + * cdef time_encode_tuple(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * int64_t microseconds +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.time_encode_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":277 + * + * + * cdef time_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int64_t seconds = 0 +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_time_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + int64_t __pyx_v_seconds; + int32_t __pyx_v_microseconds; + int64_t __pyx_v_minutes; + int64_t __pyx_v_sec; + int64_t __pyx_v_hours; + int64_t __pyx_v_min; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int32_t __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("time_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":279 + * cdef time_decode(CodecContext settings, FRBuffer *buf): + * cdef: + * int64_t seconds = 0 # <<<<<<<<<<<<<< + * int32_t microseconds = 0 + * +*/ + __pyx_v_seconds = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":280 + * cdef: + * int64_t seconds = 0 + * int32_t microseconds = 0 # <<<<<<<<<<<<<< + * + * _decode_time(buf, &seconds, µseconds) +*/ + __pyx_v_microseconds = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":282 + * int32_t microseconds = 0 + * + * _decode_time(buf, &seconds, µseconds) # <<<<<<<<<<<<<< + * + * cdef: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__decode_time(__pyx_v_buf, (&__pyx_v_seconds), (&__pyx_v_microseconds)); if (unlikely(__pyx_t_1 == ((int32_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 282, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":285 + * + * cdef: + * int64_t minutes = (seconds / 60) # <<<<<<<<<<<<<< + * int64_t sec = seconds % 60 + * int64_t hours = (minutes / 60) +*/ + __pyx_v_minutes = ((int64_t)(((double)__pyx_v_seconds) / 60.0)); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":286 + * cdef: + * int64_t minutes = (seconds / 60) + * int64_t sec = seconds % 60 # <<<<<<<<<<<<<< + * int64_t hours = (minutes / 60) + * int64_t min = minutes % 60 +*/ + __pyx_v_sec = __Pyx_mod_int64_t(__pyx_v_seconds, 60, 1); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":287 + * int64_t minutes = (seconds / 60) + * int64_t sec = seconds % 60 + * int64_t hours = (minutes / 60) # <<<<<<<<<<<<<< + * int64_t min = minutes % 60 + * +*/ + __pyx_v_hours = ((int64_t)(((double)__pyx_v_minutes) / 60.0)); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":288 + * int64_t sec = seconds % 60 + * int64_t hours = (minutes / 60) + * int64_t min = minutes % 60 # <<<<<<<<<<<<<< + * + * return datetime.time(hours, min, sec, microseconds) +*/ + __pyx_v_min = __Pyx_mod_int64_t(__pyx_v_minutes, 60, 1); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":290 + * int64_t min = minutes % 60 + * + * return datetime.time(hours, min, sec, microseconds) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 290, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 290, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyLong_From_int64_t(__pyx_v_hours); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 290, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = __Pyx_PyLong_From_int64_t(__pyx_v_min); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 290, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyLong_From_int64_t(__pyx_v_sec); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 290, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyLong_From_int32_t(__pyx_v_microseconds); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 290, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = 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_9 = 0; + } + #endif + { + PyObject *__pyx_callargs[5] = {__pyx_t_3, __pyx_t_4, __pyx_t_6, __pyx_t_7, __pyx_t_8}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_9, (5-__pyx_t_9) | (__pyx_t_9*__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_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_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 290, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":277 + * + * + * cdef time_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int64_t seconds = 0 +*/ + + /* 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("async_gaussdb.gaussdbproto.gaussdbproto.time_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":293 + * + * + * cdef time_decode_tuple(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int64_t ts = hton.unpack_int64(frb_read(buf, 8)) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_time_decode_tuple(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + int64_t __pyx_v_ts; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("time_decode_tuple", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":295 + * cdef time_decode_tuple(CodecContext settings, FRBuffer *buf): + * cdef: + * int64_t ts = hton.unpack_int64(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * + * return (ts,) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(13, 295, __pyx_L1_error) + __pyx_v_ts = unpack_int64(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":297 + * int64_t ts = hton.unpack_int64(frb_read(buf, 8)) + * + * return (ts,) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyLong_From_int64_t(__pyx_v_ts); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 297, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 297, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2) != (0)) __PYX_ERR(13, 297, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":293 + * + * + * cdef time_decode_tuple(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int64_t ts = hton.unpack_int64(frb_read(buf, 8)) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.time_decode_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":300 + * + * + * cdef timetz_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * offset = obj.tzinfo.utcoffset(None) + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timetz_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + PyObject *__pyx_v_offset = NULL; + int32_t __pyx_v_offset_sec; + int64_t __pyx_v_seconds; + int32_t __pyx_v_microseconds; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + long __pyx_t_5; + long __pyx_t_6; + long __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("timetz_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":301 + * + * cdef timetz_encode(CodecContext settings, WriteBuffer buf, obj): + * offset = obj.tzinfo.utcoffset(None) # <<<<<<<<<<<<<< + * + * cdef: +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_tzinfo); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 301, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __pyx_t_3; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, Py_None}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_utcoffset, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (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(13, 301, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_offset = __pyx_t_1; + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":305 + * cdef: + * int32_t offset_sec = \ + * cpython.PyLong_AsLong(offset.days) * 24 * 60 * 60 + \ # <<<<<<<<<<<<<< + * cpython.PyLong_AsLong(offset.seconds) + * +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_offset, __pyx_mstate_global->__pyx_n_u_days); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 305, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = PyLong_AsLong(__pyx_t_1); if (unlikely(__pyx_t_5 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 305, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":306 + * int32_t offset_sec = \ + * cpython.PyLong_AsLong(offset.days) * 24 * 60 * 60 + \ + * cpython.PyLong_AsLong(offset.seconds) # <<<<<<<<<<<<<< + * + * int64_t seconds = cpython.PyLong_AsLong(obj.hour) * 3600 + \ +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_offset, __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 306, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = PyLong_AsLong(__pyx_t_1); if (unlikely(__pyx_t_6 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 306, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":305 + * cdef: + * int32_t offset_sec = \ + * cpython.PyLong_AsLong(offset.days) * 24 * 60 * 60 + \ # <<<<<<<<<<<<<< + * cpython.PyLong_AsLong(offset.seconds) + * +*/ + __pyx_v_offset_sec = ((((((int32_t)__pyx_t_5) * 24) * 60) * 60) + ((int32_t)__pyx_t_6)); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":308 + * cpython.PyLong_AsLong(offset.seconds) + * + * int64_t seconds = cpython.PyLong_AsLong(obj.hour) * 3600 + \ # <<<<<<<<<<<<<< + * cpython.PyLong_AsLong(obj.minute) * 60 + \ + * cpython.PyLong_AsLong(obj.second) +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_hour); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 308, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = PyLong_AsLong(__pyx_t_1); if (unlikely(__pyx_t_6 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 308, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":309 + * + * int64_t seconds = cpython.PyLong_AsLong(obj.hour) * 3600 + \ + * cpython.PyLong_AsLong(obj.minute) * 60 + \ # <<<<<<<<<<<<<< + * cpython.PyLong_AsLong(obj.second) + * +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_minute); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 309, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = PyLong_AsLong(__pyx_t_1); if (unlikely(__pyx_t_5 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 309, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":310 + * int64_t seconds = cpython.PyLong_AsLong(obj.hour) * 3600 + \ + * cpython.PyLong_AsLong(obj.minute) * 60 + \ + * cpython.PyLong_AsLong(obj.second) # <<<<<<<<<<<<<< + * + * int32_t microseconds = cpython.PyLong_AsLong(obj.microsecond) +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_second); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 310, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = PyLong_AsLong(__pyx_t_1); if (unlikely(__pyx_t_7 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 310, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":309 + * + * int64_t seconds = cpython.PyLong_AsLong(obj.hour) * 3600 + \ + * cpython.PyLong_AsLong(obj.minute) * 60 + \ # <<<<<<<<<<<<<< + * cpython.PyLong_AsLong(obj.second) + * +*/ + __pyx_v_seconds = (((__pyx_t_6 * 0xE10) + (__pyx_t_5 * 60)) + __pyx_t_7); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":312 + * cpython.PyLong_AsLong(obj.second) + * + * int32_t microseconds = cpython.PyLong_AsLong(obj.microsecond) # <<<<<<<<<<<<<< + * + * buf.write_int32(12) +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_microsecond); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 312, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = PyLong_AsLong(__pyx_t_1); if (unlikely(__pyx_t_7 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 312, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_microseconds = ((int32_t)__pyx_t_7); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":314 + * int32_t microseconds = cpython.PyLong_AsLong(obj.microsecond) + * + * buf.write_int32(12) # <<<<<<<<<<<<<< + * _encode_time(buf, seconds, microseconds) + * # In Python utcoffset() is the difference between the local time +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 12); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 314, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":315 + * + * buf.write_int32(12) + * _encode_time(buf, seconds, microseconds) # <<<<<<<<<<<<<< + * # In Python utcoffset() is the difference between the local time + * # and the UTC, whereas in GaussDBSQL it's the opposite, +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__encode_time(__pyx_v_buf, __pyx_v_seconds, __pyx_v_microseconds); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 315, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":319 + * # and the UTC, whereas in GaussDBSQL it's the opposite, + * # so we need to flip the sign. + * buf.write_int32(-offset_sec) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, (-__pyx_v_offset_sec)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 319, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":300 + * + * + * cdef timetz_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * offset = obj.tzinfo.utcoffset(None) + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.timetz_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_offset); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":322 + * + * + * cdef timetz_encode_tuple(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * int64_t microseconds +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timetz_encode_tuple(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + int64_t __pyx_v_microseconds; + int32_t __pyx_v_offset_sec; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int64_t __pyx_t_10; + int32_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("timetz_encode_tuple", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":327 + * int32_t offset_sec + * + * if len(obj) != 2: # <<<<<<<<<<<<<< + * raise ValueError( + * 'time tuple encoder: expecting 2 elements2 ' +*/ + __pyx_t_1 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(13, 327, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 2); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":328 + * + * if len(obj) != 2: + * raise ValueError( # <<<<<<<<<<<<<< + * 'time tuple encoder: expecting 2 elements2 ' + * 'in tuple, got {}'.format(len(obj))) +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_5 = __pyx_builtin_ValueError; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":330 + * raise ValueError( + * 'time tuple encoder: expecting 2 elements2 ' + * 'in tuple, got {}'.format(len(obj))) # <<<<<<<<<<<<<< + * + * microseconds = obj[0] +*/ + __pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_time_tuple_encoder_expecting_2_e; + __Pyx_INCREF(__pyx_t_7); + __pyx_t_1 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(13, 330, __pyx_L1_error) + __pyx_t_8 = PyLong_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 330, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_8}; + __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 330, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __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_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 328, __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(13, 328, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":327 + * int32_t offset_sec + * + * if len(obj) != 2: # <<<<<<<<<<<<<< + * raise ValueError( + * 'time tuple encoder: expecting 2 elements2 ' +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":332 + * 'in tuple, got {}'.format(len(obj))) + * + * microseconds = obj[0] # <<<<<<<<<<<<<< + * offset_sec = obj[1] + * +*/ + __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 332, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyLong_As_int64_t(__pyx_t_3); if (unlikely((__pyx_t_10 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(13, 332, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_microseconds = __pyx_t_10; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":333 + * + * microseconds = obj[0] + * offset_sec = obj[1] # <<<<<<<<<<<<<< + * + * buf.write_int32(12) +*/ + __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 333, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_11 = __Pyx_PyLong_As_int32_t(__pyx_t_3); if (unlikely((__pyx_t_11 == ((int32_t)-1)) && PyErr_Occurred())) __PYX_ERR(13, 333, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_offset_sec = __pyx_t_11; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":335 + * offset_sec = obj[1] + * + * buf.write_int32(12) # <<<<<<<<<<<<<< + * buf.write_int64(microseconds) + * buf.write_int32(offset_sec) +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 12); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 335, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":336 + * + * buf.write_int32(12) + * buf.write_int64(microseconds) # <<<<<<<<<<<<<< + * buf.write_int32(offset_sec) + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(__pyx_v_buf, __pyx_v_microseconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 336, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":337 + * buf.write_int32(12) + * buf.write_int64(microseconds) + * buf.write_int32(offset_sec) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, __pyx_v_offset_sec); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 337, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":322 + * + * + * cdef timetz_encode_tuple(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * int64_t microseconds +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.timetz_encode_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":340 + * + * + * cdef timetz_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * time = time_decode(settings, buf) + * cdef int32_t offset = (hton.unpack_int32(frb_read(buf, 4)) / 60) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timetz_decode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_v_time = NULL; + int32_t __pyx_v_offset; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + char const *__pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + PyObject *__pyx_t_12 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("timetz_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":341 + * + * cdef timetz_decode(CodecContext settings, FRBuffer *buf): + * time = time_decode(settings, buf) # <<<<<<<<<<<<<< + * cdef int32_t offset = (hton.unpack_int32(frb_read(buf, 4)) / 60) + * # See the comment in the `timetz_encode` method. +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_time_decode(__pyx_v_settings, __pyx_v_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 341, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_time = __pyx_t_1; + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":342 + * cdef timetz_decode(CodecContext settings, FRBuffer *buf): + * time = time_decode(settings, buf) + * cdef int32_t offset = (hton.unpack_int32(frb_read(buf, 4)) / 60) # <<<<<<<<<<<<<< + * # See the comment in the `timetz_encode` method. + * return time.replace(tzinfo=datetime.timezone(timedelta(minutes=-offset))) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_2 == ((char const *)0))) __PYX_ERR(13, 342, __pyx_L1_error) + __pyx_v_offset = ((int32_t)(((double)unpack_int32(__pyx_t_2)) / 60.0)); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":344 + * cdef int32_t offset = (hton.unpack_int32(frb_read(buf, 4)) / 60) + * # See the comment in the `timetz_encode` method. + * return time.replace(tzinfo=datetime.timezone(timedelta(minutes=-offset))) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __pyx_v_time; + __Pyx_INCREF(__pyx_t_3); + __pyx_t_5 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 344, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 344, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_8 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_9)) __PYX_ERR(13, 344, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = __Pyx_PyLong_From_int32_t((-__pyx_v_offset)); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 344, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_9))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9); + assert(__pyx_t_8); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_9, __pyx__function); + __pyx_t_11 = 0; + } + #endif + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_8, NULL}; + __pyx_t_12 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(13, 344, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_12); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_minutes, __pyx_t_10, __pyx_t_12, __pyx_callargs+1, 0) < 0) __PYX_ERR(13, 344, __pyx_L1_error) + __pyx_t_6 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_9, __pyx_callargs+__pyx_t_11, (1-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_12); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 344, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __pyx_t_11 = 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_11 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__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_4)) __PYX_ERR(13, 344, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __pyx_t_11 = 0; + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, NULL}; + __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 344, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_4, __pyx_t_7, __pyx_callargs+1, 0) < 0) __PYX_ERR(13, 344, __pyx_L1_error) + __pyx_t_1 = __Pyx_Object_VectorcallMethod_CallFromBuilder(__pyx_mstate_global->__pyx_n_u_replace, __pyx_callargs+__pyx_t_11, (1-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 344, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":340 + * + * + * cdef timetz_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * time = time_decode(settings, buf) + * cdef int32_t offset = (hton.unpack_int32(frb_read(buf, 4)) / 60) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.timetz_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_time); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":347 + * + * + * cdef timetz_decode_tuple(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int64_t microseconds = hton.unpack_int64(frb_read(buf, 8)) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timetz_decode_tuple(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + int64_t __pyx_v_microseconds; + int32_t __pyx_v_offset_sec; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("timetz_decode_tuple", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":349 + * cdef timetz_decode_tuple(CodecContext settings, FRBuffer *buf): + * cdef: + * int64_t microseconds = hton.unpack_int64(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * int32_t offset_sec = hton.unpack_int32(frb_read(buf, 4)) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(13, 349, __pyx_L1_error) + __pyx_v_microseconds = unpack_int64(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":350 + * cdef: + * int64_t microseconds = hton.unpack_int64(frb_read(buf, 8)) + * int32_t offset_sec = hton.unpack_int32(frb_read(buf, 4)) # <<<<<<<<<<<<<< + * + * return (microseconds, offset_sec) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(13, 350, __pyx_L1_error) + __pyx_v_offset_sec = unpack_int32(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":352 + * int32_t offset_sec = hton.unpack_int32(frb_read(buf, 4)) + * + * return (microseconds, offset_sec) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyLong_From_int64_t(__pyx_v_microseconds); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 352, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyLong_From_int32_t(__pyx_v_offset_sec); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 352, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 352, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2) != (0)) __PYX_ERR(13, 352, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3) != (0)) __PYX_ERR(13, 352, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_t_3 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":347 + * + * + * cdef timetz_decode_tuple(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int64_t microseconds = hton.unpack_int64(frb_read(buf, 8)) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.timetz_decode_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":355 + * + * + * cdef interval_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * int32_t days = cpython.PyLong_AsLong(obj.days) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_interval_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + int32_t __pyx_v_days; + int64_t __pyx_v_seconds; + int32_t __pyx_v_microseconds; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + long __pyx_t_2; + PY_LONG_LONG __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("interval_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":357 + * cdef interval_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef: + * int32_t days = cpython.PyLong_AsLong(obj.days) # <<<<<<<<<<<<<< + * int64_t seconds = cpython.PyLong_AsLongLong(obj.seconds) + * int32_t microseconds = cpython.PyLong_AsLong(obj.microseconds) +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_days); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 357, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyLong_AsLong(__pyx_t_1); if (unlikely(__pyx_t_2 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 357, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_days = ((int32_t)__pyx_t_2); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":358 + * cdef: + * int32_t days = cpython.PyLong_AsLong(obj.days) + * int64_t seconds = cpython.PyLong_AsLongLong(obj.seconds) # <<<<<<<<<<<<<< + * int32_t microseconds = cpython.PyLong_AsLong(obj.microseconds) + * +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 358, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyLong_AsLongLong(__pyx_t_1); if (unlikely(__pyx_t_3 == ((PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(13, 358, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_seconds = __pyx_t_3; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":359 + * int32_t days = cpython.PyLong_AsLong(obj.days) + * int64_t seconds = cpython.PyLong_AsLongLong(obj.seconds) + * int32_t microseconds = cpython.PyLong_AsLong(obj.microseconds) # <<<<<<<<<<<<<< + * + * buf.write_int32(16) +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_microseconds); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 359, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyLong_AsLong(__pyx_t_1); if (unlikely(__pyx_t_2 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 359, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_microseconds = ((int32_t)__pyx_t_2); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":361 + * int32_t microseconds = cpython.PyLong_AsLong(obj.microseconds) + * + * buf.write_int32(16) # <<<<<<<<<<<<<< + * _encode_time(buf, seconds, microseconds) + * buf.write_int32(days) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 16); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 361, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":362 + * + * buf.write_int32(16) + * _encode_time(buf, seconds, microseconds) # <<<<<<<<<<<<<< + * buf.write_int32(days) + * buf.write_int32(0) # Months +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__encode_time(__pyx_v_buf, __pyx_v_seconds, __pyx_v_microseconds); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 362, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":363 + * buf.write_int32(16) + * _encode_time(buf, seconds, microseconds) + * buf.write_int32(days) # <<<<<<<<<<<<<< + * buf.write_int32(0) # Months + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, __pyx_v_days); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 363, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":364 + * _encode_time(buf, seconds, microseconds) + * buf.write_int32(days) + * buf.write_int32(0) # Months # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 364, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":355 + * + * + * cdef interval_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * int32_t days = cpython.PyLong_AsLong(obj.days) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.interval_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":367 + * + * + * cdef interval_encode_tuple(CodecContext settings, WriteBuffer buf, # <<<<<<<<<<<<<< + * tuple obj): + * cdef: +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_interval_encode_tuple(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + int32_t __pyx_v_months; + int32_t __pyx_v_days; + int64_t __pyx_v_microseconds; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int32_t __pyx_t_10; + int64_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("interval_encode_tuple", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":374 + * int64_t microseconds + * + * if len(obj) != 3: # <<<<<<<<<<<<<< + * raise ValueError( + * 'interval tuple encoder: expecting 3 elements ' +*/ + if (unlikely(__pyx_v_obj == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(13, 374, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(13, 374, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_1 != 3); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":375 + * + * if len(obj) != 3: + * raise ValueError( # <<<<<<<<<<<<<< + * 'interval tuple encoder: expecting 3 elements ' + * 'in tuple, got {}'.format(len(obj))) +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_5 = __pyx_builtin_ValueError; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":377 + * raise ValueError( + * 'interval tuple encoder: expecting 3 elements ' + * 'in tuple, got {}'.format(len(obj))) # <<<<<<<<<<<<<< + * + * months = obj[0] +*/ + __pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_interval_tuple_encoder_expecting; + __Pyx_INCREF(__pyx_t_7); + if (unlikely(__pyx_v_obj == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(13, 377, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(13, 377, __pyx_L1_error) + __pyx_t_8 = PyLong_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 377, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_8}; + __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 377, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __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_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 375, __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(13, 375, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":374 + * int64_t microseconds + * + * if len(obj) != 3: # <<<<<<<<<<<<<< + * raise ValueError( + * 'interval tuple encoder: expecting 3 elements ' +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":379 + * 'in tuple, got {}'.format(len(obj))) + * + * months = obj[0] # <<<<<<<<<<<<<< + * days = obj[1] + * microseconds = obj[2] +*/ + if (unlikely(__pyx_v_obj == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(13, 379, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_obj, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 379, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyLong_As_int32_t(__pyx_t_3); if (unlikely((__pyx_t_10 == ((int32_t)-1)) && PyErr_Occurred())) __PYX_ERR(13, 379, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_months = __pyx_t_10; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":380 + * + * months = obj[0] + * days = obj[1] # <<<<<<<<<<<<<< + * microseconds = obj[2] + * +*/ + if (unlikely(__pyx_v_obj == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(13, 380, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_obj, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 380, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyLong_As_int32_t(__pyx_t_3); if (unlikely((__pyx_t_10 == ((int32_t)-1)) && PyErr_Occurred())) __PYX_ERR(13, 380, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_days = __pyx_t_10; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":381 + * months = obj[0] + * days = obj[1] + * microseconds = obj[2] # <<<<<<<<<<<<<< + * + * buf.write_int32(16) +*/ + if (unlikely(__pyx_v_obj == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(13, 381, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_obj, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 381, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_11 = __Pyx_PyLong_As_int64_t(__pyx_t_3); if (unlikely((__pyx_t_11 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(13, 381, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_microseconds = __pyx_t_11; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":383 + * microseconds = obj[2] + * + * buf.write_int32(16) # <<<<<<<<<<<<<< + * buf.write_int64(microseconds) + * buf.write_int32(days) +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 16); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 383, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":384 + * + * buf.write_int32(16) + * buf.write_int64(microseconds) # <<<<<<<<<<<<<< + * buf.write_int32(days) + * buf.write_int32(months) +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(__pyx_v_buf, __pyx_v_microseconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 384, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":385 + * buf.write_int32(16) + * buf.write_int64(microseconds) + * buf.write_int32(days) # <<<<<<<<<<<<<< + * buf.write_int32(months) + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, __pyx_v_days); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 385, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":386 + * buf.write_int64(microseconds) + * buf.write_int32(days) + * buf.write_int32(months) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, __pyx_v_months); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 386, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":367 + * + * + * cdef interval_encode_tuple(CodecContext settings, WriteBuffer buf, # <<<<<<<<<<<<<< + * tuple obj): + * cdef: +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.interval_encode_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":389 + * + * + * cdef interval_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int32_t days +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_interval_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + int32_t __pyx_v_days; + int32_t __pyx_v_months; + int32_t __pyx_v_years; + int64_t __pyx_v_seconds; + int32_t __pyx_v_microseconds; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int32_t __pyx_t_1; + char const *__pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + size_t __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("interval_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":394 + * int32_t months + * int32_t years + * int64_t seconds = 0 # <<<<<<<<<<<<<< + * int32_t microseconds = 0 + * +*/ + __pyx_v_seconds = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":395 + * int32_t years + * int64_t seconds = 0 + * int32_t microseconds = 0 # <<<<<<<<<<<<<< + * + * _decode_time(buf, &seconds, µseconds) +*/ + __pyx_v_microseconds = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":397 + * int32_t microseconds = 0 + * + * _decode_time(buf, &seconds, µseconds) # <<<<<<<<<<<<<< + * + * days = hton.unpack_int32(frb_read(buf, 4)) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__decode_time(__pyx_v_buf, (&__pyx_v_seconds), (&__pyx_v_microseconds)); if (unlikely(__pyx_t_1 == ((int32_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 397, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":399 + * _decode_time(buf, &seconds, µseconds) + * + * days = hton.unpack_int32(frb_read(buf, 4)) # <<<<<<<<<<<<<< + * months = hton.unpack_int32(frb_read(buf, 4)) + * +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_2 == ((char const *)0))) __PYX_ERR(13, 399, __pyx_L1_error) + __pyx_v_days = unpack_int32(__pyx_t_2); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":400 + * + * days = hton.unpack_int32(frb_read(buf, 4)) + * months = hton.unpack_int32(frb_read(buf, 4)) # <<<<<<<<<<<<<< + * + * if months < 0: +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_2 == ((char const *)0))) __PYX_ERR(13, 400, __pyx_L1_error) + __pyx_v_months = unpack_int32(__pyx_t_2); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":402 + * months = hton.unpack_int32(frb_read(buf, 4)) + * + * if months < 0: # <<<<<<<<<<<<<< + * years = -(-months // 12) + * months = -(-months % 12) +*/ + __pyx_t_3 = (__pyx_v_months < 0); + if (__pyx_t_3) { + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":403 + * + * if months < 0: + * years = -(-months // 12) # <<<<<<<<<<<<<< + * months = -(-months % 12) + * else: +*/ + __pyx_v_years = (-((int32_t)__Pyx_div_long((-__pyx_v_months), 12, 1))); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":404 + * if months < 0: + * years = -(-months // 12) + * months = -(-months % 12) # <<<<<<<<<<<<<< + * else: + * years = (months // 12) +*/ + __pyx_v_months = (-((int32_t)__Pyx_mod_long((-__pyx_v_months), 12, 1))); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":402 + * months = hton.unpack_int32(frb_read(buf, 4)) + * + * if months < 0: # <<<<<<<<<<<<<< + * years = -(-months // 12) + * months = -(-months % 12) +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":406 + * months = -(-months % 12) + * else: + * years = (months // 12) # <<<<<<<<<<<<<< + * months = (months % 12) + * +*/ + /*else*/ { + __pyx_v_years = ((int32_t)__Pyx_div_long(__pyx_v_months, 12, 1)); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":407 + * else: + * years = (months // 12) + * months = (months % 12) # <<<<<<<<<<<<<< + * + * return datetime.timedelta(days=days + months * 30 + years * 365, +*/ + __pyx_v_months = ((int32_t)__Pyx_mod_long(__pyx_v_months, 12, 1)); + } + __pyx_L3:; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":409 + * months = (months % 12) + * + * return datetime.timedelta(days=days + months * 30 + years * 365, # <<<<<<<<<<<<<< + * seconds=seconds, microseconds=microseconds) + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 409, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 409, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_6 = __Pyx_PyLong_From_long(((__pyx_v_days + (__pyx_v_months * 30)) + (__pyx_v_years * 0x16D))); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 409, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":410 + * + * return datetime.timedelta(days=days + months * 30 + years * 365, + * seconds=seconds, microseconds=microseconds) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_8 = __Pyx_PyLong_From_int64_t(__pyx_v_seconds); if (unlikely(!__pyx_t_8)) __PYX_ERR(13, 410, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = __Pyx_PyLong_From_int32_t(__pyx_v_microseconds); if (unlikely(!__pyx_t_9)) __PYX_ERR(13, 410, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __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[2 + ((CYTHON_VECTORCALL) ? 3 : 0)] = {__pyx_t_5, NULL}; + __pyx_t_11 = __Pyx_MakeVectorcallBuilderKwds(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(13, 409, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_days, __pyx_t_6, __pyx_t_11, __pyx_callargs+1, 0) < 0) __PYX_ERR(13, 409, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_8, __pyx_t_11, __pyx_callargs+1, 1) < 0) __PYX_ERR(13, 409, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_9, __pyx_t_11, __pyx_callargs+1, 2) < 0) __PYX_ERR(13, 409, __pyx_L1_error) + __pyx_t_4 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_7, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_11); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 409, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":389 + * + * + * cdef interval_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int32_t days +*/ + + /* 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_11); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.interval_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":413 + * + * + * cdef interval_decode_tuple(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int32_t days +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_interval_decode_tuple(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + int32_t __pyx_v_days; + int32_t __pyx_v_months; + int64_t __pyx_v_microseconds; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("interval_decode_tuple", 0); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":419 + * int64_t microseconds + * + * microseconds = hton.unpack_int64(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * days = hton.unpack_int32(frb_read(buf, 4)) + * months = hton.unpack_int32(frb_read(buf, 4)) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(13, 419, __pyx_L1_error) + __pyx_v_microseconds = unpack_int64(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":420 + * + * microseconds = hton.unpack_int64(frb_read(buf, 8)) + * days = hton.unpack_int32(frb_read(buf, 4)) # <<<<<<<<<<<<<< + * months = hton.unpack_int32(frb_read(buf, 4)) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(13, 420, __pyx_L1_error) + __pyx_v_days = unpack_int32(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":421 + * microseconds = hton.unpack_int64(frb_read(buf, 8)) + * days = hton.unpack_int32(frb_read(buf, 4)) + * months = hton.unpack_int32(frb_read(buf, 4)) # <<<<<<<<<<<<<< + * + * return (months, days, microseconds) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(13, 421, __pyx_L1_error) + __pyx_v_months = unpack_int32(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":423 + * months = hton.unpack_int32(frb_read(buf, 4)) + * + * return (months, days, microseconds) # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyLong_From_int32_t(__pyx_v_months); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 423, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyLong_From_int32_t(__pyx_v_days); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 423, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyLong_From_int64_t(__pyx_v_microseconds); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 423, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 423, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2) != (0)) __PYX_ERR(13, 423, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3) != (0)) __PYX_ERR(13, 423, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4) != (0)) __PYX_ERR(13, 423, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_t_3 = 0; + __pyx_t_4 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":413 + * + * + * cdef interval_decode_tuple(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int32_t days +*/ + + /* 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("async_gaussdb.gaussdbproto.gaussdbproto.interval_decode_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/float.pyx":11 + * + * + * cdef float4_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef double dval = cpython.PyFloat_AsDouble(obj) + * cdef float fval = dval +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_float4_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + double __pyx_v_dval; + float __pyx_v_fval; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + double __pyx_t_1; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("float4_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":12 + * + * cdef float4_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef double dval = cpython.PyFloat_AsDouble(obj) # <<<<<<<<<<<<<< + * cdef float fval = dval + * if math.isinf(fval) and not math.isinf(dval): +*/ + __pyx_t_1 = PyFloat_AsDouble(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((double)-1.0) && PyErr_Occurred())) __PYX_ERR(14, 12, __pyx_L1_error) + __pyx_v_dval = __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":13 + * cdef float4_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef double dval = cpython.PyFloat_AsDouble(obj) + * cdef float fval = dval # <<<<<<<<<<<<<< + * if math.isinf(fval) and not math.isinf(dval): + * raise ValueError('value out of float32 range') +*/ + __pyx_v_fval = ((float)__pyx_v_dval); + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":14 + * cdef double dval = cpython.PyFloat_AsDouble(obj) + * cdef float fval = dval + * if math.isinf(fval) and not math.isinf(dval): # <<<<<<<<<<<<<< + * raise ValueError('value out of float32 range') + * +*/ + __pyx_t_3 = (isinf(__pyx_v_fval) != 0); + if (__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_3 = (!(isinf(__pyx_v_dval) != 0)); + __pyx_t_2 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":15 + * cdef float fval = dval + * if math.isinf(fval) and not math.isinf(dval): + * raise ValueError('value out of float32 range') # <<<<<<<<<<<<<< + * + * buf.write_int32(4) +*/ + __pyx_t_5 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_6 = __pyx_builtin_ValueError; + __pyx_t_7 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_value_out_of_float32_range}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 15, __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(14, 15, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":14 + * cdef double dval = cpython.PyFloat_AsDouble(obj) + * cdef float fval = dval + * if math.isinf(fval) and not math.isinf(dval): # <<<<<<<<<<<<<< + * raise ValueError('value out of float32 range') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":17 + * raise ValueError('value out of float32 range') + * + * buf.write_int32(4) # <<<<<<<<<<<<<< + * buf.write_float(fval) + * +*/ + __pyx_t_4 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 4); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":18 + * + * buf.write_int32(4) + * buf.write_float(fval) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_4 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_float(__pyx_v_buf, __pyx_v_fval); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":11 + * + * + * cdef float4_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef double dval = cpython.PyFloat_AsDouble(obj) + * cdef float fval = dval +*/ + + /* 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_6); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.float4_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/float.pyx":21 + * + * + * cdef float4_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef float f = hton.unpack_float(frb_read(buf, 4)) + * return cpython.PyFloat_FromDouble(f) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_float4_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + float __pyx_v_f; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("float4_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":22 + * + * cdef float4_decode(CodecContext settings, FRBuffer *buf): + * cdef float f = hton.unpack_float(frb_read(buf, 4)) # <<<<<<<<<<<<<< + * return cpython.PyFloat_FromDouble(f) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(14, 22, __pyx_L1_error) + __pyx_v_f = unpack_float(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":23 + * cdef float4_decode(CodecContext settings, FRBuffer *buf): + * cdef float f = hton.unpack_float(frb_read(buf, 4)) + * return cpython.PyFloat_FromDouble(f) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = PyFloat_FromDouble(__pyx_v_f); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":21 + * + * + * cdef float4_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef float f = hton.unpack_float(frb_read(buf, 4)) + * return cpython.PyFloat_FromDouble(f) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.float4_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/float.pyx":26 + * + * + * cdef float8_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef double dval = cpython.PyFloat_AsDouble(obj) + * buf.write_int32(8) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_float8_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + double __pyx_v_dval; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + double __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("float8_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":27 + * + * cdef float8_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef double dval = cpython.PyFloat_AsDouble(obj) # <<<<<<<<<<<<<< + * buf.write_int32(8) + * buf.write_double(dval) +*/ + __pyx_t_1 = PyFloat_AsDouble(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((double)-1.0) && PyErr_Occurred())) __PYX_ERR(14, 27, __pyx_L1_error) + __pyx_v_dval = __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":28 + * cdef float8_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef double dval = cpython.PyFloat_AsDouble(obj) + * buf.write_int32(8) # <<<<<<<<<<<<<< + * buf.write_double(dval) + * +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 8); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":29 + * cdef double dval = cpython.PyFloat_AsDouble(obj) + * buf.write_int32(8) + * buf.write_double(dval) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_double(__pyx_v_buf, __pyx_v_dval); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":26 + * + * + * cdef float8_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef double dval = cpython.PyFloat_AsDouble(obj) + * buf.write_int32(8) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.float8_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/float.pyx":32 + * + * + * cdef float8_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef double f = hton.unpack_double(frb_read(buf, 8)) + * return cpython.PyFloat_FromDouble(f) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_float8_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + double __pyx_v_f; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("float8_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":33 + * + * cdef float8_decode(CodecContext settings, FRBuffer *buf): + * cdef double f = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * return cpython.PyFloat_FromDouble(f) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(14, 33, __pyx_L1_error) + __pyx_v_f = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":34 + * cdef float8_decode(CodecContext settings, FRBuffer *buf): + * cdef double f = hton.unpack_double(frb_read(buf, 8)) + * return cpython.PyFloat_FromDouble(f) # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = PyFloat_FromDouble(__pyx_v_f); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/float.pyx":32 + * + * + * cdef float8_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef double f = hton.unpack_double(frb_read(buf, 8)) + * return cpython.PyFloat_FromDouble(f) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.float8_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/int.pyx":8 + * + * + * cdef bool_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * if not cpython.PyBool_Check(obj): + * raise TypeError('a boolean is required (got type {})'.format( +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_bool_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + char __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("bool_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":9 + * + * cdef bool_encode(CodecContext settings, WriteBuffer buf, obj): + * if not cpython.PyBool_Check(obj): # <<<<<<<<<<<<<< + * raise TypeError('a boolean is required (got type {})'.format( + * type(obj).__name__)) +*/ + __pyx_t_1 = (!PyBool_Check(__pyx_v_obj)); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":10 + * cdef bool_encode(CodecContext settings, WriteBuffer buf, obj): + * if not cpython.PyBool_Check(obj): + * raise TypeError('a boolean is required (got type {})'.format( # <<<<<<<<<<<<<< + * type(obj).__name__)) + * +*/ + __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_builtin_TypeError); + __pyx_t_4 = __pyx_builtin_TypeError; + __pyx_t_6 = __pyx_mstate_global->__pyx_kp_u_a_boolean_is_required_got_type; + __Pyx_INCREF(__pyx_t_6); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":11 + * if not cpython.PyBool_Check(obj): + * raise TypeError('a boolean is required (got type {})'.format( + * type(obj).__name__)) # <<<<<<<<<<<<<< + * + * buf.write_int32(1) +*/ + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_obj)), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_7}; + __pyx_t_5 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (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_5)) __PYX_ERR(5, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __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_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 10, __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(5, 10, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":9 + * + * cdef bool_encode(CodecContext settings, WriteBuffer buf, obj): + * if not cpython.PyBool_Check(obj): # <<<<<<<<<<<<<< + * raise TypeError('a boolean is required (got type {})'.format( + * type(obj).__name__)) +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":13 + * type(obj).__name__)) + * + * buf.write_int32(1) # <<<<<<<<<<<<<< + * buf.write_byte(b'\x01' if obj is True else b'\x00') + * +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":14 + * + * buf.write_int32(1) + * buf.write_byte(b'\x01' if obj is True else b'\x00') # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = (__pyx_v_obj == Py_True); + if (__pyx_t_1) { + __pyx_t_9 = '\x01'; + } else { + __pyx_t_9 = '\x00'; + } + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_byte(__pyx_v_buf, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":8 + * + * + * cdef bool_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * if not cpython.PyBool_Check(obj): + * raise TypeError('a boolean is required (got type {})'.format( +*/ + + /* 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_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.bool_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/int.pyx":17 + * + * + * cdef bool_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return frb_read(buf, 1)[0] is b'\x01' + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_bool_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("bool_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":18 + * + * cdef bool_decode(CodecContext settings, FRBuffer *buf): + * return frb_read(buf, 1)[0] is b'\x01' # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 1); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(5, 18, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(((__pyx_t_1[0]) == '\x01')); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":17 + * + * + * cdef bool_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return frb_read(buf, 1)[0] is b'\x01' + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.bool_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/int.pyx":21 + * + * + * cdef int2_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef int overflow = 0 + * cdef long val +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_int2_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + int __pyx_v_overflow; + long __pyx_v_val; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + long __pyx_t_7; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("int2_encode", 0); + __Pyx_INCREF(__pyx_v_obj); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":22 + * + * cdef int2_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef int overflow = 0 # <<<<<<<<<<<<<< + * cdef long val + * +*/ + __pyx_v_overflow = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":25 + * cdef long val + * + * try: # <<<<<<<<<<<<<< + * if type(obj) is not int and hasattr(type(obj), '__int__'): + * # Silence a Python warning about implicit __int__ +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":26 + * + * try: + * if type(obj) is not int and hasattr(type(obj), '__int__'): # <<<<<<<<<<<<<< + * # Silence a Python warning about implicit __int__ + * # conversion. +*/ + __pyx_t_5 = (((PyObject *)Py_TYPE(__pyx_v_obj)) != ((PyObject *)(&PyLong_Type))); + if (__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L10_bool_binop_done; + } + __pyx_t_5 = __Pyx_HasAttr(((PyObject *)Py_TYPE(__pyx_v_obj)), __pyx_mstate_global->__pyx_n_u_int_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 26, __pyx_L3_error) + __pyx_t_4 = __pyx_t_5; + __pyx_L10_bool_binop_done:; + if (__pyx_t_4) { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":29 + * # Silence a Python warning about implicit __int__ + * # conversion. + * obj = int(obj) # <<<<<<<<<<<<<< + * val = cpython.PyLong_AsLong(obj) + * except OverflowError: +*/ + __pyx_t_6 = __Pyx_PyNumber_Int(__pyx_v_obj); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 29, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_6); + __pyx_t_6 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":26 + * + * try: + * if type(obj) is not int and hasattr(type(obj), '__int__'): # <<<<<<<<<<<<<< + * # Silence a Python warning about implicit __int__ + * # conversion. +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":30 + * # conversion. + * obj = int(obj) + * val = cpython.PyLong_AsLong(obj) # <<<<<<<<<<<<<< + * except OverflowError: + * overflow = 1 +*/ + __pyx_t_7 = PyLong_AsLong(__pyx_v_obj); if (unlikely(__pyx_t_7 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(5, 30, __pyx_L3_error) + __pyx_v_val = __pyx_t_7; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":25 + * cdef long val + * + * try: # <<<<<<<<<<<<<< + * if type(obj) is not int and hasattr(type(obj), '__int__'): + * # Silence a Python warning about implicit __int__ +*/ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":31 + * obj = int(obj) + * val = cpython.PyLong_AsLong(obj) + * except OverflowError: # <<<<<<<<<<<<<< + * overflow = 1 + * +*/ + __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OverflowError); + if (__pyx_t_8) { + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.int2_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(5, 31, __pyx_L5_except_error) + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_10); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":32 + * val = cpython.PyLong_AsLong(obj) + * except OverflowError: + * overflow = 1 # <<<<<<<<<<<<<< + * + * if overflow or val < INT16_MIN or val > INT16_MAX: +*/ + __pyx_v_overflow = 1; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + goto __pyx_L4_exception_handled; + } + goto __pyx_L5_except_error; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":25 + * cdef long val + * + * try: # <<<<<<<<<<<<<< + * if type(obj) is not int and hasattr(type(obj), '__int__'): + * # Silence a Python warning about implicit __int__ +*/ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L4_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_L8_try_end:; + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":34 + * overflow = 1 + * + * if overflow or val < INT16_MIN or val > INT16_MAX: # <<<<<<<<<<<<<< + * raise OverflowError('value out of int16 range') + * +*/ + __pyx_t_5 = (__pyx_v_overflow != 0); + if (!__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_5 = (__pyx_v_val < INT16_MIN); + if (!__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_5 = (__pyx_v_val > INT16_MAX); + __pyx_t_4 = __pyx_t_5; + __pyx_L15_bool_binop_done:; + if (unlikely(__pyx_t_4)) { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":35 + * + * if overflow or val < INT16_MIN or val > INT16_MAX: + * raise OverflowError('value out of int16 range') # <<<<<<<<<<<<<< + * + * buf.write_int32(2) +*/ + __pyx_t_9 = NULL; + __Pyx_INCREF(__pyx_builtin_OverflowError); + __pyx_t_6 = __pyx_builtin_OverflowError; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_value_out_of_int16_range}; + __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 35, __pyx_L1_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(5, 35, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":34 + * overflow = 1 + * + * if overflow or val < INT16_MIN or val > INT16_MAX: # <<<<<<<<<<<<<< + * raise OverflowError('value out of int16 range') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":37 + * raise OverflowError('value out of int16 range') + * + * buf.write_int32(2) # <<<<<<<<<<<<<< + * buf.write_int16(val) + * +*/ + __pyx_t_10 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 2); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":38 + * + * buf.write_int32(2) + * buf.write_int16(val) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_10 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int16(__pyx_v_buf, ((int16_t)__pyx_v_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":21 + * + * + * cdef int2_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef int overflow = 0 + * cdef long val +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.int2_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_obj); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/int.pyx":41 + * + * + * cdef int2_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return cpython.PyLong_FromLong(hton.unpack_int16(frb_read(buf, 2))) + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_int2_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("int2_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":42 + * + * cdef int2_decode(CodecContext settings, FRBuffer *buf): + * return cpython.PyLong_FromLong(hton.unpack_int16(frb_read(buf, 2))) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 2); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(5, 42, __pyx_L1_error) + __pyx_t_2 = PyLong_FromLong(unpack_int16(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 42, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":41 + * + * + * cdef int2_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return cpython.PyLong_FromLong(hton.unpack_int16(frb_read(buf, 2))) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.int2_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/int.pyx":45 + * + * + * cdef int4_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef int overflow = 0 + * cdef long val = 0 +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_int4_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + int __pyx_v_overflow; + long __pyx_v_val; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + long __pyx_t_7; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("int4_encode", 0); + __Pyx_INCREF(__pyx_v_obj); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":46 + * + * cdef int4_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef int overflow = 0 # <<<<<<<<<<<<<< + * cdef long val = 0 + * +*/ + __pyx_v_overflow = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":47 + * cdef int4_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef int overflow = 0 + * cdef long val = 0 # <<<<<<<<<<<<<< + * + * try: +*/ + __pyx_v_val = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":49 + * cdef long val = 0 + * + * try: # <<<<<<<<<<<<<< + * if type(obj) is not int and hasattr(type(obj), '__int__'): + * # Silence a Python warning about implicit __int__ +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":50 + * + * try: + * if type(obj) is not int and hasattr(type(obj), '__int__'): # <<<<<<<<<<<<<< + * # Silence a Python warning about implicit __int__ + * # conversion. +*/ + __pyx_t_5 = (((PyObject *)Py_TYPE(__pyx_v_obj)) != ((PyObject *)(&PyLong_Type))); + if (__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L10_bool_binop_done; + } + __pyx_t_5 = __Pyx_HasAttr(((PyObject *)Py_TYPE(__pyx_v_obj)), __pyx_mstate_global->__pyx_n_u_int_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 50, __pyx_L3_error) + __pyx_t_4 = __pyx_t_5; + __pyx_L10_bool_binop_done:; + if (__pyx_t_4) { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":53 + * # Silence a Python warning about implicit __int__ + * # conversion. + * obj = int(obj) # <<<<<<<<<<<<<< + * val = cpython.PyLong_AsLong(obj) + * except OverflowError: +*/ + __pyx_t_6 = __Pyx_PyNumber_Int(__pyx_v_obj); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 53, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_6); + __pyx_t_6 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":50 + * + * try: + * if type(obj) is not int and hasattr(type(obj), '__int__'): # <<<<<<<<<<<<<< + * # Silence a Python warning about implicit __int__ + * # conversion. +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":54 + * # conversion. + * obj = int(obj) + * val = cpython.PyLong_AsLong(obj) # <<<<<<<<<<<<<< + * except OverflowError: + * overflow = 1 +*/ + __pyx_t_7 = PyLong_AsLong(__pyx_v_obj); if (unlikely(__pyx_t_7 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(5, 54, __pyx_L3_error) + __pyx_v_val = __pyx_t_7; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":49 + * cdef long val = 0 + * + * try: # <<<<<<<<<<<<<< + * if type(obj) is not int and hasattr(type(obj), '__int__'): + * # Silence a Python warning about implicit __int__ +*/ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":55 + * obj = int(obj) + * val = cpython.PyLong_AsLong(obj) + * except OverflowError: # <<<<<<<<<<<<<< + * overflow = 1 + * +*/ + __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OverflowError); + if (__pyx_t_8) { + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.int4_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(5, 55, __pyx_L5_except_error) + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_10); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":56 + * val = cpython.PyLong_AsLong(obj) + * except OverflowError: + * overflow = 1 # <<<<<<<<<<<<<< + * + * # "long" and "long long" have the same size for x86_64, need an extra check +*/ + __pyx_v_overflow = 1; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + goto __pyx_L4_exception_handled; + } + goto __pyx_L5_except_error; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":49 + * cdef long val = 0 + * + * try: # <<<<<<<<<<<<<< + * if type(obj) is not int and hasattr(type(obj), '__int__'): + * # Silence a Python warning about implicit __int__ +*/ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L4_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_L8_try_end:; + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":59 + * + * # "long" and "long long" have the same size for x86_64, need an extra check + * if overflow or (sizeof(val) > 4 and (val < INT32_MIN or val > INT32_MAX)): # <<<<<<<<<<<<<< + * raise OverflowError('value out of int32 range') + * +*/ + __pyx_t_5 = (__pyx_v_overflow != 0); + if (!__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_5 = ((sizeof(__pyx_v_val)) > 4); + if (__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_5 = (__pyx_v_val < INT32_MIN); + if (!__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_5 = (__pyx_v_val > INT32_MAX); + __pyx_t_4 = __pyx_t_5; + __pyx_L15_bool_binop_done:; + if (unlikely(__pyx_t_4)) { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":60 + * # "long" and "long long" have the same size for x86_64, need an extra check + * if overflow or (sizeof(val) > 4 and (val < INT32_MIN or val > INT32_MAX)): + * raise OverflowError('value out of int32 range') # <<<<<<<<<<<<<< + * + * buf.write_int32(4) +*/ + __pyx_t_9 = NULL; + __Pyx_INCREF(__pyx_builtin_OverflowError); + __pyx_t_6 = __pyx_builtin_OverflowError; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_value_out_of_int32_range}; + __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 60, __pyx_L1_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(5, 60, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":59 + * + * # "long" and "long long" have the same size for x86_64, need an extra check + * if overflow or (sizeof(val) > 4 and (val < INT32_MIN or val > INT32_MAX)): # <<<<<<<<<<<<<< + * raise OverflowError('value out of int32 range') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":62 + * raise OverflowError('value out of int32 range') + * + * buf.write_int32(4) # <<<<<<<<<<<<<< + * buf.write_int32(val) + * +*/ + __pyx_t_10 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 4); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 62, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":63 + * + * buf.write_int32(4) + * buf.write_int32(val) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_10 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, ((int32_t)__pyx_v_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":45 + * + * + * cdef int4_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef int overflow = 0 + * cdef long val = 0 +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.int4_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_obj); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/int.pyx":66 + * + * + * cdef int4_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return cpython.PyLong_FromLong(hton.unpack_int32(frb_read(buf, 4))) + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_int4_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("int4_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":67 + * + * cdef int4_decode(CodecContext settings, FRBuffer *buf): + * return cpython.PyLong_FromLong(hton.unpack_int32(frb_read(buf, 4))) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(5, 67, __pyx_L1_error) + __pyx_t_2 = PyLong_FromLong(unpack_int32(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":66 + * + * + * cdef int4_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return cpython.PyLong_FromLong(hton.unpack_int32(frb_read(buf, 4))) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.int4_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/int.pyx":70 + * + * + * cdef uint4_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef int overflow = 0 + * cdef unsigned long val = 0 +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_uint4_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + int __pyx_v_overflow; + unsigned long __pyx_v_val; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + unsigned long __pyx_t_7; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("uint4_encode", 0); + __Pyx_INCREF(__pyx_v_obj); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":71 + * + * cdef uint4_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef int overflow = 0 # <<<<<<<<<<<<<< + * cdef unsigned long val = 0 + * +*/ + __pyx_v_overflow = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":72 + * cdef uint4_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef int overflow = 0 + * cdef unsigned long val = 0 # <<<<<<<<<<<<<< + * + * try: +*/ + __pyx_v_val = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":74 + * cdef unsigned long val = 0 + * + * try: # <<<<<<<<<<<<<< + * if type(obj) is not int and hasattr(type(obj), '__int__'): + * # Silence a Python warning about implicit __int__ +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":75 + * + * try: + * if type(obj) is not int and hasattr(type(obj), '__int__'): # <<<<<<<<<<<<<< + * # Silence a Python warning about implicit __int__ + * # conversion. +*/ + __pyx_t_5 = (((PyObject *)Py_TYPE(__pyx_v_obj)) != ((PyObject *)(&PyLong_Type))); + if (__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L10_bool_binop_done; + } + __pyx_t_5 = __Pyx_HasAttr(((PyObject *)Py_TYPE(__pyx_v_obj)), __pyx_mstate_global->__pyx_n_u_int_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 75, __pyx_L3_error) + __pyx_t_4 = __pyx_t_5; + __pyx_L10_bool_binop_done:; + if (__pyx_t_4) { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":78 + * # Silence a Python warning about implicit __int__ + * # conversion. + * obj = int(obj) # <<<<<<<<<<<<<< + * val = cpython.PyLong_AsUnsignedLong(obj) + * except OverflowError: +*/ + __pyx_t_6 = __Pyx_PyNumber_Int(__pyx_v_obj); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 78, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_6); + __pyx_t_6 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":75 + * + * try: + * if type(obj) is not int and hasattr(type(obj), '__int__'): # <<<<<<<<<<<<<< + * # Silence a Python warning about implicit __int__ + * # conversion. +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":79 + * # conversion. + * obj = int(obj) + * val = cpython.PyLong_AsUnsignedLong(obj) # <<<<<<<<<<<<<< + * except OverflowError: + * overflow = 1 +*/ + __pyx_t_7 = PyLong_AsUnsignedLong(__pyx_v_obj); if (unlikely(__pyx_t_7 == ((unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(5, 79, __pyx_L3_error) + __pyx_v_val = __pyx_t_7; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":74 + * cdef unsigned long val = 0 + * + * try: # <<<<<<<<<<<<<< + * if type(obj) is not int and hasattr(type(obj), '__int__'): + * # Silence a Python warning about implicit __int__ +*/ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":80 + * obj = int(obj) + * val = cpython.PyLong_AsUnsignedLong(obj) + * except OverflowError: # <<<<<<<<<<<<<< + * overflow = 1 + * +*/ + __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OverflowError); + if (__pyx_t_8) { + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.uint4_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(5, 80, __pyx_L5_except_error) + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_10); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":81 + * val = cpython.PyLong_AsUnsignedLong(obj) + * except OverflowError: + * overflow = 1 # <<<<<<<<<<<<<< + * + * # "long" and "long long" have the same size for x86_64, need an extra check +*/ + __pyx_v_overflow = 1; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + goto __pyx_L4_exception_handled; + } + goto __pyx_L5_except_error; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":74 + * cdef unsigned long val = 0 + * + * try: # <<<<<<<<<<<<<< + * if type(obj) is not int and hasattr(type(obj), '__int__'): + * # Silence a Python warning about implicit __int__ +*/ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L4_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_L8_try_end:; + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":84 + * + * # "long" and "long long" have the same size for x86_64, need an extra check + * if overflow or (sizeof(val) > 4 and val > UINT32_MAX): # <<<<<<<<<<<<<< + * raise OverflowError('value out of uint32 range') + * +*/ + __pyx_t_5 = (__pyx_v_overflow != 0); + if (!__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_5 = ((sizeof(__pyx_v_val)) > 4); + if (__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_5 = (__pyx_v_val > UINT32_MAX); + __pyx_t_4 = __pyx_t_5; + __pyx_L15_bool_binop_done:; + if (unlikely(__pyx_t_4)) { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":85 + * # "long" and "long long" have the same size for x86_64, need an extra check + * if overflow or (sizeof(val) > 4 and val > UINT32_MAX): + * raise OverflowError('value out of uint32 range') # <<<<<<<<<<<<<< + * + * buf.write_int32(4) +*/ + __pyx_t_9 = NULL; + __Pyx_INCREF(__pyx_builtin_OverflowError); + __pyx_t_6 = __pyx_builtin_OverflowError; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_value_out_of_uint32_range}; + __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 85, __pyx_L1_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(5, 85, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":84 + * + * # "long" and "long long" have the same size for x86_64, need an extra check + * if overflow or (sizeof(val) > 4 and val > UINT32_MAX): # <<<<<<<<<<<<<< + * raise OverflowError('value out of uint32 range') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":87 + * raise OverflowError('value out of uint32 range') + * + * buf.write_int32(4) # <<<<<<<<<<<<<< + * buf.write_int32(val) + * +*/ + __pyx_t_10 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 4); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":88 + * + * buf.write_int32(4) + * buf.write_int32(val) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_10 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, ((int32_t)__pyx_v_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 88, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":70 + * + * + * cdef uint4_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef int overflow = 0 + * cdef unsigned long val = 0 +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.uint4_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_obj); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/int.pyx":91 + * + * + * cdef uint4_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return cpython.PyLong_FromUnsignedLong( + * hton.unpack_int32(frb_read(buf, 4))) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_uint4_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("uint4_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":92 + * + * cdef uint4_decode(CodecContext settings, FRBuffer *buf): + * return cpython.PyLong_FromUnsignedLong( # <<<<<<<<<<<<<< + * hton.unpack_int32(frb_read(buf, 4))) + * +*/ + __Pyx_XDECREF(__pyx_r); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":93 + * cdef uint4_decode(CodecContext settings, FRBuffer *buf): + * return cpython.PyLong_FromUnsignedLong( + * hton.unpack_int32(frb_read(buf, 4))) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(5, 93, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":92 + * + * cdef uint4_decode(CodecContext settings, FRBuffer *buf): + * return cpython.PyLong_FromUnsignedLong( # <<<<<<<<<<<<<< + * hton.unpack_int32(frb_read(buf, 4))) + * +*/ + __pyx_t_2 = PyLong_FromUnsignedLong(((uint32_t)unpack_int32(__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":91 + * + * + * cdef uint4_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return cpython.PyLong_FromUnsignedLong( + * hton.unpack_int32(frb_read(buf, 4))) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.uint4_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/int.pyx":96 + * + * + * cdef int8_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef int overflow = 0 + * cdef long long val +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_int8_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + int __pyx_v_overflow; + PY_LONG_LONG __pyx_v_val; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PY_LONG_LONG __pyx_t_7; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("int8_encode", 0); + __Pyx_INCREF(__pyx_v_obj); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":97 + * + * cdef int8_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef int overflow = 0 # <<<<<<<<<<<<<< + * cdef long long val + * +*/ + __pyx_v_overflow = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":100 + * cdef long long val + * + * try: # <<<<<<<<<<<<<< + * if type(obj) is not int and hasattr(type(obj), '__int__'): + * # Silence a Python warning about implicit __int__ +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":101 + * + * try: + * if type(obj) is not int and hasattr(type(obj), '__int__'): # <<<<<<<<<<<<<< + * # Silence a Python warning about implicit __int__ + * # conversion. +*/ + __pyx_t_5 = (((PyObject *)Py_TYPE(__pyx_v_obj)) != ((PyObject *)(&PyLong_Type))); + if (__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L10_bool_binop_done; + } + __pyx_t_5 = __Pyx_HasAttr(((PyObject *)Py_TYPE(__pyx_v_obj)), __pyx_mstate_global->__pyx_n_u_int_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 101, __pyx_L3_error) + __pyx_t_4 = __pyx_t_5; + __pyx_L10_bool_binop_done:; + if (__pyx_t_4) { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":104 + * # Silence a Python warning about implicit __int__ + * # conversion. + * obj = int(obj) # <<<<<<<<<<<<<< + * val = cpython.PyLong_AsLongLong(obj) + * except OverflowError: +*/ + __pyx_t_6 = __Pyx_PyNumber_Int(__pyx_v_obj); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 104, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_6); + __pyx_t_6 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":101 + * + * try: + * if type(obj) is not int and hasattr(type(obj), '__int__'): # <<<<<<<<<<<<<< + * # Silence a Python warning about implicit __int__ + * # conversion. +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":105 + * # conversion. + * obj = int(obj) + * val = cpython.PyLong_AsLongLong(obj) # <<<<<<<<<<<<<< + * except OverflowError: + * overflow = 1 +*/ + __pyx_t_7 = PyLong_AsLongLong(__pyx_v_obj); if (unlikely(__pyx_t_7 == ((PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(5, 105, __pyx_L3_error) + __pyx_v_val = __pyx_t_7; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":100 + * cdef long long val + * + * try: # <<<<<<<<<<<<<< + * if type(obj) is not int and hasattr(type(obj), '__int__'): + * # Silence a Python warning about implicit __int__ +*/ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":106 + * obj = int(obj) + * val = cpython.PyLong_AsLongLong(obj) + * except OverflowError: # <<<<<<<<<<<<<< + * overflow = 1 + * +*/ + __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OverflowError); + if (__pyx_t_8) { + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.int8_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(5, 106, __pyx_L5_except_error) + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_10); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":107 + * val = cpython.PyLong_AsLongLong(obj) + * except OverflowError: + * overflow = 1 # <<<<<<<<<<<<<< + * + * # Just in case for systems with "long long" bigger than 8 bytes +*/ + __pyx_v_overflow = 1; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + goto __pyx_L4_exception_handled; + } + goto __pyx_L5_except_error; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":100 + * cdef long long val + * + * try: # <<<<<<<<<<<<<< + * if type(obj) is not int and hasattr(type(obj), '__int__'): + * # Silence a Python warning about implicit __int__ +*/ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L4_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_L8_try_end:; + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":110 + * + * # Just in case for systems with "long long" bigger than 8 bytes + * if overflow or (sizeof(val) > 8 and (val < INT64_MIN or val > INT64_MAX)): # <<<<<<<<<<<<<< + * raise OverflowError('value out of int64 range') + * +*/ + __pyx_t_5 = (__pyx_v_overflow != 0); + if (!__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_5 = ((sizeof(__pyx_v_val)) > 8); + if (__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_5 = (__pyx_v_val < INT64_MIN); + if (!__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_5 = (__pyx_v_val > INT64_MAX); + __pyx_t_4 = __pyx_t_5; + __pyx_L15_bool_binop_done:; + if (unlikely(__pyx_t_4)) { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":111 + * # Just in case for systems with "long long" bigger than 8 bytes + * if overflow or (sizeof(val) > 8 and (val < INT64_MIN or val > INT64_MAX)): + * raise OverflowError('value out of int64 range') # <<<<<<<<<<<<<< + * + * buf.write_int32(8) +*/ + __pyx_t_9 = NULL; + __Pyx_INCREF(__pyx_builtin_OverflowError); + __pyx_t_6 = __pyx_builtin_OverflowError; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_value_out_of_int64_range}; + __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 111, __pyx_L1_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(5, 111, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":110 + * + * # Just in case for systems with "long long" bigger than 8 bytes + * if overflow or (sizeof(val) > 8 and (val < INT64_MIN or val > INT64_MAX)): # <<<<<<<<<<<<<< + * raise OverflowError('value out of int64 range') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":113 + * raise OverflowError('value out of int64 range') + * + * buf.write_int32(8) # <<<<<<<<<<<<<< + * buf.write_int64(val) + * +*/ + __pyx_t_10 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 8); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":114 + * + * buf.write_int32(8) + * buf.write_int64(val) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_10 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(__pyx_v_buf, ((int64_t)__pyx_v_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 114, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":96 + * + * + * cdef int8_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef int overflow = 0 + * cdef long long val +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.int8_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_obj); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/int.pyx":117 + * + * + * cdef int8_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return cpython.PyLong_FromLongLong(hton.unpack_int64(frb_read(buf, 8))) + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_int8_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("int8_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":118 + * + * cdef int8_decode(CodecContext settings, FRBuffer *buf): + * return cpython.PyLong_FromLongLong(hton.unpack_int64(frb_read(buf, 8))) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(5, 118, __pyx_L1_error) + __pyx_t_2 = PyLong_FromLongLong(unpack_int64(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":117 + * + * + * cdef int8_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return cpython.PyLong_FromLongLong(hton.unpack_int64(frb_read(buf, 8))) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.int8_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/int.pyx":121 + * + * + * cdef uint8_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef int overflow = 0 + * cdef unsigned long long val = 0 +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_uint8_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + int __pyx_v_overflow; + unsigned PY_LONG_LONG __pyx_v_val; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + int __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + unsigned PY_LONG_LONG __pyx_t_7; + int __pyx_t_8; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("uint8_encode", 0); + __Pyx_INCREF(__pyx_v_obj); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":122 + * + * cdef uint8_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef int overflow = 0 # <<<<<<<<<<<<<< + * cdef unsigned long long val = 0 + * +*/ + __pyx_v_overflow = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":123 + * cdef uint8_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef int overflow = 0 + * cdef unsigned long long val = 0 # <<<<<<<<<<<<<< + * + * try: +*/ + __pyx_v_val = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":125 + * cdef unsigned long long val = 0 + * + * try: # <<<<<<<<<<<<<< + * if type(obj) is not int and hasattr(type(obj), '__int__'): + * # Silence a Python warning about implicit __int__ +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":126 + * + * try: + * if type(obj) is not int and hasattr(type(obj), '__int__'): # <<<<<<<<<<<<<< + * # Silence a Python warning about implicit __int__ + * # conversion. +*/ + __pyx_t_5 = (((PyObject *)Py_TYPE(__pyx_v_obj)) != ((PyObject *)(&PyLong_Type))); + if (__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L10_bool_binop_done; + } + __pyx_t_5 = __Pyx_HasAttr(((PyObject *)Py_TYPE(__pyx_v_obj)), __pyx_mstate_global->__pyx_n_u_int_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 126, __pyx_L3_error) + __pyx_t_4 = __pyx_t_5; + __pyx_L10_bool_binop_done:; + if (__pyx_t_4) { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":129 + * # Silence a Python warning about implicit __int__ + * # conversion. + * obj = int(obj) # <<<<<<<<<<<<<< + * val = cpython.PyLong_AsUnsignedLongLong(obj) + * except OverflowError: +*/ + __pyx_t_6 = __Pyx_PyNumber_Int(__pyx_v_obj); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 129, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_6); + __pyx_t_6 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":126 + * + * try: + * if type(obj) is not int and hasattr(type(obj), '__int__'): # <<<<<<<<<<<<<< + * # Silence a Python warning about implicit __int__ + * # conversion. +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":130 + * # conversion. + * obj = int(obj) + * val = cpython.PyLong_AsUnsignedLongLong(obj) # <<<<<<<<<<<<<< + * except OverflowError: + * overflow = 1 +*/ + __pyx_t_7 = PyLong_AsUnsignedLongLong(__pyx_v_obj); if (unlikely(__pyx_t_7 == ((unsigned PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(5, 130, __pyx_L3_error) + __pyx_v_val = __pyx_t_7; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":125 + * cdef unsigned long long val = 0 + * + * try: # <<<<<<<<<<<<<< + * if type(obj) is not int and hasattr(type(obj), '__int__'): + * # Silence a Python warning about implicit __int__ +*/ + } + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + goto __pyx_L8_try_end; + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":131 + * obj = int(obj) + * val = cpython.PyLong_AsUnsignedLongLong(obj) + * except OverflowError: # <<<<<<<<<<<<<< + * overflow = 1 + * +*/ + __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OverflowError); + if (__pyx_t_8) { + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.uint8_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(5, 131, __pyx_L5_except_error) + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_9); + __Pyx_XGOTREF(__pyx_t_10); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":132 + * val = cpython.PyLong_AsUnsignedLongLong(obj) + * except OverflowError: + * overflow = 1 # <<<<<<<<<<<<<< + * + * # Just in case for systems with "long long" bigger than 8 bytes +*/ + __pyx_v_overflow = 1; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + goto __pyx_L4_exception_handled; + } + goto __pyx_L5_except_error; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":125 + * cdef unsigned long long val = 0 + * + * try: # <<<<<<<<<<<<<< + * if type(obj) is not int and hasattr(type(obj), '__int__'): + * # Silence a Python warning about implicit __int__ +*/ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L4_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_L8_try_end:; + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":135 + * + * # Just in case for systems with "long long" bigger than 8 bytes + * if overflow or (sizeof(val) > 8 and val > UINT64_MAX): # <<<<<<<<<<<<<< + * raise OverflowError('value out of uint64 range') + * +*/ + __pyx_t_5 = (__pyx_v_overflow != 0); + if (!__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_5 = ((sizeof(__pyx_v_val)) > 8); + if (__pyx_t_5) { + } else { + __pyx_t_4 = __pyx_t_5; + goto __pyx_L15_bool_binop_done; + } + __pyx_t_5 = (__pyx_v_val > UINT64_MAX); + __pyx_t_4 = __pyx_t_5; + __pyx_L15_bool_binop_done:; + if (unlikely(__pyx_t_4)) { + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":136 + * # Just in case for systems with "long long" bigger than 8 bytes + * if overflow or (sizeof(val) > 8 and val > UINT64_MAX): + * raise OverflowError('value out of uint64 range') # <<<<<<<<<<<<<< + * + * buf.write_int32(8) +*/ + __pyx_t_9 = NULL; + __Pyx_INCREF(__pyx_builtin_OverflowError); + __pyx_t_6 = __pyx_builtin_OverflowError; + __pyx_t_11 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_value_out_of_uint64_range}; + __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 136, __pyx_L1_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(5, 136, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":135 + * + * # Just in case for systems with "long long" bigger than 8 bytes + * if overflow or (sizeof(val) > 8 and val > UINT64_MAX): # <<<<<<<<<<<<<< + * raise OverflowError('value out of uint64 range') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":138 + * raise OverflowError('value out of uint64 range') + * + * buf.write_int32(8) # <<<<<<<<<<<<<< + * buf.write_int64(val) + * +*/ + __pyx_t_10 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 8); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 138, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":139 + * + * buf.write_int32(8) + * buf.write_int64(val) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_10 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(__pyx_v_buf, ((int64_t)__pyx_v_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":121 + * + * + * cdef uint8_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef int overflow = 0 + * cdef unsigned long long val = 0 +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.uint8_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_obj); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/int.pyx":142 + * + * + * cdef uint8_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return cpython.PyLong_FromUnsignedLongLong( + * hton.unpack_int64(frb_read(buf, 8))) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_uint8_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("uint8_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":143 + * + * cdef uint8_decode(CodecContext settings, FRBuffer *buf): + * return cpython.PyLong_FromUnsignedLongLong( # <<<<<<<<<<<<<< + * hton.unpack_int64(frb_read(buf, 8))) +*/ + __Pyx_XDECREF(__pyx_r); + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":144 + * cdef uint8_decode(CodecContext settings, FRBuffer *buf): + * return cpython.PyLong_FromUnsignedLongLong( + * hton.unpack_int64(frb_read(buf, 8))) # <<<<<<<<<<<<<< +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(5, 144, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":143 + * + * cdef uint8_decode(CodecContext settings, FRBuffer *buf): + * return cpython.PyLong_FromUnsignedLongLong( # <<<<<<<<<<<<<< + * hton.unpack_int64(frb_read(buf, 8))) +*/ + __pyx_t_2 = PyLong_FromUnsignedLongLong(((uint64_t)unpack_int64(__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 143, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/int.pyx":142 + * + * + * cdef uint8_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return cpython.PyLong_FromUnsignedLongLong( + * hton.unpack_int64(frb_read(buf, 8))) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.uint8_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/json.pyx":8 + * + * + * cdef jsonb_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * char *str +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_jsonb_encode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + char *__pyx_v_str; + Py_ssize_t __pyx_v_size; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("jsonb_encode", 0); + __Pyx_INCREF(__pyx_v_obj); + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":13 + * ssize_t size + * + * if settings.is_encoding_json(): # <<<<<<<<<<<<<< + * obj = settings.get_json_encoder().encode(obj) + * +*/ + __pyx_t_1 = ((struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_settings->__pyx_vtab)->is_encoding_json(__pyx_v_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 13, __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(15, 13, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":14 + * + * if settings.is_encoding_json(): + * obj = settings.get_json_encoder().encode(obj) # <<<<<<<<<<<<<< + * + * as_gaussdb_string_and_size(settings, obj, &str, &size) +*/ + __pyx_t_4 = ((struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_settings->__pyx_vtab)->get_json_encoder(__pyx_v_settings, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 14, __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_obj}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__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_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":13 + * ssize_t size + * + * if settings.is_encoding_json(): # <<<<<<<<<<<<<< + * obj = settings.get_json_encoder().encode(obj) + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":16 + * obj = settings.get_json_encoder().encode(obj) + * + * as_gaussdb_string_and_size(settings, obj, &str, &size) # <<<<<<<<<<<<<< + * + * if size > 0x7fffffff - 1: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_as_gaussdb_string_and_size(__pyx_v_settings, __pyx_v_obj, (&__pyx_v_str), (&__pyx_v_size)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":18 + * as_gaussdb_string_and_size(settings, obj, &str, &size) + * + * if size > 0x7fffffff - 1: # <<<<<<<<<<<<<< + * raise ValueError('string too long') + * +*/ + __pyx_t_2 = (__pyx_v_size > 0x7ffffffe); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":19 + * + * if size > 0x7fffffff - 1: + * raise ValueError('string too long') # <<<<<<<<<<<<<< + * + * buf.write_int32(size + 1) +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_3 = __pyx_builtin_ValueError; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_string_too_long}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__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_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 19, __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(15, 19, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":18 + * as_gaussdb_string_and_size(settings, obj, &str, &size) + * + * if size > 0x7fffffff - 1: # <<<<<<<<<<<<<< + * raise ValueError('string too long') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":21 + * raise ValueError('string too long') + * + * buf.write_int32(size + 1) # <<<<<<<<<<<<<< + * buf.write_byte(1) # JSONB format version + * buf.write_cstr(str, size) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, (((int32_t)__pyx_v_size) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":22 + * + * buf.write_int32(size + 1) + * buf.write_byte(1) # JSONB format version # <<<<<<<<<<<<<< + * buf.write_cstr(str, size) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_byte(__pyx_v_buf, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":23 + * buf.write_int32(size + 1) + * buf.write_byte(1) # JSONB format version + * buf.write_cstr(str, size) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_buf, __pyx_v_str, __pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":8 + * + * + * cdef jsonb_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * char *str +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.jsonb_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_obj); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/json.pyx":26 + * + * + * cdef jsonb_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef uint8_t format = (frb_read(buf, 1)[0]) + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_jsonb_decode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + uint8_t __pyx_v_format; + PyObject *__pyx_v_rv = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("jsonb_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":27 + * + * cdef jsonb_decode(CodecContext settings, FRBuffer *buf): + * cdef uint8_t format = (frb_read(buf, 1)[0]) # <<<<<<<<<<<<<< + * + * if format != 1: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 1); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(15, 27, __pyx_L1_error) + __pyx_v_format = ((uint8_t)(__pyx_t_1[0])); + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":29 + * cdef uint8_t format = (frb_read(buf, 1)[0]) + * + * if format != 1: # <<<<<<<<<<<<<< + * raise ValueError('unexpected JSONB format: {}'.format(format)) + * +*/ + __pyx_t_2 = (__pyx_v_format != 1); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":30 + * + * if format != 1: + * raise ValueError('unexpected JSONB format: {}'.format(format)) # <<<<<<<<<<<<<< + * + * rv = text_decode(settings, buf) +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_5 = __pyx_builtin_ValueError; + __pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_unexpected_JSONB_format; + __Pyx_INCREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyLong_From_uint8_t(__pyx_v_format); if (unlikely(!__pyx_t_8)) __PYX_ERR(15, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_8}; + __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(15, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __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_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 30, __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(15, 30, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":29 + * cdef uint8_t format = (frb_read(buf, 1)[0]) + * + * if format != 1: # <<<<<<<<<<<<<< + * raise ValueError('unexpected JSONB format: {}'.format(format)) + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":32 + * raise ValueError('unexpected JSONB format: {}'.format(format)) + * + * rv = text_decode(settings, buf) # <<<<<<<<<<<<<< + * + * if settings.is_decoding_json(): +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_text_decode(__pyx_v_settings, __pyx_v_buf); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_rv = __pyx_t_3; + __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":34 + * rv = text_decode(settings, buf) + * + * if settings.is_decoding_json(): # <<<<<<<<<<<<<< + * rv = settings.get_json_decoder().decode(rv) + * +*/ + __pyx_t_3 = ((struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_settings->__pyx_vtab)->is_decoding_json(__pyx_v_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 34, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(15, 34, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":35 + * + * if settings.is_decoding_json(): + * rv = settings.get_json_decoder().decode(rv) # <<<<<<<<<<<<<< + * + * return rv +*/ + __pyx_t_6 = ((struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_settings->__pyx_vtab)->get_json_decoder(__pyx_v_settings, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(15, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __pyx_t_6; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_9 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_rv}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_decode, __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_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __Pyx_DECREF_SET(__pyx_v_rv, __pyx_t_3); + __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":34 + * rv = text_decode(settings, buf) + * + * if settings.is_decoding_json(): # <<<<<<<<<<<<<< + * rv = settings.get_json_decoder().decode(rv) + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":37 + * rv = settings.get_json_decoder().decode(rv) + * + * return rv # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_rv); + __pyx_r = __pyx_v_rv; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":26 + * + * + * cdef jsonb_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef uint8_t format = (frb_read(buf, 1)[0]) + * +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.jsonb_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_rv); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/json.pyx":40 + * + * + * cdef json_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * char *str +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_json_encode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("json_encode", 0); + __Pyx_INCREF(__pyx_v_obj); + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":45 + * ssize_t size + * + * if settings.is_encoding_json(): # <<<<<<<<<<<<<< + * obj = settings.get_json_encoder().encode(obj) + * +*/ + __pyx_t_1 = ((struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_settings->__pyx_vtab)->is_encoding_json(__pyx_v_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 45, __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(15, 45, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":46 + * + * if settings.is_encoding_json(): + * obj = settings.get_json_encoder().encode(obj) # <<<<<<<<<<<<<< + * + * text_encode(settings, buf, obj) +*/ + __pyx_t_4 = ((struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_settings->__pyx_vtab)->get_json_encoder(__pyx_v_settings, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 46, __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_obj}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__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_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 46, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":45 + * ssize_t size + * + * if settings.is_encoding_json(): # <<<<<<<<<<<<<< + * obj = settings.get_json_encoder().encode(obj) + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":48 + * obj = settings.get_json_encoder().encode(obj) + * + * text_encode(settings, buf, obj) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_text_encode(__pyx_v_settings, __pyx_v_buf, __pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":40 + * + * + * cdef json_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * char *str +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.json_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_obj); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/json.pyx":51 + * + * + * cdef json_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * rv = text_decode(settings, buf) + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_json_decode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_v_rv = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("json_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":52 + * + * cdef json_decode(CodecContext settings, FRBuffer *buf): + * rv = text_decode(settings, buf) # <<<<<<<<<<<<<< + * + * if settings.is_decoding_json(): +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_text_decode(__pyx_v_settings, __pyx_v_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_rv = __pyx_t_1; + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":54 + * rv = text_decode(settings, buf) + * + * if settings.is_decoding_json(): # <<<<<<<<<<<<<< + * rv = settings.get_json_decoder().decode(rv) + * +*/ + __pyx_t_1 = ((struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_settings->__pyx_vtab)->is_decoding_json(__pyx_v_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 54, __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(15, 54, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":55 + * + * if settings.is_decoding_json(): + * rv = settings.get_json_decoder().decode(rv) # <<<<<<<<<<<<<< + * + * return rv +*/ + __pyx_t_4 = ((struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v_settings->__pyx_vtab)->get_json_decoder(__pyx_v_settings, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 55, __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_rv}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_decode, __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_1)) __PYX_ERR(15, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_DECREF_SET(__pyx_v_rv, __pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":54 + * rv = text_decode(settings, buf) + * + * if settings.is_decoding_json(): # <<<<<<<<<<<<<< + * rv = settings.get_json_decoder().decode(rv) + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":57 + * rv = settings.get_json_decoder().decode(rv) + * + * return rv # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_rv); + __pyx_r = __pyx_v_rv; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/json.pyx":51 + * + * + * cdef json_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * rv = text_decode(settings, buf) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.json_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_rv); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":8 + * + * + * cdef jsonpath_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * char *str +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_jsonpath_encode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + char *__pyx_v_str; + Py_ssize_t __pyx_v_size; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("jsonpath_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":13 + * ssize_t size + * + * as_gaussdb_string_and_size(settings, obj, &str, &size) # <<<<<<<<<<<<<< + * + * if size > 0x7fffffff - 1: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_as_gaussdb_string_and_size(__pyx_v_settings, __pyx_v_obj, (&__pyx_v_str), (&__pyx_v_size)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":15 + * as_gaussdb_string_and_size(settings, obj, &str, &size) + * + * if size > 0x7fffffff - 1: # <<<<<<<<<<<<<< + * raise ValueError('string too long') + * +*/ + __pyx_t_2 = (__pyx_v_size > 0x7ffffffe); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":16 + * + * if size > 0x7fffffff - 1: + * raise ValueError('string too long') # <<<<<<<<<<<<<< + * + * buf.write_int32(size + 1) +*/ + __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_4 = __pyx_builtin_ValueError; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_string_too_long}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 16, __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(16, 16, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":15 + * as_gaussdb_string_and_size(settings, obj, &str, &size) + * + * if size > 0x7fffffff - 1: # <<<<<<<<<<<<<< + * raise ValueError('string too long') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":18 + * raise ValueError('string too long') + * + * buf.write_int32(size + 1) # <<<<<<<<<<<<<< + * buf.write_byte(1) # jsonpath format version + * buf.write_cstr(str, size) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, (((int32_t)__pyx_v_size) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":19 + * + * buf.write_int32(size + 1) + * buf.write_byte(1) # jsonpath format version # <<<<<<<<<<<<<< + * buf.write_cstr(str, size) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_byte(__pyx_v_buf, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":20 + * buf.write_int32(size + 1) + * buf.write_byte(1) # jsonpath format version + * buf.write_cstr(str, size) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_buf, __pyx_v_str, __pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":8 + * + * + * cdef jsonpath_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * char *str +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.jsonpath_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":23 + * + * + * cdef jsonpath_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef uint8_t format = (frb_read(buf, 1)[0]) + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_jsonpath_decode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + uint8_t __pyx_v_format; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("jsonpath_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":24 + * + * cdef jsonpath_decode(CodecContext settings, FRBuffer *buf): + * cdef uint8_t format = (frb_read(buf, 1)[0]) # <<<<<<<<<<<<<< + * + * if format != 1: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 1); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(16, 24, __pyx_L1_error) + __pyx_v_format = ((uint8_t)(__pyx_t_1[0])); + + /* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":26 + * cdef uint8_t format = (frb_read(buf, 1)[0]) + * + * if format != 1: # <<<<<<<<<<<<<< + * raise ValueError('unexpected jsonpath format: {}'.format(format)) + * +*/ + __pyx_t_2 = (__pyx_v_format != 1); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":27 + * + * if format != 1: + * raise ValueError('unexpected jsonpath format: {}'.format(format)) # <<<<<<<<<<<<<< + * + * return text_decode(settings, buf) +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_5 = __pyx_builtin_ValueError; + __pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_unexpected_jsonpath_format; + __Pyx_INCREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyLong_From_uint8_t(__pyx_v_format); if (unlikely(!__pyx_t_8)) __PYX_ERR(16, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_9 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_8}; + __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(16, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __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_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 27, __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(16, 27, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":26 + * cdef uint8_t format = (frb_read(buf, 1)[0]) + * + * if format != 1: # <<<<<<<<<<<<<< + * raise ValueError('unexpected jsonpath format: {}'.format(format)) + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":29 + * raise ValueError('unexpected jsonpath format: {}'.format(format)) + * + * return text_decode(settings, buf) # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_text_decode(__pyx_v_settings, __pyx_v_buf); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/jsonpath.pyx":23 + * + * + * cdef jsonpath_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef uint8_t format = (frb_read(buf, 1)[0]) + * +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.jsonpath_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":8 + * + * + * cdef uuid_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * cdef: + * char buf[16] +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_uuid_encode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_wbuf, PyObject *__pyx_v_obj) { + char __pyx_v_buf[16]; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("uuid_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":12 + * char buf[16] + * + * if type(obj) is gaussdb_UUID: # <<<<<<<<<<<<<< + * wbuf.write_int32(16) + * wbuf.write_cstr((obj)._data, 16) +*/ + __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_obj)) == __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_UUID); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":13 + * + * if type(obj) is gaussdb_UUID: + * wbuf.write_int32(16) # <<<<<<<<<<<<<< + * wbuf.write_cstr((obj)._data, 16) + * elif cpython.PyUnicode_Check(obj): +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_wbuf, ((int32_t)16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":14 + * if type(obj) is gaussdb_UUID: + * wbuf.write_int32(16) + * wbuf.write_cstr((obj)._data, 16) # <<<<<<<<<<<<<< + * elif cpython.PyUnicode_Check(obj): + * gaussdb_uuid_bytes_from_str(obj, buf) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_wbuf, ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)__pyx_v_obj)->_data, 16); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":12 + * char buf[16] + * + * if type(obj) is gaussdb_UUID: # <<<<<<<<<<<<<< + * wbuf.write_int32(16) + * wbuf.write_cstr((obj)._data, 16) +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":15 + * wbuf.write_int32(16) + * wbuf.write_cstr((obj)._data, 16) + * elif cpython.PyUnicode_Check(obj): # <<<<<<<<<<<<<< + * gaussdb_uuid_bytes_from_str(obj, buf) + * wbuf.write_int32(16) +*/ + __pyx_t_1 = PyUnicode_Check(__pyx_v_obj); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":16 + * wbuf.write_cstr((obj)._data, 16) + * elif cpython.PyUnicode_Check(obj): + * gaussdb_uuid_bytes_from_str(obj, buf) # <<<<<<<<<<<<<< + * wbuf.write_int32(16) + * wbuf.write_cstr(buf, 16) +*/ + if (!(likely(PyUnicode_CheckExact(__pyx_v_obj))||((__pyx_v_obj) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_obj))) __PYX_ERR(17, 16, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_uuid_bytes_from_str(((PyObject*)__pyx_v_obj), __pyx_v_buf); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":17 + * elif cpython.PyUnicode_Check(obj): + * gaussdb_uuid_bytes_from_str(obj, buf) + * wbuf.write_int32(16) # <<<<<<<<<<<<<< + * wbuf.write_cstr(buf, 16) + * else: +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_wbuf, ((int32_t)16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":18 + * gaussdb_uuid_bytes_from_str(obj, buf) + * wbuf.write_int32(16) + * wbuf.write_cstr(buf, 16) # <<<<<<<<<<<<<< + * else: + * bytea_encode(settings, wbuf, obj.bytes) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_wbuf, __pyx_v_buf, 16); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":15 + * wbuf.write_int32(16) + * wbuf.write_cstr((obj)._data, 16) + * elif cpython.PyUnicode_Check(obj): # <<<<<<<<<<<<<< + * gaussdb_uuid_bytes_from_str(obj, buf) + * wbuf.write_int32(16) +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":20 + * wbuf.write_cstr(buf, 16) + * else: + * bytea_encode(settings, wbuf, obj.bytes) # <<<<<<<<<<<<<< + * + * +*/ + /*else*/ { + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_bytes); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_bytea_encode(__pyx_v_settings, __pyx_v_wbuf, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + __pyx_L3:; + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":8 + * + * + * cdef uuid_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * cdef: + * char buf[16] +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.uuid_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":23 + * + * + * cdef uuid_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * if buf.len != 16: + * raise TypeError( +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_uuid_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + char const *__pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("uuid_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":24 + * + * cdef uuid_decode(CodecContext settings, FRBuffer *buf): + * if buf.len != 16: # <<<<<<<<<<<<<< + * raise TypeError( + * f'cannot decode UUID, expected 16 bytes, got {buf.len}') +*/ + __pyx_t_1 = (__pyx_v_buf->len != 16); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":25 + * cdef uuid_decode(CodecContext settings, FRBuffer *buf): + * if buf.len != 16: + * raise TypeError( # <<<<<<<<<<<<<< + * f'cannot decode UUID, expected 16 bytes, got {buf.len}') + * return gaussdb_uuid_from_buf(frb_read_all(buf)) +*/ + __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_builtin_TypeError); + __pyx_t_4 = __pyx_builtin_TypeError; + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":26 + * if buf.len != 16: + * raise TypeError( + * f'cannot decode UUID, expected 16 bytes, got {buf.len}') # <<<<<<<<<<<<<< + * return gaussdb_uuid_from_buf(frb_read_all(buf)) +*/ + __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_buf->len, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_cannot_decode_UUID_expected_16_b, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(17, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_7 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 25, __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(17, 25, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":24 + * + * cdef uuid_decode(CodecContext settings, FRBuffer *buf): + * if buf.len != 16: # <<<<<<<<<<<<<< + * raise TypeError( + * f'cannot decode UUID, expected 16 bytes, got {buf.len}') +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":27 + * raise TypeError( + * f'cannot decode UUID, expected 16 bytes, got {buf.len}') + * return gaussdb_uuid_from_buf(frb_read_all(buf)) # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_8 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read_all(__pyx_v_buf); if (unlikely(__pyx_t_8 == ((char const *)0) && PyErr_Occurred())) __PYX_ERR(17, 27, __pyx_L1_error) + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_uuid_from_buf(__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/uuid.pyx":23 + * + * + * cdef uuid_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * if buf.len != 16: + * raise TypeError( +*/ + + /* 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("async_gaussdb.gaussdbproto.gaussdbproto.uuid_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":25 + * + * + * cdef numeric_encode_text(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * text_encode(settings, buf, str(obj)) + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_numeric_encode_text(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("numeric_encode_text", 0); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":26 + * + * cdef numeric_encode_text(CodecContext settings, WriteBuffer buf, obj): + * text_encode(settings, buf, str(obj)) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __Pyx_PyObject_Unicode(__pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_text_encode(__pyx_v_settings, __pyx_v_buf, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":25 + * + * + * cdef numeric_encode_text(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * text_encode(settings, buf, str(obj)) + * +*/ + + /* 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("async_gaussdb.gaussdbproto.gaussdbproto.numeric_encode_text", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":29 + * + * + * cdef numeric_decode_text(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return _Dec(text_decode(settings, buf)) + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_numeric_decode_text(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("numeric_decode_text", 0); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":30 + * + * cdef numeric_decode_text(CodecContext settings, FRBuffer *buf): + * return _Dec(text_decode(settings, buf)) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Dec); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_text_decode(__pyx_v_settings, __pyx_v_buf); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); + assert(__pyx_t_2); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); + __Pyx_INCREF(__pyx_t_2); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":29 + * + * + * cdef numeric_decode_text(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return _Dec(text_decode(settings, buf)) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.numeric_decode_text", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":33 + * + * + * cdef numeric_encode_binary(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * object dec +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_numeric_encode_binary(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + PyObject *__pyx_v_dec = 0; + PyObject *__pyx_v_dt = 0; + int64_t __pyx_v_exponent; + CYTHON_UNUSED int64_t __pyx_v_i; + int64_t __pyx_v_j; + PyObject *__pyx_v_pydigits = 0; + int64_t __pyx_v_num_pydigits; + int16_t __pyx_v_gaussdbdigit; + int64_t __pyx_v_num_gaussdbdigits; + int16_t __pyx_v_dscale; + int64_t __pyx_v_dweight; + int64_t __pyx_v_weight; + uint16_t __pyx_v_sign; + int64_t __pyx_v_padding_size; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_t_6; + int64_t __pyx_t_7; + Py_ssize_t __pyx_t_8; + int64_t __pyx_t_9; + int64_t __pyx_t_10; + int64_t __pyx_t_11; + int16_t __pyx_t_12; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("numeric_encode_binary", 0); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":48 + * int64_t weight + * uint16_t sign + * int64_t padding_size = 0 # <<<<<<<<<<<<<< + * + * if isinstance(obj, _Dec): +*/ + __pyx_v_padding_size = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":50 + * int64_t padding_size = 0 + * + * if isinstance(obj, _Dec): # <<<<<<<<<<<<<< + * dec = obj + * else: +*/ + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_Dec); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 50, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = PyObject_IsInstance(__pyx_v_obj, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 50, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":51 + * + * if isinstance(obj, _Dec): + * dec = obj # <<<<<<<<<<<<<< + * else: + * dec = _Dec(obj) +*/ + __Pyx_INCREF(__pyx_v_obj); + __pyx_v_dec = __pyx_v_obj; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":50 + * int64_t padding_size = 0 + * + * if isinstance(obj, _Dec): # <<<<<<<<<<<<<< + * dec = obj + * else: +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":53 + * dec = obj + * else: + * dec = _Dec(obj) # <<<<<<<<<<<<<< + * + * dt = dec.as_tuple() +*/ + /*else*/ { + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Dec); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_obj}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_dec = __pyx_t_1; + __pyx_t_1 = 0; + } + __pyx_L3:; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":55 + * dec = _Dec(obj) + * + * dt = dec.as_tuple() # <<<<<<<<<<<<<< + * + * if dt.exponent == 'n' or dt.exponent == 'N': +*/ + __pyx_t_4 = __pyx_v_dec; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_as_tuple, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_dt = __pyx_t_1; + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":57 + * dt = dec.as_tuple() + * + * if dt.exponent == 'n' or dt.exponent == 'N': # <<<<<<<<<<<<<< + * # NaN + * sign = NUMERIC_NAN +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_exponent); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_n, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 57, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (!__pyx_t_6) { + } else { + __pyx_t_2 = __pyx_t_6; + goto __pyx_L5_bool_binop_done; + } + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_exponent); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_N, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 57, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_2 = __pyx_t_6; + __pyx_L5_bool_binop_done:; + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":59 + * if dt.exponent == 'n' or dt.exponent == 'N': + * # NaN + * sign = NUMERIC_NAN # <<<<<<<<<<<<<< + * num_gaussdbdigits = 0 + * weight = 0 +*/ + __pyx_v_sign = 0xC000; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":60 + * # NaN + * sign = NUMERIC_NAN + * num_gaussdbdigits = 0 # <<<<<<<<<<<<<< + * weight = 0 + * dscale = 0 +*/ + __pyx_v_num_gaussdbdigits = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":61 + * sign = NUMERIC_NAN + * num_gaussdbdigits = 0 + * weight = 0 # <<<<<<<<<<<<<< + * dscale = 0 + * elif dt.exponent == 'F': +*/ + __pyx_v_weight = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":62 + * num_gaussdbdigits = 0 + * weight = 0 + * dscale = 0 # <<<<<<<<<<<<<< + * elif dt.exponent == 'F': + * # Infinity +*/ + __pyx_v_dscale = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":57 + * dt = dec.as_tuple() + * + * if dt.exponent == 'n' or dt.exponent == 'N': # <<<<<<<<<<<<<< + * # NaN + * sign = NUMERIC_NAN +*/ + goto __pyx_L4; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":63 + * weight = 0 + * dscale = 0 + * elif dt.exponent == 'F': # <<<<<<<<<<<<<< + * # Infinity + * if dt.sign: +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_exponent); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_F, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 63, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":65 + * elif dt.exponent == 'F': + * # Infinity + * if dt.sign: # <<<<<<<<<<<<<< + * sign = NUMERIC_NINF + * else: +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_sign); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 65, __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(18, 65, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":66 + * # Infinity + * if dt.sign: + * sign = NUMERIC_NINF # <<<<<<<<<<<<<< + * else: + * sign = NUMERIC_PINF +*/ + __pyx_v_sign = 0xF000; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":65 + * elif dt.exponent == 'F': + * # Infinity + * if dt.sign: # <<<<<<<<<<<<<< + * sign = NUMERIC_NINF + * else: +*/ + goto __pyx_L7; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":68 + * sign = NUMERIC_NINF + * else: + * sign = NUMERIC_PINF # <<<<<<<<<<<<<< + * num_gaussdbdigits = 0 + * weight = 0 +*/ + /*else*/ { + __pyx_v_sign = 0xD000; + } + __pyx_L7:; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":69 + * else: + * sign = NUMERIC_PINF + * num_gaussdbdigits = 0 # <<<<<<<<<<<<<< + * weight = 0 + * dscale = 0 +*/ + __pyx_v_num_gaussdbdigits = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":70 + * sign = NUMERIC_PINF + * num_gaussdbdigits = 0 + * weight = 0 # <<<<<<<<<<<<<< + * dscale = 0 + * else: +*/ + __pyx_v_weight = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":71 + * num_gaussdbdigits = 0 + * weight = 0 + * dscale = 0 # <<<<<<<<<<<<<< + * else: + * exponent = dt.exponent +*/ + __pyx_v_dscale = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":63 + * weight = 0 + * dscale = 0 + * elif dt.exponent == 'F': # <<<<<<<<<<<<<< + * # Infinity + * if dt.sign: +*/ + goto __pyx_L4; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":73 + * dscale = 0 + * else: + * exponent = dt.exponent # <<<<<<<<<<<<<< + * if exponent < 0 and -exponent > MAX_DSCALE: + * raise ValueError( +*/ + /*else*/ { + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_exponent); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = __Pyx_PyLong_As_int64_t(__pyx_t_1); if (unlikely((__pyx_t_7 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(18, 73, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_exponent = __pyx_t_7; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":74 + * else: + * exponent = dt.exponent + * if exponent < 0 and -exponent > MAX_DSCALE: # <<<<<<<<<<<<<< + * raise ValueError( + * 'cannot encode Decimal value into numeric: ' +*/ + __pyx_t_6 = (__pyx_v_exponent < 0); + if (__pyx_t_6) { + } else { + __pyx_t_2 = __pyx_t_6; + goto __pyx_L9_bool_binop_done; + } + __pyx_t_6 = ((-__pyx_v_exponent) > 0x3FFF); + __pyx_t_2 = __pyx_t_6; + __pyx_L9_bool_binop_done:; + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":75 + * exponent = dt.exponent + * if exponent < 0 and -exponent > MAX_DSCALE: + * raise ValueError( # <<<<<<<<<<<<<< + * 'cannot encode Decimal value into numeric: ' + * 'exponent is too small') +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_3 = __pyx_builtin_ValueError; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_cannot_encode_Decimal_value_into}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__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_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 75, __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(18, 75, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":74 + * else: + * exponent = dt.exponent + * if exponent < 0 and -exponent > MAX_DSCALE: # <<<<<<<<<<<<<< + * raise ValueError( + * 'cannot encode Decimal value into numeric: ' +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":79 + * 'exponent is too small') + * + * if dt.sign: # <<<<<<<<<<<<<< + * sign = NUMERIC_NEG + * else: +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_sign); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 79, __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(18, 79, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":80 + * + * if dt.sign: + * sign = NUMERIC_NEG # <<<<<<<<<<<<<< + * else: + * sign = NUMERIC_POS +*/ + __pyx_v_sign = 0x4000; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":79 + * 'exponent is too small') + * + * if dt.sign: # <<<<<<<<<<<<<< + * sign = NUMERIC_NEG + * else: +*/ + goto __pyx_L11; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":82 + * sign = NUMERIC_NEG + * else: + * sign = NUMERIC_POS # <<<<<<<<<<<<<< + * + * pydigits = dt.digits +*/ + /*else*/ { + __pyx_v_sign = 0; + } + __pyx_L11:; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":84 + * sign = NUMERIC_POS + * + * pydigits = dt.digits # <<<<<<<<<<<<<< + * num_pydigits = len(pydigits) + * +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_mstate_global->__pyx_n_u_digits); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(18, 84, __pyx_L1_error) + __pyx_v_pydigits = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":85 + * + * pydigits = dt.digits + * num_pydigits = len(pydigits) # <<<<<<<<<<<<<< + * + * dweight = num_pydigits + exponent - 1 +*/ + if (unlikely(__pyx_v_pydigits == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(18, 85, __pyx_L1_error) + } + __pyx_t_8 = __Pyx_PyTuple_GET_SIZE(__pyx_v_pydigits); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(18, 85, __pyx_L1_error) + __pyx_v_num_pydigits = __pyx_t_8; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":87 + * num_pydigits = len(pydigits) + * + * dweight = num_pydigits + exponent - 1 # <<<<<<<<<<<<<< + * if dweight >= 0: + * weight = (dweight + DEC_DIGITS) // DEC_DIGITS - 1 +*/ + __pyx_v_dweight = ((__pyx_v_num_pydigits + __pyx_v_exponent) - 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":88 + * + * dweight = num_pydigits + exponent - 1 + * if dweight >= 0: # <<<<<<<<<<<<<< + * weight = (dweight + DEC_DIGITS) // DEC_DIGITS - 1 + * else: +*/ + __pyx_t_2 = (__pyx_v_dweight >= 0); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":89 + * dweight = num_pydigits + exponent - 1 + * if dweight >= 0: + * weight = (dweight + DEC_DIGITS) // DEC_DIGITS - 1 # <<<<<<<<<<<<<< + * else: + * weight = -((-dweight - 1) // DEC_DIGITS + 1) +*/ + __pyx_v_weight = (__Pyx_div_int64_t((__pyx_v_dweight + 4), 4, 1) - 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":88 + * + * dweight = num_pydigits + exponent - 1 + * if dweight >= 0: # <<<<<<<<<<<<<< + * weight = (dweight + DEC_DIGITS) // DEC_DIGITS - 1 + * else: +*/ + goto __pyx_L12; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":91 + * weight = (dweight + DEC_DIGITS) // DEC_DIGITS - 1 + * else: + * weight = -((-dweight - 1) // DEC_DIGITS + 1) # <<<<<<<<<<<<<< + * + * if weight > 2 ** 16 - 1: +*/ + /*else*/ { + __pyx_v_weight = (-(__Pyx_div_int64_t(((-__pyx_v_dweight) - 1), 4, 1) + 1)); + } + __pyx_L12:; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":93 + * weight = -((-dweight - 1) // DEC_DIGITS + 1) + * + * if weight > 2 ** 16 - 1: # <<<<<<<<<<<<<< + * raise ValueError( + * 'cannot encode Decimal value into numeric: ' +*/ + __pyx_t_2 = (__pyx_v_weight > 0xffff); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":94 + * + * if weight > 2 ** 16 - 1: + * raise ValueError( # <<<<<<<<<<<<<< + * 'cannot encode Decimal value into numeric: ' + * 'exponent is too large') +*/ + __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_4 = __pyx_builtin_ValueError; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_cannot_encode_Decimal_value_into_2}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 94, __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(18, 94, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":93 + * weight = -((-dweight - 1) // DEC_DIGITS + 1) + * + * if weight > 2 ** 16 - 1: # <<<<<<<<<<<<<< + * raise ValueError( + * 'cannot encode Decimal value into numeric: ' +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":99 + * + * padding_size = \ + * (weight + 1) * DEC_DIGITS - (dweight + 1) # <<<<<<<<<<<<<< + * num_gaussdbdigits = \ + * (num_pydigits + padding_size + DEC_DIGITS - 1) // DEC_DIGITS +*/ + __pyx_v_padding_size = (((__pyx_v_weight + 1) * 4) - (__pyx_v_dweight + 1)); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":101 + * (weight + 1) * DEC_DIGITS - (dweight + 1) + * num_gaussdbdigits = \ + * (num_pydigits + padding_size + DEC_DIGITS - 1) // DEC_DIGITS # <<<<<<<<<<<<<< + * + * if num_gaussdbdigits > 2 ** 16 - 1: +*/ + __pyx_v_num_gaussdbdigits = __Pyx_div_int64_t((((__pyx_v_num_pydigits + __pyx_v_padding_size) + 4) - 1), 4, 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":103 + * (num_pydigits + padding_size + DEC_DIGITS - 1) // DEC_DIGITS + * + * if num_gaussdbdigits > 2 ** 16 - 1: # <<<<<<<<<<<<<< + * raise ValueError( + * 'cannot encode Decimal value into numeric: ' +*/ + __pyx_t_2 = (__pyx_v_num_gaussdbdigits > 0xffff); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":104 + * + * if num_gaussdbdigits > 2 ** 16 - 1: + * raise ValueError( # <<<<<<<<<<<<<< + * 'cannot encode Decimal value into numeric: ' + * 'number of digits is too large') +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_3 = __pyx_builtin_ValueError; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_cannot_encode_Decimal_value_into_3}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__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_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 104, __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(18, 104, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":103 + * (num_pydigits + padding_size + DEC_DIGITS - 1) // DEC_DIGITS + * + * if num_gaussdbdigits > 2 ** 16 - 1: # <<<<<<<<<<<<<< + * raise ValueError( + * 'cannot encode Decimal value into numeric: ' +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":110 + * # Pad decimal digits to provide room for correct GaussDB + * # digit alignment in the digit computation loop. + * pydigits = (0,) * DEC_DIGITS + pydigits + (0,) * DEC_DIGITS # <<<<<<<<<<<<<< + * + * if exponent < 0: +*/ + __pyx_t_1 = PyNumber_Add(__pyx_mstate_global->__pyx_tuple[0], __pyx_v_pydigits); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[0]); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF_SET(__pyx_v_pydigits, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":112 + * pydigits = (0,) * DEC_DIGITS + pydigits + (0,) * DEC_DIGITS + * + * if exponent < 0: # <<<<<<<<<<<<<< + * if -exponent > MAX_DSCALE: + * raise ValueError( +*/ + __pyx_t_2 = (__pyx_v_exponent < 0); + if (__pyx_t_2) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":113 + * + * if exponent < 0: + * if -exponent > MAX_DSCALE: # <<<<<<<<<<<<<< + * raise ValueError( + * 'cannot encode Decimal value into numeric: ' +*/ + __pyx_t_2 = ((-__pyx_v_exponent) > 0x3FFF); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":114 + * if exponent < 0: + * if -exponent > MAX_DSCALE: + * raise ValueError( # <<<<<<<<<<<<<< + * 'cannot encode Decimal value into numeric: ' + * 'exponent is too small') +*/ + __pyx_t_1 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_4 = __pyx_builtin_ValueError; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_cannot_encode_Decimal_value_into}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 114, __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(18, 114, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":113 + * + * if exponent < 0: + * if -exponent > MAX_DSCALE: # <<<<<<<<<<<<<< + * raise ValueError( + * 'cannot encode Decimal value into numeric: ' +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":117 + * 'cannot encode Decimal value into numeric: ' + * 'exponent is too small') + * dscale = -exponent # <<<<<<<<<<<<<< + * else: + * dscale = 0 +*/ + __pyx_v_dscale = ((int16_t)(-__pyx_v_exponent)); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":112 + * pydigits = (0,) * DEC_DIGITS + pydigits + (0,) * DEC_DIGITS + * + * if exponent < 0: # <<<<<<<<<<<<<< + * if -exponent > MAX_DSCALE: + * raise ValueError( +*/ + goto __pyx_L15; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":119 + * dscale = -exponent + * else: + * dscale = 0 # <<<<<<<<<<<<<< + * + * buf.write_int32(2 + 2 + 2 + 2 + 2 * num_gaussdbdigits) +*/ + /*else*/ { + __pyx_v_dscale = 0; + } + __pyx_L15:; + } + __pyx_L4:; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":121 + * dscale = 0 + * + * buf.write_int32(2 + 2 + 2 + 2 + 2 * num_gaussdbdigits) # <<<<<<<<<<<<<< + * buf.write_int16(num_gaussdbdigits) + * buf.write_int16(weight) +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, (0x8 + (2 * ((uint16_t)__pyx_v_num_gaussdbdigits)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":122 + * + * buf.write_int32(2 + 2 + 2 + 2 + 2 * num_gaussdbdigits) + * buf.write_int16(num_gaussdbdigits) # <<<<<<<<<<<<<< + * buf.write_int16(weight) + * buf.write_int16(sign) +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int16(__pyx_v_buf, ((int16_t)__pyx_v_num_gaussdbdigits)); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 122, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":123 + * buf.write_int32(2 + 2 + 2 + 2 + 2 * num_gaussdbdigits) + * buf.write_int16(num_gaussdbdigits) + * buf.write_int16(weight) # <<<<<<<<<<<<<< + * buf.write_int16(sign) + * buf.write_int16(dscale) +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int16(__pyx_v_buf, ((int16_t)__pyx_v_weight)); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 123, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":124 + * buf.write_int16(num_gaussdbdigits) + * buf.write_int16(weight) + * buf.write_int16(sign) # <<<<<<<<<<<<<< + * buf.write_int16(dscale) + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int16(__pyx_v_buf, ((int16_t)__pyx_v_sign)); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":125 + * buf.write_int16(weight) + * buf.write_int16(sign) + * buf.write_int16(dscale) # <<<<<<<<<<<<<< + * + * j = DEC_DIGITS - padding_size +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int16(__pyx_v_buf, __pyx_v_dscale); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 125, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":127 + * buf.write_int16(dscale) + * + * j = DEC_DIGITS - padding_size # <<<<<<<<<<<<<< + * + * for i in range(num_gaussdbdigits): +*/ + __pyx_v_j = (4 - __pyx_v_padding_size); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":129 + * j = DEC_DIGITS - padding_size + * + * for i in range(num_gaussdbdigits): # <<<<<<<<<<<<<< + * gaussdbdigit = (pydigits[j] * 1000 + pydigits[j + 1] * 100 + + * pydigits[j + 2] * 10 + pydigits[j + 3]) +*/ + __pyx_t_7 = __pyx_v_num_gaussdbdigits; + __pyx_t_9 = __pyx_t_7; + for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) { + __pyx_v_i = __pyx_t_10; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":130 + * + * for i in range(num_gaussdbdigits): + * gaussdbdigit = (pydigits[j] * 1000 + pydigits[j + 1] * 100 + # <<<<<<<<<<<<<< + * pydigits[j + 2] * 10 + pydigits[j + 3]) + * j += DEC_DIGITS +*/ + if (unlikely(!__pyx_v_pydigits)) { __Pyx_RaiseUnboundLocalError("pydigits"); __PYX_ERR(18, 130, __pyx_L1_error) } + __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_pydigits, __pyx_v_j, int64_t, 1, __Pyx_PyLong_From_int64_t, 0, 1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyLong_MultiplyObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1000, 0x3E8, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_v_pydigits)) { __Pyx_RaiseUnboundLocalError("pydigits"); __PYX_ERR(18, 130, __pyx_L1_error) } + __pyx_t_11 = (__pyx_v_j + 1); + __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_pydigits, __pyx_t_11, int64_t, 1, __Pyx_PyLong_From_int64_t, 0, 1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = __Pyx_PyLong_MultiplyObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_100, 0x64, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":131 + * for i in range(num_gaussdbdigits): + * gaussdbdigit = (pydigits[j] * 1000 + pydigits[j + 1] * 100 + + * pydigits[j + 2] * 10 + pydigits[j + 3]) # <<<<<<<<<<<<<< + * j += DEC_DIGITS + * buf.write_int16(gaussdbdigit) +*/ + if (unlikely(!__pyx_v_pydigits)) { __Pyx_RaiseUnboundLocalError("pydigits"); __PYX_ERR(18, 131, __pyx_L1_error) } + __pyx_t_11 = (__pyx_v_j + 2); + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_pydigits, __pyx_t_11, int64_t, 1, __Pyx_PyLong_From_int64_t, 0, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyLong_MultiplyObjC(__pyx_t_1, __pyx_mstate_global->__pyx_int_10, 10, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":130 + * + * for i in range(num_gaussdbdigits): + * gaussdbdigit = (pydigits[j] * 1000 + pydigits[j + 1] * 100 + # <<<<<<<<<<<<<< + * pydigits[j + 2] * 10 + pydigits[j + 3]) + * j += DEC_DIGITS +*/ + __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 130, __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; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":131 + * for i in range(num_gaussdbdigits): + * gaussdbdigit = (pydigits[j] * 1000 + pydigits[j + 1] * 100 + + * pydigits[j + 2] * 10 + pydigits[j + 3]) # <<<<<<<<<<<<<< + * j += DEC_DIGITS + * buf.write_int16(gaussdbdigit) +*/ + if (unlikely(!__pyx_v_pydigits)) { __Pyx_RaiseUnboundLocalError("pydigits"); __PYX_ERR(18, 131, __pyx_L1_error) } + __pyx_t_11 = (__pyx_v_j + 3); + __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_pydigits, __pyx_t_11, int64_t, 1, __Pyx_PyLong_From_int64_t, 0, 1, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 131, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_12 = __Pyx_PyLong_As_int16_t(__pyx_t_3); if (unlikely((__pyx_t_12 == ((int16_t)-1)) && PyErr_Occurred())) __PYX_ERR(18, 131, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_gaussdbdigit = __pyx_t_12; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":132 + * gaussdbdigit = (pydigits[j] * 1000 + pydigits[j + 1] * 100 + + * pydigits[j + 2] * 10 + pydigits[j + 3]) + * j += DEC_DIGITS # <<<<<<<<<<<<<< + * buf.write_int16(gaussdbdigit) + * +*/ + __pyx_v_j = (__pyx_v_j + 4); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":133 + * pydigits[j + 2] * 10 + pydigits[j + 3]) + * j += DEC_DIGITS + * buf.write_int16(gaussdbdigit) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int16(__pyx_v_buf, __pyx_v_gaussdbdigit); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 133, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":33 + * + * + * cdef numeric_encode_binary(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * object dec +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.numeric_encode_binary", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_dec); + __Pyx_XDECREF(__pyx_v_dt); + __Pyx_XDECREF(__pyx_v_pydigits); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":141 + * # than the simple text decoder above. That said, we need the binary + * # decoder to support binary COPY with numeric values. + * cdef numeric_decode_binary_ex( # <<<<<<<<<<<<<< + * CodecContext settings, + * FRBuffer *buf, +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_numeric_decode_binary_ex(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf, int __pyx_v_trail_fract_zero) { + uint16_t __pyx_v_num_gaussdbdigits; + int16_t __pyx_v_weight; + uint16_t __pyx_v_sign; + uint16_t __pyx_v_dscale; + int16_t __pyx_v_gaussdbdigit0; + Py_ssize_t __pyx_v_i; + int16_t __pyx_v_gaussdbdigit; + PyObject *__pyx_v_pydigits = 0; + Py_ssize_t __pyx_v_num_pydigits; + Py_ssize_t __pyx_v_actual_num_pydigits; + Py_ssize_t __pyx_v_buf_size; + int64_t __pyx_v_exponent; + int64_t __pyx_v_abs_exponent; + Py_ssize_t __pyx_v_exponent_chars; + Py_ssize_t __pyx_v_front_padding; + Py_ssize_t __pyx_v_num_fract_digits; + Py_ssize_t __pyx_v_trailing_fract_zeros_adj; + char __pyx_v_smallbuf[0x100]; + char *__pyx_v_charbuf; + char *__pyx_v_bufptr; + int __pyx_v_buf_allocated; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + size_t __pyx_t_5; + int __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + int64_t __pyx_t_9; + char *__pyx_t_10; + uint16_t __pyx_t_11; + uint16_t __pyx_t_12; + Py_ssize_t __pyx_t_13; + Py_ssize_t __pyx_t_14; + Py_ssize_t __pyx_t_15; + int __pyx_t_16; + int __pyx_t_17; + char const *__pyx_t_18; + PyObject *__pyx_t_19 = NULL; + PyObject *__pyx_t_20 = NULL; + PyObject *__pyx_t_21 = NULL; + PyObject *__pyx_t_22 = NULL; + PyObject *__pyx_t_23 = NULL; + PyObject *__pyx_t_24 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("numeric_decode_binary_ex", 0); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":147 + * ): + * cdef: + * uint16_t num_gaussdbdigits = hton.unpack_int16(frb_read(buf, 2)) # <<<<<<<<<<<<<< + * int16_t weight = hton.unpack_int16(frb_read(buf, 2)) + * uint16_t sign = hton.unpack_int16(frb_read(buf, 2)) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 2); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(18, 147, __pyx_L1_error) + __pyx_v_num_gaussdbdigits = ((uint16_t)unpack_int16(__pyx_t_1)); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":148 + * cdef: + * uint16_t num_gaussdbdigits = hton.unpack_int16(frb_read(buf, 2)) + * int16_t weight = hton.unpack_int16(frb_read(buf, 2)) # <<<<<<<<<<<<<< + * uint16_t sign = hton.unpack_int16(frb_read(buf, 2)) + * uint16_t dscale = hton.unpack_int16(frb_read(buf, 2)) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 2); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(18, 148, __pyx_L1_error) + __pyx_v_weight = unpack_int16(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":149 + * uint16_t num_gaussdbdigits = hton.unpack_int16(frb_read(buf, 2)) + * int16_t weight = hton.unpack_int16(frb_read(buf, 2)) + * uint16_t sign = hton.unpack_int16(frb_read(buf, 2)) # <<<<<<<<<<<<<< + * uint16_t dscale = hton.unpack_int16(frb_read(buf, 2)) + * int16_t gaussdbdigit0 +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 2); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(18, 149, __pyx_L1_error) + __pyx_v_sign = ((uint16_t)unpack_int16(__pyx_t_1)); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":150 + * int16_t weight = hton.unpack_int16(frb_read(buf, 2)) + * uint16_t sign = hton.unpack_int16(frb_read(buf, 2)) + * uint16_t dscale = hton.unpack_int16(frb_read(buf, 2)) # <<<<<<<<<<<<<< + * int16_t gaussdbdigit0 + * ssize_t i +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 2); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(18, 150, __pyx_L1_error) + __pyx_v_dscale = ((uint16_t)unpack_int16(__pyx_t_1)); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":161 + * int64_t abs_exponent + * ssize_t exponent_chars + * ssize_t front_padding = 0 # <<<<<<<<<<<<<< + * ssize_t num_fract_digits + * ssize_t trailing_fract_zeros_adj +*/ + __pyx_v_front_padding = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":167 + * char *charbuf + * char *bufptr + * bint buf_allocated = False # <<<<<<<<<<<<<< + * + * if sign == NUMERIC_NAN: +*/ + __pyx_v_buf_allocated = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":169 + * bint buf_allocated = False + * + * if sign == NUMERIC_NAN: # <<<<<<<<<<<<<< + * # Not-a-number + * return _Dec('NaN') +*/ + switch (__pyx_v_sign) { + case 0xC000: + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":171 + * if sign == NUMERIC_NAN: + * # Not-a-number + * return _Dec('NaN') # <<<<<<<<<<<<<< + * elif sign == NUMERIC_PINF: + * # +Infinity +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Dec); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u_NaN}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 171, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":169 + * bint buf_allocated = False + * + * if sign == NUMERIC_NAN: # <<<<<<<<<<<<<< + * # Not-a-number + * return _Dec('NaN') +*/ + break; + case 0xD000: + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":174 + * elif sign == NUMERIC_PINF: + * # +Infinity + * return _Dec('Infinity') # <<<<<<<<<<<<<< + * elif sign == NUMERIC_NINF: + * # -Infinity +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Dec); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 174, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_3))) { + __pyx_t_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_mstate_global->__pyx_n_u_Infinity}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__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_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 174, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":172 + * # Not-a-number + * return _Dec('NaN') + * elif sign == NUMERIC_PINF: # <<<<<<<<<<<<<< + * # +Infinity + * return _Dec('Infinity') +*/ + break; + case 0xF000: + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":177 + * elif sign == NUMERIC_NINF: + * # -Infinity + * return _Dec('-Infinity') # <<<<<<<<<<<<<< + * + * if num_gaussdbdigits == 0: +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Dec); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_3); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Infinity_2}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 177, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":175 + * # +Infinity + * return _Dec('Infinity') + * elif sign == NUMERIC_NINF: # <<<<<<<<<<<<<< + * # -Infinity + * return _Dec('-Infinity') +*/ + break; + default: break; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":179 + * return _Dec('-Infinity') + * + * if num_gaussdbdigits == 0: # <<<<<<<<<<<<<< + * # Zero + * return _Dec('0e-' + str(dscale)) +*/ + __pyx_t_6 = (__pyx_v_num_gaussdbdigits == 0); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":181 + * if num_gaussdbdigits == 0: + * # Zero + * return _Dec('0e-' + str(dscale)) # <<<<<<<<<<<<<< + * + * gaussdbdigit0 = hton.unpack_int16(frb_read(buf, 2)) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Dec); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_7 = __Pyx_PyLong_From_uint16_t(__pyx_v_dscale); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyObject_Unicode(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_0e, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __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_7}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__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_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":179 + * return _Dec('-Infinity') + * + * if num_gaussdbdigits == 0: # <<<<<<<<<<<<<< + * # Zero + * return _Dec('0e-' + str(dscale)) +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":183 + * return _Dec('0e-' + str(dscale)) + * + * gaussdbdigit0 = hton.unpack_int16(frb_read(buf, 2)) # <<<<<<<<<<<<<< + * if weight >= 0: + * if gaussdbdigit0 < 10: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 2); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(18, 183, __pyx_L1_error) + __pyx_v_gaussdbdigit0 = unpack_int16(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":184 + * + * gaussdbdigit0 = hton.unpack_int16(frb_read(buf, 2)) + * if weight >= 0: # <<<<<<<<<<<<<< + * if gaussdbdigit0 < 10: + * front_padding = 3 +*/ + __pyx_t_6 = (__pyx_v_weight >= 0); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":185 + * gaussdbdigit0 = hton.unpack_int16(frb_read(buf, 2)) + * if weight >= 0: + * if gaussdbdigit0 < 10: # <<<<<<<<<<<<<< + * front_padding = 3 + * elif gaussdbdigit0 < 100: +*/ + __pyx_t_6 = (__pyx_v_gaussdbdigit0 < 10); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":186 + * if weight >= 0: + * if gaussdbdigit0 < 10: + * front_padding = 3 # <<<<<<<<<<<<<< + * elif gaussdbdigit0 < 100: + * front_padding = 2 +*/ + __pyx_v_front_padding = 3; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":185 + * gaussdbdigit0 = hton.unpack_int16(frb_read(buf, 2)) + * if weight >= 0: + * if gaussdbdigit0 < 10: # <<<<<<<<<<<<<< + * front_padding = 3 + * elif gaussdbdigit0 < 100: +*/ + goto __pyx_L5; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":187 + * if gaussdbdigit0 < 10: + * front_padding = 3 + * elif gaussdbdigit0 < 100: # <<<<<<<<<<<<<< + * front_padding = 2 + * elif gaussdbdigit0 < 1000: +*/ + __pyx_t_6 = (__pyx_v_gaussdbdigit0 < 0x64); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":188 + * front_padding = 3 + * elif gaussdbdigit0 < 100: + * front_padding = 2 # <<<<<<<<<<<<<< + * elif gaussdbdigit0 < 1000: + * front_padding = 1 +*/ + __pyx_v_front_padding = 2; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":187 + * if gaussdbdigit0 < 10: + * front_padding = 3 + * elif gaussdbdigit0 < 100: # <<<<<<<<<<<<<< + * front_padding = 2 + * elif gaussdbdigit0 < 1000: +*/ + goto __pyx_L5; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":189 + * elif gaussdbdigit0 < 100: + * front_padding = 2 + * elif gaussdbdigit0 < 1000: # <<<<<<<<<<<<<< + * front_padding = 1 + * +*/ + __pyx_t_6 = (__pyx_v_gaussdbdigit0 < 0x3E8); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":190 + * front_padding = 2 + * elif gaussdbdigit0 < 1000: + * front_padding = 1 # <<<<<<<<<<<<<< + * + * # The number of fractional decimal digits actually encoded in +*/ + __pyx_v_front_padding = 1; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":189 + * elif gaussdbdigit0 < 100: + * front_padding = 2 + * elif gaussdbdigit0 < 1000: # <<<<<<<<<<<<<< + * front_padding = 1 + * +*/ + } + __pyx_L5:; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":184 + * + * gaussdbdigit0 = hton.unpack_int16(frb_read(buf, 2)) + * if weight >= 0: # <<<<<<<<<<<<<< + * if gaussdbdigit0 < 10: + * front_padding = 3 +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":194 + * # The number of fractional decimal digits actually encoded in + * # base-DEC_DEIGITS digits sent by GaussDB. + * num_fract_digits = (num_gaussdbdigits - weight - 1) * DEC_DIGITS # <<<<<<<<<<<<<< + * + * # The trailing zero adjustment necessary to obtain exactly +*/ + __pyx_v_num_fract_digits = (((__pyx_v_num_gaussdbdigits - __pyx_v_weight) - 1) * 4); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":200 + * # which indicates that trailing zeros in the last input digit + * # should be discarded. + * trailing_fract_zeros_adj = dscale - num_fract_digits # <<<<<<<<<<<<<< + * + * # Maximum possible number of decimal digits in base 10. +*/ + __pyx_v_trailing_fract_zeros_adj = (__pyx_v_dscale - __pyx_v_num_fract_digits); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":205 + * # The actual number might be up to 3 digits smaller due to + * # leading zeros in first input digit. + * num_pydigits = num_gaussdbdigits * DEC_DIGITS # <<<<<<<<<<<<<< + * if trailing_fract_zeros_adj > 0: + * num_pydigits += trailing_fract_zeros_adj +*/ + __pyx_v_num_pydigits = (__pyx_v_num_gaussdbdigits * 4); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":206 + * # leading zeros in first input digit. + * num_pydigits = num_gaussdbdigits * DEC_DIGITS + * if trailing_fract_zeros_adj > 0: # <<<<<<<<<<<<<< + * num_pydigits += trailing_fract_zeros_adj + * +*/ + __pyx_t_6 = (__pyx_v_trailing_fract_zeros_adj > 0); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":207 + * num_pydigits = num_gaussdbdigits * DEC_DIGITS + * if trailing_fract_zeros_adj > 0: + * num_pydigits += trailing_fract_zeros_adj # <<<<<<<<<<<<<< + * + * # Exponent. +*/ + __pyx_v_num_pydigits = (__pyx_v_num_pydigits + __pyx_v_trailing_fract_zeros_adj); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":206 + * # leading zeros in first input digit. + * num_pydigits = num_gaussdbdigits * DEC_DIGITS + * if trailing_fract_zeros_adj > 0: # <<<<<<<<<<<<<< + * num_pydigits += trailing_fract_zeros_adj + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":210 + * + * # Exponent. + * exponent = (weight + 1) * DEC_DIGITS - front_padding # <<<<<<<<<<<<<< + * abs_exponent = abs(exponent) + * if abs_exponent != 0: +*/ + __pyx_v_exponent = (((__pyx_v_weight + 1) * 4) - __pyx_v_front_padding); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":211 + * # Exponent. + * exponent = (weight + 1) * DEC_DIGITS - front_padding + * abs_exponent = abs(exponent) # <<<<<<<<<<<<<< + * if abs_exponent != 0: + * # Number of characters required to render absolute exponent value +*/ + __pyx_t_2 = __Pyx_PyLong_From_int64_t(__pyx_v_exponent); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyNumber_Absolute(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 211, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_9 = __Pyx_PyLong_As_int64_t(__pyx_t_3); if (unlikely((__pyx_t_9 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(18, 211, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_abs_exponent = __pyx_t_9; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":212 + * exponent = (weight + 1) * DEC_DIGITS - front_padding + * abs_exponent = abs(exponent) + * if abs_exponent != 0: # <<<<<<<<<<<<<< + * # Number of characters required to render absolute exponent value + * # in decimal. +*/ + __pyx_t_6 = (__pyx_v_abs_exponent != 0); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":215 + * # Number of characters required to render absolute exponent value + * # in decimal. + * exponent_chars = log10(abs_exponent) + 1 # <<<<<<<<<<<<<< + * else: + * exponent_chars = 0 +*/ + __pyx_v_exponent_chars = (((Py_ssize_t)log10(((double)__pyx_v_abs_exponent))) + 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":212 + * exponent = (weight + 1) * DEC_DIGITS - front_padding + * abs_exponent = abs(exponent) + * if abs_exponent != 0: # <<<<<<<<<<<<<< + * # Number of characters required to render absolute exponent value + * # in decimal. +*/ + goto __pyx_L7; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":217 + * exponent_chars = log10(abs_exponent) + 1 + * else: + * exponent_chars = 0 # <<<<<<<<<<<<<< + * + * # Output buffer size. +*/ + /*else*/ { + __pyx_v_exponent_chars = 0; + } + __pyx_L7:; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":227 + * 1 + # possible trailing zero padding + * 2 + # exponent indicator (E-,E+) + * exponent_chars + # exponent # <<<<<<<<<<<<<< + * 1 # null terminator char + * ) +*/ + __pyx_v_buf_size = (((((0x3 + __pyx_v_num_pydigits) + 1) + 2) + __pyx_v_exponent_chars) + 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":231 + * ) + * + * if buf_size > _NUMERIC_DECODER_SMALLBUF_SIZE: # <<<<<<<<<<<<<< + * charbuf = cpython.PyMem_Malloc(buf_size) + * buf_allocated = True +*/ + __pyx_t_6 = (__pyx_v_buf_size > 0x100); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":232 + * + * if buf_size > _NUMERIC_DECODER_SMALLBUF_SIZE: + * charbuf = cpython.PyMem_Malloc(buf_size) # <<<<<<<<<<<<<< + * buf_allocated = True + * else: +*/ + __pyx_v_charbuf = ((char *)PyMem_Malloc(((size_t)__pyx_v_buf_size))); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":233 + * if buf_size > _NUMERIC_DECODER_SMALLBUF_SIZE: + * charbuf = cpython.PyMem_Malloc(buf_size) + * buf_allocated = True # <<<<<<<<<<<<<< + * else: + * charbuf = smallbuf +*/ + __pyx_v_buf_allocated = 1; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":231 + * ) + * + * if buf_size > _NUMERIC_DECODER_SMALLBUF_SIZE: # <<<<<<<<<<<<<< + * charbuf = cpython.PyMem_Malloc(buf_size) + * buf_allocated = True +*/ + goto __pyx_L8; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":235 + * buf_allocated = True + * else: + * charbuf = smallbuf # <<<<<<<<<<<<<< + * + * try: +*/ + /*else*/ { + __pyx_v_charbuf = __pyx_v_smallbuf; + } + __pyx_L8:; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":237 + * charbuf = smallbuf + * + * try: # <<<<<<<<<<<<<< + * bufptr = charbuf + * +*/ + /*try:*/ { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":238 + * + * try: + * bufptr = charbuf # <<<<<<<<<<<<<< + * + * if sign == NUMERIC_NEG: +*/ + __pyx_v_bufptr = __pyx_v_charbuf; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":240 + * bufptr = charbuf + * + * if sign == NUMERIC_NEG: # <<<<<<<<<<<<<< + * bufptr[0] = b'-' + * bufptr += 1 +*/ + __pyx_t_6 = (__pyx_v_sign == 0x4000); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":241 + * + * if sign == NUMERIC_NEG: + * bufptr[0] = b'-' # <<<<<<<<<<<<<< + * bufptr += 1 + * +*/ + (__pyx_v_bufptr[0]) = '-'; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":242 + * if sign == NUMERIC_NEG: + * bufptr[0] = b'-' + * bufptr += 1 # <<<<<<<<<<<<<< + * + * bufptr[0] = b'0' +*/ + __pyx_v_bufptr = (__pyx_v_bufptr + 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":240 + * bufptr = charbuf + * + * if sign == NUMERIC_NEG: # <<<<<<<<<<<<<< + * bufptr[0] = b'-' + * bufptr += 1 +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":244 + * bufptr += 1 + * + * bufptr[0] = b'0' # <<<<<<<<<<<<<< + * bufptr[1] = b'.' + * bufptr += 2 +*/ + (__pyx_v_bufptr[0]) = '0'; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":245 + * + * bufptr[0] = b'0' + * bufptr[1] = b'.' # <<<<<<<<<<<<<< + * bufptr += 2 + * +*/ + (__pyx_v_bufptr[1]) = '.'; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":246 + * bufptr[0] = b'0' + * bufptr[1] = b'.' + * bufptr += 2 # <<<<<<<<<<<<<< + * + * if weight >= 0: +*/ + __pyx_v_bufptr = (__pyx_v_bufptr + 2); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":248 + * bufptr += 2 + * + * if weight >= 0: # <<<<<<<<<<<<<< + * bufptr = _unpack_digit_stripping_lzeros(bufptr, gaussdbdigit0) + * else: +*/ + __pyx_t_6 = (__pyx_v_weight >= 0); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":249 + * + * if weight >= 0: + * bufptr = _unpack_digit_stripping_lzeros(bufptr, gaussdbdigit0) # <<<<<<<<<<<<<< + * else: + * bufptr = _unpack_digit(bufptr, gaussdbdigit0) +*/ + __pyx_t_10 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__unpack_digit_stripping_lzeros(__pyx_v_bufptr, __pyx_v_gaussdbdigit0); if (unlikely(__pyx_t_10 == ((char *)0) && PyErr_Occurred())) __PYX_ERR(18, 249, __pyx_L10_error) + __pyx_v_bufptr = __pyx_t_10; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":248 + * bufptr += 2 + * + * if weight >= 0: # <<<<<<<<<<<<<< + * bufptr = _unpack_digit_stripping_lzeros(bufptr, gaussdbdigit0) + * else: +*/ + goto __pyx_L13; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":251 + * bufptr = _unpack_digit_stripping_lzeros(bufptr, gaussdbdigit0) + * else: + * bufptr = _unpack_digit(bufptr, gaussdbdigit0) # <<<<<<<<<<<<<< + * + * for i in range(1, num_gaussdbdigits): +*/ + /*else*/ { + __pyx_t_10 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__unpack_digit(__pyx_v_bufptr, __pyx_v_gaussdbdigit0); if (unlikely(__pyx_t_10 == ((char *)0) && PyErr_Occurred())) __PYX_ERR(18, 251, __pyx_L10_error) + __pyx_v_bufptr = __pyx_t_10; + } + __pyx_L13:; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":253 + * bufptr = _unpack_digit(bufptr, gaussdbdigit0) + * + * for i in range(1, num_gaussdbdigits): # <<<<<<<<<<<<<< + * gaussdbdigit = hton.unpack_int16(frb_read(buf, 2)) + * bufptr = _unpack_digit(bufptr, gaussdbdigit) +*/ + __pyx_t_11 = __pyx_v_num_gaussdbdigits; + __pyx_t_12 = __pyx_t_11; + for (__pyx_t_13 = 1; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) { + __pyx_v_i = __pyx_t_13; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":254 + * + * for i in range(1, num_gaussdbdigits): + * gaussdbdigit = hton.unpack_int16(frb_read(buf, 2)) # <<<<<<<<<<<<<< + * bufptr = _unpack_digit(bufptr, gaussdbdigit) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 2); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(18, 254, __pyx_L10_error) + __pyx_v_gaussdbdigit = unpack_int16(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":255 + * for i in range(1, num_gaussdbdigits): + * gaussdbdigit = hton.unpack_int16(frb_read(buf, 2)) + * bufptr = _unpack_digit(bufptr, gaussdbdigit) # <<<<<<<<<<<<<< + * + * if dscale: +*/ + __pyx_t_10 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__unpack_digit(__pyx_v_bufptr, __pyx_v_gaussdbdigit); if (unlikely(__pyx_t_10 == ((char *)0) && PyErr_Occurred())) __PYX_ERR(18, 255, __pyx_L10_error) + __pyx_v_bufptr = __pyx_t_10; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":257 + * bufptr = _unpack_digit(bufptr, gaussdbdigit) + * + * if dscale: # <<<<<<<<<<<<<< + * if trailing_fract_zeros_adj > 0: + * for i in range(trailing_fract_zeros_adj): +*/ + __pyx_t_6 = (__pyx_v_dscale != 0); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":258 + * + * if dscale: + * if trailing_fract_zeros_adj > 0: # <<<<<<<<<<<<<< + * for i in range(trailing_fract_zeros_adj): + * bufptr[i] = b'0' +*/ + __pyx_t_6 = (__pyx_v_trailing_fract_zeros_adj > 0); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":259 + * if dscale: + * if trailing_fract_zeros_adj > 0: + * for i in range(trailing_fract_zeros_adj): # <<<<<<<<<<<<<< + * bufptr[i] = b'0' + * +*/ + __pyx_t_13 = __pyx_v_trailing_fract_zeros_adj; + __pyx_t_14 = __pyx_t_13; + for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { + __pyx_v_i = __pyx_t_15; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":260 + * if trailing_fract_zeros_adj > 0: + * for i in range(trailing_fract_zeros_adj): + * bufptr[i] = b'0' # <<<<<<<<<<<<<< + * + * # If display scale is _less_ than the number of rendered digits, +*/ + (__pyx_v_bufptr[__pyx_v_i]) = ((char)'0'); + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":258 + * + * if dscale: + * if trailing_fract_zeros_adj > 0: # <<<<<<<<<<<<<< + * for i in range(trailing_fract_zeros_adj): + * bufptr[i] = b'0' +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":265 + * # trailing_fract_zeros_adj will be negative and this will strip + * # the excess trailing zeros. + * bufptr += trailing_fract_zeros_adj # <<<<<<<<<<<<<< + * + * if trail_fract_zero: +*/ + __pyx_v_bufptr = (__pyx_v_bufptr + __pyx_v_trailing_fract_zeros_adj); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":257 + * bufptr = _unpack_digit(bufptr, gaussdbdigit) + * + * if dscale: # <<<<<<<<<<<<<< + * if trailing_fract_zeros_adj > 0: + * for i in range(trailing_fract_zeros_adj): +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":267 + * bufptr += trailing_fract_zeros_adj + * + * if trail_fract_zero: # <<<<<<<<<<<<<< + * # Check if the number of rendered digits matches the exponent, + * # and if so, add another trailing zero, so the result always +*/ + if (__pyx_v_trail_fract_zero) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":271 + * # and if so, add another trailing zero, so the result always + * # appears with a decimal point. + * actual_num_pydigits = bufptr - charbuf - 2 # <<<<<<<<<<<<<< + * if sign == NUMERIC_NEG: + * actual_num_pydigits -= 1 +*/ + __pyx_v_actual_num_pydigits = ((__pyx_v_bufptr - __pyx_v_charbuf) - 2); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":272 + * # appears with a decimal point. + * actual_num_pydigits = bufptr - charbuf - 2 + * if sign == NUMERIC_NEG: # <<<<<<<<<<<<<< + * actual_num_pydigits -= 1 + * +*/ + __pyx_t_6 = (__pyx_v_sign == 0x4000); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":273 + * actual_num_pydigits = bufptr - charbuf - 2 + * if sign == NUMERIC_NEG: + * actual_num_pydigits -= 1 # <<<<<<<<<<<<<< + * + * if actual_num_pydigits == abs_exponent: +*/ + __pyx_v_actual_num_pydigits = (__pyx_v_actual_num_pydigits - 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":272 + * # appears with a decimal point. + * actual_num_pydigits = bufptr - charbuf - 2 + * if sign == NUMERIC_NEG: # <<<<<<<<<<<<<< + * actual_num_pydigits -= 1 + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":275 + * actual_num_pydigits -= 1 + * + * if actual_num_pydigits == abs_exponent: # <<<<<<<<<<<<<< + * bufptr[0] = b'0' + * bufptr += 1 +*/ + __pyx_t_6 = (__pyx_v_actual_num_pydigits == __pyx_v_abs_exponent); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":276 + * + * if actual_num_pydigits == abs_exponent: + * bufptr[0] = b'0' # <<<<<<<<<<<<<< + * bufptr += 1 + * +*/ + (__pyx_v_bufptr[0]) = ((char)'0'); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":277 + * if actual_num_pydigits == abs_exponent: + * bufptr[0] = b'0' + * bufptr += 1 # <<<<<<<<<<<<<< + * + * if exponent != 0: +*/ + __pyx_v_bufptr = (__pyx_v_bufptr + 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":275 + * actual_num_pydigits -= 1 + * + * if actual_num_pydigits == abs_exponent: # <<<<<<<<<<<<<< + * bufptr[0] = b'0' + * bufptr += 1 +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":267 + * bufptr += trailing_fract_zeros_adj + * + * if trail_fract_zero: # <<<<<<<<<<<<<< + * # Check if the number of rendered digits matches the exponent, + * # and if so, add another trailing zero, so the result always +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":279 + * bufptr += 1 + * + * if exponent != 0: # <<<<<<<<<<<<<< + * bufptr[0] = b'E' + * if exponent < 0: +*/ + __pyx_t_6 = (__pyx_v_exponent != 0); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":280 + * + * if exponent != 0: + * bufptr[0] = b'E' # <<<<<<<<<<<<<< + * if exponent < 0: + * bufptr[1] = b'-' +*/ + (__pyx_v_bufptr[0]) = 'E'; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":281 + * if exponent != 0: + * bufptr[0] = b'E' + * if exponent < 0: # <<<<<<<<<<<<<< + * bufptr[1] = b'-' + * else: +*/ + __pyx_t_6 = (__pyx_v_exponent < 0); + if (__pyx_t_6) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":282 + * bufptr[0] = b'E' + * if exponent < 0: + * bufptr[1] = b'-' # <<<<<<<<<<<<<< + * else: + * bufptr[1] = b'+' +*/ + (__pyx_v_bufptr[1]) = '-'; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":281 + * if exponent != 0: + * bufptr[0] = b'E' + * if exponent < 0: # <<<<<<<<<<<<<< + * bufptr[1] = b'-' + * else: +*/ + goto __pyx_L24; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":284 + * bufptr[1] = b'-' + * else: + * bufptr[1] = b'+' # <<<<<<<<<<<<<< + * bufptr += 2 + * snprintf(bufptr, exponent_chars + 1, '%d', +*/ + /*else*/ { + (__pyx_v_bufptr[1]) = '+'; + } + __pyx_L24:; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":285 + * else: + * bufptr[1] = b'+' + * bufptr += 2 # <<<<<<<<<<<<<< + * snprintf(bufptr, exponent_chars + 1, '%d', + * abs_exponent) +*/ + __pyx_v_bufptr = (__pyx_v_bufptr + 2); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":286 + * bufptr[1] = b'+' + * bufptr += 2 + * snprintf(bufptr, exponent_chars + 1, '%d', # <<<<<<<<<<<<<< + * abs_exponent) + * bufptr += exponent_chars +*/ + (void)(snprintf(__pyx_v_bufptr, (((size_t)__pyx_v_exponent_chars) + 1), ((char const *)"%d"), ((int)__pyx_v_abs_exponent))); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":288 + * snprintf(bufptr, exponent_chars + 1, '%d', + * abs_exponent) + * bufptr += exponent_chars # <<<<<<<<<<<<<< + * + * bufptr[0] = 0 +*/ + __pyx_v_bufptr = (__pyx_v_bufptr + __pyx_v_exponent_chars); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":279 + * bufptr += 1 + * + * if exponent != 0: # <<<<<<<<<<<<<< + * bufptr[0] = b'E' + * if exponent < 0: +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":290 + * bufptr += exponent_chars + * + * bufptr[0] = 0 # <<<<<<<<<<<<<< + * + * pydigits = cpythonx.PyUnicode_FromString(charbuf) +*/ + (__pyx_v_bufptr[0]) = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":292 + * bufptr[0] = 0 + * + * pydigits = cpythonx.PyUnicode_FromString(charbuf) # <<<<<<<<<<<<<< + * + * return _Dec(pydigits) +*/ + __pyx_t_3 = PyUnicode_FromString(__pyx_v_charbuf); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 292, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_v_pydigits = __pyx_t_3; + __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":294 + * pydigits = cpythonx.PyUnicode_FromString(charbuf) + * + * return _Dec(pydigits) # <<<<<<<<<<<<<< + * + * finally: +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_Dec); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 294, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_5 = 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_5 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_pydigits}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 294, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; + goto __pyx_L9_return; + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":297 + * + * finally: + * if buf_allocated: # <<<<<<<<<<<<<< + * cpython.PyMem_Free(charbuf) + * +*/ + /*finally:*/ { + __pyx_L10_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_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __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; + { + if (__pyx_v_buf_allocated) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":298 + * finally: + * if buf_allocated: + * cpython.PyMem_Free(charbuf) # <<<<<<<<<<<<<< + * + * +*/ + PyMem_Free(__pyx_v_charbuf); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":297 + * + * finally: + * if buf_allocated: # <<<<<<<<<<<<<< + * cpython.PyMem_Free(charbuf) + * +*/ + } + } + __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_L9_return: { + __pyx_t_24 = __pyx_r; + __pyx_r = 0; + if (__pyx_v_buf_allocated) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":298 + * finally: + * if buf_allocated: + * cpython.PyMem_Free(charbuf) # <<<<<<<<<<<<<< + * + * +*/ + PyMem_Free(__pyx_v_charbuf); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":297 + * + * finally: + * if buf_allocated: # <<<<<<<<<<<<<< + * cpython.PyMem_Free(charbuf) + * +*/ + } + __pyx_r = __pyx_t_24; + __pyx_t_24 = 0; + goto __pyx_L0; + } + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":141 + * # than the simple text decoder above. That said, we need the binary + * # decoder to support binary COPY with numeric values. + * cdef numeric_decode_binary_ex( # <<<<<<<<<<<<<< + * CodecContext settings, + * FRBuffer *buf, +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.numeric_decode_binary_ex", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_pydigits); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":301 + * + * + * cdef numeric_decode_binary(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return numeric_decode_binary_ex(settings, buf, False) + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_numeric_decode_binary(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("numeric_decode_binary", 0); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":302 + * + * cdef numeric_decode_binary(CodecContext settings, FRBuffer *buf): + * return numeric_decode_binary_ex(settings, buf, False) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_numeric_decode_binary_ex(__pyx_v_settings, __pyx_v_buf, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 302, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":301 + * + * + * cdef numeric_decode_binary(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return numeric_decode_binary_ex(settings, buf, False) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.numeric_decode_binary", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":305 + * + * + * cdef inline char *_unpack_digit_stripping_lzeros(char *buf, int64_t gaussdbdigit): # <<<<<<<<<<<<<< + * cdef: + * int64_t d +*/ + +static CYTHON_INLINE char *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__unpack_digit_stripping_lzeros(char *__pyx_v_buf, int64_t __pyx_v_gaussdbdigit) { + int64_t __pyx_v_d; + int __pyx_v_significant; + char *__pyx_r; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":310 + * bint significant + * + * d = gaussdbdigit // 1000 # <<<<<<<<<<<<<< + * significant = (d > 0) + * if significant: +*/ + __pyx_v_d = __Pyx_div_int64_t(__pyx_v_gaussdbdigit, 0x3E8, 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":311 + * + * d = gaussdbdigit // 1000 + * significant = (d > 0) # <<<<<<<<<<<<<< + * if significant: + * gaussdbdigit -= d * 1000 +*/ + __pyx_v_significant = (__pyx_v_d > 0); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":312 + * d = gaussdbdigit // 1000 + * significant = (d > 0) + * if significant: # <<<<<<<<<<<<<< + * gaussdbdigit -= d * 1000 + * buf[0] = (d + b'0') +*/ + if (__pyx_v_significant) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":313 + * significant = (d > 0) + * if significant: + * gaussdbdigit -= d * 1000 # <<<<<<<<<<<<<< + * buf[0] = (d + b'0') + * buf += 1 +*/ + __pyx_v_gaussdbdigit = (__pyx_v_gaussdbdigit - (__pyx_v_d * 0x3E8)); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":314 + * if significant: + * gaussdbdigit -= d * 1000 + * buf[0] = (d + b'0') # <<<<<<<<<<<<<< + * buf += 1 + * +*/ + (__pyx_v_buf[0]) = ((char)(__pyx_v_d + ((int32_t)'0'))); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":315 + * gaussdbdigit -= d * 1000 + * buf[0] = (d + b'0') + * buf += 1 # <<<<<<<<<<<<<< + * + * d = gaussdbdigit // 100 +*/ + __pyx_v_buf = (__pyx_v_buf + 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":312 + * d = gaussdbdigit // 1000 + * significant = (d > 0) + * if significant: # <<<<<<<<<<<<<< + * gaussdbdigit -= d * 1000 + * buf[0] = (d + b'0') +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":317 + * buf += 1 + * + * d = gaussdbdigit // 100 # <<<<<<<<<<<<<< + * significant |= (d > 0) + * if significant: +*/ + __pyx_v_d = __Pyx_div_int64_t(__pyx_v_gaussdbdigit, 0x64, 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":318 + * + * d = gaussdbdigit // 100 + * significant |= (d > 0) # <<<<<<<<<<<<<< + * if significant: + * gaussdbdigit -= d * 100 +*/ + __pyx_v_significant = (__pyx_v_significant | (__pyx_v_d > 0)); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":319 + * d = gaussdbdigit // 100 + * significant |= (d > 0) + * if significant: # <<<<<<<<<<<<<< + * gaussdbdigit -= d * 100 + * buf[0] = (d + b'0') +*/ + if (__pyx_v_significant) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":320 + * significant |= (d > 0) + * if significant: + * gaussdbdigit -= d * 100 # <<<<<<<<<<<<<< + * buf[0] = (d + b'0') + * buf += 1 +*/ + __pyx_v_gaussdbdigit = (__pyx_v_gaussdbdigit - (__pyx_v_d * 0x64)); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":321 + * if significant: + * gaussdbdigit -= d * 100 + * buf[0] = (d + b'0') # <<<<<<<<<<<<<< + * buf += 1 + * +*/ + (__pyx_v_buf[0]) = ((char)(__pyx_v_d + ((int32_t)'0'))); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":322 + * gaussdbdigit -= d * 100 + * buf[0] = (d + b'0') + * buf += 1 # <<<<<<<<<<<<<< + * + * d = gaussdbdigit // 10 +*/ + __pyx_v_buf = (__pyx_v_buf + 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":319 + * d = gaussdbdigit // 100 + * significant |= (d > 0) + * if significant: # <<<<<<<<<<<<<< + * gaussdbdigit -= d * 100 + * buf[0] = (d + b'0') +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":324 + * buf += 1 + * + * d = gaussdbdigit // 10 # <<<<<<<<<<<<<< + * significant |= (d > 0) + * if significant: +*/ + __pyx_v_d = __Pyx_div_int64_t(__pyx_v_gaussdbdigit, 10, 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":325 + * + * d = gaussdbdigit // 10 + * significant |= (d > 0) # <<<<<<<<<<<<<< + * if significant: + * gaussdbdigit -= d * 10 +*/ + __pyx_v_significant = (__pyx_v_significant | (__pyx_v_d > 0)); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":326 + * d = gaussdbdigit // 10 + * significant |= (d > 0) + * if significant: # <<<<<<<<<<<<<< + * gaussdbdigit -= d * 10 + * buf[0] = (d + b'0') +*/ + if (__pyx_v_significant) { + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":327 + * significant |= (d > 0) + * if significant: + * gaussdbdigit -= d * 10 # <<<<<<<<<<<<<< + * buf[0] = (d + b'0') + * buf += 1 +*/ + __pyx_v_gaussdbdigit = (__pyx_v_gaussdbdigit - (__pyx_v_d * 10)); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":328 + * if significant: + * gaussdbdigit -= d * 10 + * buf[0] = (d + b'0') # <<<<<<<<<<<<<< + * buf += 1 + * +*/ + (__pyx_v_buf[0]) = ((char)(__pyx_v_d + ((int32_t)'0'))); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":329 + * gaussdbdigit -= d * 10 + * buf[0] = (d + b'0') + * buf += 1 # <<<<<<<<<<<<<< + * + * buf[0] = (gaussdbdigit + b'0') +*/ + __pyx_v_buf = (__pyx_v_buf + 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":326 + * d = gaussdbdigit // 10 + * significant |= (d > 0) + * if significant: # <<<<<<<<<<<<<< + * gaussdbdigit -= d * 10 + * buf[0] = (d + b'0') +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":331 + * buf += 1 + * + * buf[0] = (gaussdbdigit + b'0') # <<<<<<<<<<<<<< + * buf += 1 + * +*/ + (__pyx_v_buf[0]) = ((char)(__pyx_v_gaussdbdigit + ((int32_t)'0'))); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":332 + * + * buf[0] = (gaussdbdigit + b'0') + * buf += 1 # <<<<<<<<<<<<<< + * + * return buf +*/ + __pyx_v_buf = (__pyx_v_buf + 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":334 + * buf += 1 + * + * return buf # <<<<<<<<<<<<<< + * + * +*/ + __pyx_r = __pyx_v_buf; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":305 + * + * + * cdef inline char *_unpack_digit_stripping_lzeros(char *buf, int64_t gaussdbdigit): # <<<<<<<<<<<<<< + * cdef: + * int64_t d +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":337 + * + * + * cdef inline char *_unpack_digit(char *buf, int64_t gaussdbdigit): # <<<<<<<<<<<<<< + * cdef: + * int64_t d +*/ + +static CYTHON_INLINE char *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__unpack_digit(char *__pyx_v_buf, int64_t __pyx_v_gaussdbdigit) { + int64_t __pyx_v_d; + char *__pyx_r; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":341 + * int64_t d + * + * d = gaussdbdigit // 1000 # <<<<<<<<<<<<<< + * gaussdbdigit -= d * 1000 + * buf[0] = (d + b'0') +*/ + __pyx_v_d = __Pyx_div_int64_t(__pyx_v_gaussdbdigit, 0x3E8, 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":342 + * + * d = gaussdbdigit // 1000 + * gaussdbdigit -= d * 1000 # <<<<<<<<<<<<<< + * buf[0] = (d + b'0') + * +*/ + __pyx_v_gaussdbdigit = (__pyx_v_gaussdbdigit - (__pyx_v_d * 0x3E8)); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":343 + * d = gaussdbdigit // 1000 + * gaussdbdigit -= d * 1000 + * buf[0] = (d + b'0') # <<<<<<<<<<<<<< + * + * d = gaussdbdigit // 100 +*/ + (__pyx_v_buf[0]) = ((char)(__pyx_v_d + ((int32_t)'0'))); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":345 + * buf[0] = (d + b'0') + * + * d = gaussdbdigit // 100 # <<<<<<<<<<<<<< + * gaussdbdigit -= d * 100 + * buf[1] = (d + b'0') +*/ + __pyx_v_d = __Pyx_div_int64_t(__pyx_v_gaussdbdigit, 0x64, 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":346 + * + * d = gaussdbdigit // 100 + * gaussdbdigit -= d * 100 # <<<<<<<<<<<<<< + * buf[1] = (d + b'0') + * +*/ + __pyx_v_gaussdbdigit = (__pyx_v_gaussdbdigit - (__pyx_v_d * 0x64)); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":347 + * d = gaussdbdigit // 100 + * gaussdbdigit -= d * 100 + * buf[1] = (d + b'0') # <<<<<<<<<<<<<< + * + * d = gaussdbdigit // 10 +*/ + (__pyx_v_buf[1]) = ((char)(__pyx_v_d + ((int32_t)'0'))); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":349 + * buf[1] = (d + b'0') + * + * d = gaussdbdigit // 10 # <<<<<<<<<<<<<< + * gaussdbdigit -= d * 10 + * buf[2] = (d + b'0') +*/ + __pyx_v_d = __Pyx_div_int64_t(__pyx_v_gaussdbdigit, 10, 1); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":350 + * + * d = gaussdbdigit // 10 + * gaussdbdigit -= d * 10 # <<<<<<<<<<<<<< + * buf[2] = (d + b'0') + * +*/ + __pyx_v_gaussdbdigit = (__pyx_v_gaussdbdigit - (__pyx_v_d * 10)); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":351 + * d = gaussdbdigit // 10 + * gaussdbdigit -= d * 10 + * buf[2] = (d + b'0') # <<<<<<<<<<<<<< + * + * buf[3] = (gaussdbdigit + b'0') +*/ + (__pyx_v_buf[2]) = ((char)(__pyx_v_d + ((int32_t)'0'))); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":353 + * buf[2] = (d + b'0') + * + * buf[3] = (gaussdbdigit + b'0') # <<<<<<<<<<<<<< + * buf += 4 + * +*/ + (__pyx_v_buf[3]) = ((char)(__pyx_v_gaussdbdigit + ((int32_t)'0'))); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":354 + * + * buf[3] = (gaussdbdigit + b'0') + * buf += 4 # <<<<<<<<<<<<<< + * + * return buf +*/ + __pyx_v_buf = (__pyx_v_buf + 4); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":356 + * buf += 4 + * + * return buf # <<<<<<<<<<<<<< +*/ + __pyx_r = __pyx_v_buf; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":337 + * + * + * cdef inline char *_unpack_digit(char *buf, int64_t gaussdbdigit): # <<<<<<<<<<<<<< + * cdef: + * int64_t d +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/bits.pyx":8 + * + * + * cdef bits_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * cdef: + * Py_buffer pybuf +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_bits_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_wbuf, PyObject *__pyx_v_obj) { + Py_buffer __pyx_v_pybuf; + int __pyx_v_pybuf_used; + char *__pyx_v_buf; + Py_ssize_t __pyx_v_len; + Py_ssize_t __pyx_v_bitlen; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_t_4; + size_t __pyx_t_5; + Py_ssize_t __pyx_t_6; + Py_ssize_t __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + int __pyx_t_9; + char const *__pyx_t_10; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + PyObject *__pyx_t_15 = NULL; + PyObject *__pyx_t_16 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("bits_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":11 + * cdef: + * Py_buffer pybuf + * bint pybuf_used = False # <<<<<<<<<<<<<< + * char *buf + * ssize_t len +*/ + __pyx_v_pybuf_used = 0; + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":16 + * ssize_t bitlen + * + * if cpython.PyBytes_CheckExact(obj): # <<<<<<<<<<<<<< + * buf = cpython.PyBytes_AS_STRING(obj) + * len = cpython.Py_SIZE(obj) +*/ + __pyx_t_1 = PyBytes_CheckExact(__pyx_v_obj); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":17 + * + * if cpython.PyBytes_CheckExact(obj): + * buf = cpython.PyBytes_AS_STRING(obj) # <<<<<<<<<<<<<< + * len = cpython.Py_SIZE(obj) + * bitlen = len * 8 +*/ + __pyx_v_buf = PyBytes_AS_STRING(__pyx_v_obj); + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":18 + * if cpython.PyBytes_CheckExact(obj): + * buf = cpython.PyBytes_AS_STRING(obj) + * len = cpython.Py_SIZE(obj) # <<<<<<<<<<<<<< + * bitlen = len * 8 + * elif isinstance(obj, gaussdbproto_types.BitString): +*/ + __pyx_v_len = Py_SIZE(__pyx_v_obj); + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":19 + * buf = cpython.PyBytes_AS_STRING(obj) + * len = cpython.Py_SIZE(obj) + * bitlen = len * 8 # <<<<<<<<<<<<<< + * elif isinstance(obj, gaussdbproto_types.BitString): + * cpython.PyBytes_AsStringAndSize(obj.bytes, &buf, &len) +*/ + __pyx_v_bitlen = (__pyx_v_len * 8); + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":16 + * ssize_t bitlen + * + * if cpython.PyBytes_CheckExact(obj): # <<<<<<<<<<<<<< + * buf = cpython.PyBytes_AS_STRING(obj) + * len = cpython.Py_SIZE(obj) +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":20 + * len = cpython.Py_SIZE(obj) + * bitlen = len * 8 + * elif isinstance(obj, gaussdbproto_types.BitString): # <<<<<<<<<<<<<< + * cpython.PyBytes_AsStringAndSize(obj.bytes, &buf, &len) + * bitlen = obj.__len__() +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_gaussdbproto_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_BitString); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 20, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = PyObject_IsInstance(__pyx_v_obj, __pyx_t_3); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(19, 20, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":21 + * bitlen = len * 8 + * elif isinstance(obj, gaussdbproto_types.BitString): + * cpython.PyBytes_AsStringAndSize(obj.bytes, &buf, &len) # <<<<<<<<<<<<<< + * bitlen = obj.__len__() + * else: +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_bytes); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyBytes_AsStringAndSize(__pyx_t_3, (&__pyx_v_buf), ((Py_ssize_t *)(&__pyx_v_len))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(19, 21, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":22 + * elif isinstance(obj, gaussdbproto_types.BitString): + * cpython.PyBytes_AsStringAndSize(obj.bytes, &buf, &len) + * bitlen = obj.__len__() # <<<<<<<<<<<<<< + * else: + * cpython.PyObject_GetBuffer(obj, &pybuf, cpython.PyBUF_SIMPLE) +*/ + __pyx_t_2 = __pyx_v_obj; + __Pyx_INCREF(__pyx_t_2); + __pyx_t_5 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_len, __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(19, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + } + __pyx_t_6 = PyLong_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 22, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_bitlen = __pyx_t_6; + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":20 + * len = cpython.Py_SIZE(obj) + * bitlen = len * 8 + * elif isinstance(obj, gaussdbproto_types.BitString): # <<<<<<<<<<<<<< + * cpython.PyBytes_AsStringAndSize(obj.bytes, &buf, &len) + * bitlen = obj.__len__() +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":24 + * bitlen = obj.__len__() + * else: + * cpython.PyObject_GetBuffer(obj, &pybuf, cpython.PyBUF_SIMPLE) # <<<<<<<<<<<<<< + * pybuf_used = True + * buf = pybuf.buf +*/ + /*else*/ { + __pyx_t_4 = PyObject_GetBuffer(__pyx_v_obj, (&__pyx_v_pybuf), PyBUF_SIMPLE); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(19, 24, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":25 + * else: + * cpython.PyObject_GetBuffer(obj, &pybuf, cpython.PyBUF_SIMPLE) + * pybuf_used = True # <<<<<<<<<<<<<< + * buf = pybuf.buf + * len = pybuf.len +*/ + __pyx_v_pybuf_used = 1; + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":26 + * cpython.PyObject_GetBuffer(obj, &pybuf, cpython.PyBUF_SIMPLE) + * pybuf_used = True + * buf = pybuf.buf # <<<<<<<<<<<<<< + * len = pybuf.len + * bitlen = len * 8 +*/ + __pyx_v_buf = ((char *)__pyx_v_pybuf.buf); + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":27 + * pybuf_used = True + * buf = pybuf.buf + * len = pybuf.len # <<<<<<<<<<<<<< + * bitlen = len * 8 + * +*/ + __pyx_t_7 = __pyx_v_pybuf.len; + __pyx_v_len = __pyx_t_7; + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":28 + * buf = pybuf.buf + * len = pybuf.len + * bitlen = len * 8 # <<<<<<<<<<<<<< + * + * try: +*/ + __pyx_v_bitlen = (__pyx_v_len * 8); + } + __pyx_L3:; + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":30 + * bitlen = len * 8 + * + * try: # <<<<<<<<<<<<<< + * if bitlen > _MAXINT32: + * raise ValueError('bit value too long') +*/ + /*try:*/ { + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":31 + * + * try: + * if bitlen > _MAXINT32: # <<<<<<<<<<<<<< + * raise ValueError('bit value too long') + * wbuf.write_int32(4 + len) +*/ + __pyx_t_1 = (__pyx_v_bitlen > 0x7FFFFFFF); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":32 + * try: + * if bitlen > _MAXINT32: + * raise ValueError('bit value too long') # <<<<<<<<<<<<<< + * wbuf.write_int32(4 + len) + * wbuf.write_int32(bitlen) +*/ + __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_8 = __pyx_builtin_ValueError; + __pyx_t_5 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_bit_value_too_long}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 32, __pyx_L5_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(19, 32, __pyx_L5_error) + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":31 + * + * try: + * if bitlen > _MAXINT32: # <<<<<<<<<<<<<< + * raise ValueError('bit value too long') + * wbuf.write_int32(4 + len) +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":33 + * if bitlen > _MAXINT32: + * raise ValueError('bit value too long') + * wbuf.write_int32(4 + len) # <<<<<<<<<<<<<< + * wbuf.write_int32(bitlen) + * wbuf.write_cstr(buf, len) +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_wbuf, (4 + ((int32_t)__pyx_v_len))); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 33, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":34 + * raise ValueError('bit value too long') + * wbuf.write_int32(4 + len) + * wbuf.write_int32(bitlen) # <<<<<<<<<<<<<< + * wbuf.write_cstr(buf, len) + * finally: +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_wbuf, ((int32_t)__pyx_v_bitlen)); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 34, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":35 + * wbuf.write_int32(4 + len) + * wbuf.write_int32(bitlen) + * wbuf.write_cstr(buf, len) # <<<<<<<<<<<<<< + * finally: + * if pybuf_used: +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_wbuf, __pyx_v_buf, __pyx_v_len); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 35, __pyx_L5_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":37 + * wbuf.write_cstr(buf, len) + * finally: + * if pybuf_used: # <<<<<<<<<<<<<< + * cpython.PyBuffer_Release(&pybuf) + * +*/ + /*finally:*/ { + /*normal exit:*/{ + if (__pyx_v_pybuf_used) { + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":38 + * finally: + * if pybuf_used: + * cpython.PyBuffer_Release(&pybuf) # <<<<<<<<<<<<<< + * + * +*/ + PyBuffer_Release((&__pyx_v_pybuf)); + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":37 + * wbuf.write_cstr(buf, len) + * finally: + * if pybuf_used: # <<<<<<<<<<<<<< + * cpython.PyBuffer_Release(&pybuf) + * +*/ + } + goto __pyx_L6; + } + __pyx_L5_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_2); __pyx_t_2 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 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_4 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_10 = __pyx_filename; + { + if (__pyx_v_pybuf_used) { + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":38 + * finally: + * if pybuf_used: + * cpython.PyBuffer_Release(&pybuf) # <<<<<<<<<<<<<< + * + * +*/ + PyBuffer_Release((&__pyx_v_pybuf)); + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":37 + * wbuf.write_cstr(buf, len) + * finally: + * if pybuf_used: # <<<<<<<<<<<<<< + * cpython.PyBuffer_Release(&pybuf) + * +*/ + } + } + __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_4; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_10; + goto __pyx_L1_error; + } + __pyx_L6:; + } + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":8 + * + * + * cdef bits_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * cdef: + * Py_buffer pybuf +*/ + + /* 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_8); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.bits_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/bits.pyx":41 + * + * + * cdef bits_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int32_t bitlen = hton.unpack_int32(frb_read(buf, 4)) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_bits_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + int32_t __pyx_v_bitlen; + Py_ssize_t __pyx_v_buf_len; + PyObject *__pyx_v_bytes_ = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + Py_ssize_t __pyx_t_2; + char const *__pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("bits_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":43 + * cdef bits_decode(CodecContext settings, FRBuffer *buf): + * cdef: + * int32_t bitlen = hton.unpack_int32(frb_read(buf, 4)) # <<<<<<<<<<<<<< + * ssize_t buf_len = buf.len + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(19, 43, __pyx_L1_error) + __pyx_v_bitlen = unpack_int32(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":44 + * cdef: + * int32_t bitlen = hton.unpack_int32(frb_read(buf, 4)) + * ssize_t buf_len = buf.len # <<<<<<<<<<<<<< + * + * bytes_ = cpython.PyBytes_FromStringAndSize(frb_read_all(buf), buf_len) +*/ + __pyx_t_2 = __pyx_v_buf->len; + __pyx_v_buf_len = __pyx_t_2; + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":46 + * ssize_t buf_len = buf.len + * + * bytes_ = cpython.PyBytes_FromStringAndSize(frb_read_all(buf), buf_len) # <<<<<<<<<<<<<< + * return gaussdbproto_types.BitString.frombytes(bytes_, bitlen) +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read_all(__pyx_v_buf); if (unlikely(__pyx_t_3 == ((char const *)0) && PyErr_Occurred())) __PYX_ERR(19, 46, __pyx_L1_error) + __pyx_t_4 = PyBytes_FromStringAndSize(__pyx_t_3, __pyx_v_buf_len); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 46, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_v_bytes_ = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":47 + * + * bytes_ = cpython.PyBytes_FromStringAndSize(frb_read_all(buf), buf_len) + * return gaussdbproto_types.BitString.frombytes(bytes_, bitlen) # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_gaussdbproto_types); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_BitString); if (unlikely(!__pyx_t_7)) __PYX_ERR(19, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __pyx_t_5 = __pyx_t_7; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyLong_From_int32_t(__pyx_v_bitlen); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_bytes_, __pyx_t_6}; + __pyx_t_4 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_frombytes, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/bits.pyx":41 + * + * + * cdef bits_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int32_t bitlen = hton.unpack_int32(frb_read(buf, 4)) +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.bits_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_bytes_); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":8 + * + * + * cdef inline _encode_points(WriteBuffer wbuf, object points): # <<<<<<<<<<<<<< + * cdef object point + * +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__encode_points(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_wbuf, PyObject *__pyx_v_points) { + PyObject *__pyx_v_point = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + PyObject *(*__pyx_t_3)(PyObject *); + PyObject *__pyx_t_4 = NULL; + double __pyx_t_5; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_encode_points", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":11 + * cdef object point + * + * for point in points: # <<<<<<<<<<<<<< + * wbuf.write_double(point[0]) + * wbuf.write_double(point[1]) +*/ + if (likely(PyList_CheckExact(__pyx_v_points)) || PyTuple_CheckExact(__pyx_v_points)) { + __pyx_t_1 = __pyx_v_points; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + __pyx_t_3 = NULL; + } else { + __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_points); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 11, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_3)) { + 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(20, 11, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_4 = __Pyx_PyList_GetItemRef(__pyx_t_1, __pyx_t_2); + ++__pyx_t_2; + } 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(20, 11, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2)); + #else + __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); + #endif + ++__pyx_t_2; + } + if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 11, __pyx_L1_error) + } else { + __pyx_t_4 = __pyx_t_3(__pyx_t_1); + if (unlikely(!__pyx_t_4)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(20, 11, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_4); + __Pyx_XDECREF_SET(__pyx_v_point, __pyx_t_4); + __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":12 + * + * for point in points: + * wbuf.write_double(point[0]) # <<<<<<<<<<<<<< + * wbuf.write_double(point[1]) + * +*/ + __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_point, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_double(__pyx_v_wbuf, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":13 + * for point in points: + * wbuf.write_double(point[0]) + * wbuf.write_double(point[1]) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_point, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 13, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_double(__pyx_v_wbuf, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":11 + * cdef object point + * + * for point in points: # <<<<<<<<<<<<<< + * wbuf.write_double(point[0]) + * wbuf.write_double(point[1]) +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":8 + * + * + * cdef inline _encode_points(WriteBuffer wbuf, object points): # <<<<<<<<<<<<<< + * cdef object point + * +*/ + + /* 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_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto._encode_points", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_point); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":16 + * + * + * cdef inline _decode_points(FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int32_t npts = hton.unpack_int32(frb_read(buf, 4)) +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__decode_points(struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + int32_t __pyx_v_npts; + PyObject *__pyx_v_pts = 0; + int32_t __pyx_v_i; + PyObject *__pyx_v_point = 0; + double __pyx_v_x; + double __pyx_v_y; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int32_t __pyx_t_3; + int32_t __pyx_t_4; + int32_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + size_t __pyx_t_10; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_decode_points", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":18 + * cdef inline _decode_points(FRBuffer *buf): + * cdef: + * int32_t npts = hton.unpack_int32(frb_read(buf, 4)) # <<<<<<<<<<<<<< + * pts = cpython.PyTuple_New(npts) + * int32_t i +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 18, __pyx_L1_error) + __pyx_v_npts = unpack_int32(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":19 + * cdef: + * int32_t npts = hton.unpack_int32(frb_read(buf, 4)) + * pts = cpython.PyTuple_New(npts) # <<<<<<<<<<<<<< + * int32_t i + * object point +*/ + __pyx_t_2 = PyTuple_New(__pyx_v_npts); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v_pts = __pyx_t_2; + __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":25 + * double y + * + * for i in range(npts): # <<<<<<<<<<<<<< + * x = hton.unpack_double(frb_read(buf, 8)) + * y = hton.unpack_double(frb_read(buf, 8)) +*/ + __pyx_t_3 = __pyx_v_npts; + __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; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":26 + * + * for i in range(npts): + * x = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * y = hton.unpack_double(frb_read(buf, 8)) + * point = gaussdbproto_types.Point(x, y) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 26, __pyx_L1_error) + __pyx_v_x = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":27 + * for i in range(npts): + * x = hton.unpack_double(frb_read(buf, 8)) + * y = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * point = gaussdbproto_types.Point(x, y) + * cpython.Py_INCREF(point) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 27, __pyx_L1_error) + __pyx_v_y = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":28 + * x = hton.unpack_double(frb_read(buf, 8)) + * y = hton.unpack_double(frb_read(buf, 8)) + * point = gaussdbproto_types.Point(x, y) # <<<<<<<<<<<<<< + * cpython.Py_INCREF(point) + * cpython.PyTuple_SET_ITEM(pts, i, point) +*/ + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_gaussdbproto_types); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_Point); if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = PyFloat_FromDouble(__pyx_v_x); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = PyFloat_FromDouble(__pyx_v_y); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_8, __pyx__function); + __pyx_t_10 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_7, __pyx_t_9}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__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_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __Pyx_XDECREF_SET(__pyx_v_point, __pyx_t_2); + __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":29 + * y = hton.unpack_double(frb_read(buf, 8)) + * point = gaussdbproto_types.Point(x, y) + * cpython.Py_INCREF(point) # <<<<<<<<<<<<<< + * cpython.PyTuple_SET_ITEM(pts, i, point) + * +*/ + Py_INCREF(__pyx_v_point); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":30 + * point = gaussdbproto_types.Point(x, y) + * cpython.Py_INCREF(point) + * cpython.PyTuple_SET_ITEM(pts, i, point) # <<<<<<<<<<<<<< + * + * return pts +*/ + PyTuple_SET_ITEM(__pyx_v_pts, __pyx_v_i, __pyx_v_point); + } + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":32 + * cpython.PyTuple_SET_ITEM(pts, i, point) + * + * return pts # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_pts); + __pyx_r = __pyx_v_pts; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":16 + * + * + * cdef inline _decode_points(FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int32_t npts = hton.unpack_int32(frb_read(buf, 4)) +*/ + + /* 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_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto._decode_points", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_pts); + __Pyx_XDECREF(__pyx_v_point); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":35 + * + * + * cdef box_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * wbuf.write_int32(32) + * _encode_points(wbuf, (obj[0], obj[1])) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_box_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_wbuf, PyObject *__pyx_v_obj) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("box_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":36 + * + * cdef box_encode(CodecContext settings, WriteBuffer wbuf, obj): + * wbuf.write_int32(32) # <<<<<<<<<<<<<< + * _encode_points(wbuf, (obj[0], obj[1])) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_wbuf, 32); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 36, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":37 + * cdef box_encode(CodecContext settings, WriteBuffer wbuf, obj): + * wbuf.write_int32(32) + * _encode_points(wbuf, (obj[0], obj[1])) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1) != (0)) __PYX_ERR(20, 37, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2) != (0)) __PYX_ERR(20, 37, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__encode_points(__pyx_v_wbuf, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":35 + * + * + * cdef box_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * wbuf.write_int32(32) + * _encode_points(wbuf, (obj[0], obj[1])) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.box_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":40 + * + * + * cdef box_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * double high_x = hton.unpack_double(frb_read(buf, 8)) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_box_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + double __pyx_v_high_x; + double __pyx_v_high_y; + double __pyx_v_low_x; + double __pyx_v_low_y; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + size_t __pyx_t_10; + PyObject *__pyx_t_11 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("box_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":42 + * cdef box_decode(CodecContext settings, FRBuffer *buf): + * cdef: + * double high_x = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * double high_y = hton.unpack_double(frb_read(buf, 8)) + * double low_x = hton.unpack_double(frb_read(buf, 8)) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 42, __pyx_L1_error) + __pyx_v_high_x = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":43 + * cdef: + * double high_x = hton.unpack_double(frb_read(buf, 8)) + * double high_y = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * double low_x = hton.unpack_double(frb_read(buf, 8)) + * double low_y = hton.unpack_double(frb_read(buf, 8)) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 43, __pyx_L1_error) + __pyx_v_high_y = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":44 + * double high_x = hton.unpack_double(frb_read(buf, 8)) + * double high_y = hton.unpack_double(frb_read(buf, 8)) + * double low_x = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * double low_y = hton.unpack_double(frb_read(buf, 8)) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 44, __pyx_L1_error) + __pyx_v_low_x = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":45 + * double high_y = hton.unpack_double(frb_read(buf, 8)) + * double low_x = hton.unpack_double(frb_read(buf, 8)) + * double low_y = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * + * return gaussdbproto_types.Box( +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 45, __pyx_L1_error) + __pyx_v_low_y = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":47 + * double low_y = hton.unpack_double(frb_read(buf, 8)) + * + * return gaussdbproto_types.Box( # <<<<<<<<<<<<<< + * gaussdbproto_types.Point(high_x, high_y), + * gaussdbproto_types.Point(low_x, low_y)) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gaussdbproto_types); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Box); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":48 + * + * return gaussdbproto_types.Box( + * gaussdbproto_types.Point(high_x, high_y), # <<<<<<<<<<<<<< + * gaussdbproto_types.Point(low_x, low_y)) + * +*/ + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_gaussdbproto_types); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_Point); if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = PyFloat_FromDouble(__pyx_v_high_x); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_9 = PyFloat_FromDouble(__pyx_v_high_y); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); + assert(__pyx_t_6); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_6); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_8, __pyx__function); + __pyx_t_10 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_7, __pyx_t_9}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__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_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 48, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":49 + * return gaussdbproto_types.Box( + * gaussdbproto_types.Point(high_x, high_y), + * gaussdbproto_types.Point(low_x, low_y)) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_9 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_gaussdbproto_types); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 49, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_Point); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 49, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __pyx_t_7 = PyFloat_FromDouble(__pyx_v_low_x); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 49, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_11 = PyFloat_FromDouble(__pyx_v_low_y); if (unlikely(!__pyx_t_11)) __PYX_ERR(20, 49, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_11); + __pyx_t_10 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_6))) { + __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6); + assert(__pyx_t_9); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); + __Pyx_INCREF(__pyx_t_9); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); + __pyx_t_10 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_7, __pyx_t_11}; + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_6, __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_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 49, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + } + __pyx_t_10 = 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_10 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_4, __pyx_t_8}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__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_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":40 + * + * + * cdef box_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * double high_x = hton.unpack_double(frb_read(buf, 8)) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_11); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.box_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":52 + * + * + * cdef line_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * wbuf.write_int32(24) + * wbuf.write_double(obj[0]) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_line_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_wbuf, PyObject *__pyx_v_obj) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + double __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("line_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":53 + * + * cdef line_encode(CodecContext settings, WriteBuffer wbuf, obj): + * wbuf.write_int32(24) # <<<<<<<<<<<<<< + * wbuf.write_double(obj[0]) + * wbuf.write_double(obj[1]) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_wbuf, 24); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 53, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":54 + * cdef line_encode(CodecContext settings, WriteBuffer wbuf, obj): + * wbuf.write_int32(24) + * wbuf.write_double(obj[0]) # <<<<<<<<<<<<<< + * wbuf.write_double(obj[1]) + * wbuf.write_double(obj[2]) +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 54, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_double(__pyx_v_wbuf, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":55 + * wbuf.write_int32(24) + * wbuf.write_double(obj[0]) + * wbuf.write_double(obj[1]) # <<<<<<<<<<<<<< + * wbuf.write_double(obj[2]) + * +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 55, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_double(__pyx_v_wbuf, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":56 + * wbuf.write_double(obj[0]) + * wbuf.write_double(obj[1]) + * wbuf.write_double(obj[2]) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 56, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_double(__pyx_v_wbuf, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":52 + * + * + * cdef line_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * wbuf.write_int32(24) + * wbuf.write_double(obj[0]) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.line_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":59 + * + * + * cdef line_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * double A = hton.unpack_double(frb_read(buf, 8)) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_line_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + double __pyx_v_A; + double __pyx_v_B; + double __pyx_v_C; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("line_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":61 + * cdef line_decode(CodecContext settings, FRBuffer *buf): + * cdef: + * double A = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * double B = hton.unpack_double(frb_read(buf, 8)) + * double C = hton.unpack_double(frb_read(buf, 8)) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 61, __pyx_L1_error) + __pyx_v_A = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":62 + * cdef: + * double A = hton.unpack_double(frb_read(buf, 8)) + * double B = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * double C = hton.unpack_double(frb_read(buf, 8)) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 62, __pyx_L1_error) + __pyx_v_B = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":63 + * double A = hton.unpack_double(frb_read(buf, 8)) + * double B = hton.unpack_double(frb_read(buf, 8)) + * double C = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * + * return gaussdbproto_types.Line(A, B, C) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 63, __pyx_L1_error) + __pyx_v_C = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":65 + * double C = hton.unpack_double(frb_read(buf, 8)) + * + * return gaussdbproto_types.Line(A, B, C) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gaussdbproto_types); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Line); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyFloat_FromDouble(__pyx_v_A); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyFloat_FromDouble(__pyx_v_B); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = PyFloat_FromDouble(__pyx_v_C); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 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_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_t_4, __pyx_t_6, __pyx_t_7}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_8, (4-__pyx_t_8) | (__pyx_t_8*__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_6); __pyx_t_6 = 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(20, 65, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":59 + * + * + * cdef line_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * double A = hton.unpack_double(frb_read(buf, 8)) +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.line_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":68 + * + * + * cdef lseg_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * wbuf.write_int32(32) + * _encode_points(wbuf, (obj[0], obj[1])) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_lseg_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_wbuf, PyObject *__pyx_v_obj) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("lseg_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":69 + * + * cdef lseg_encode(CodecContext settings, WriteBuffer wbuf, obj): + * wbuf.write_int32(32) # <<<<<<<<<<<<<< + * _encode_points(wbuf, (obj[0], obj[1])) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_wbuf, 32); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 69, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":70 + * cdef lseg_encode(CodecContext settings, WriteBuffer wbuf, obj): + * wbuf.write_int32(32) + * _encode_points(wbuf, (obj[0], obj[1])) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1) != (0)) __PYX_ERR(20, 70, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2) != (0)) __PYX_ERR(20, 70, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_2 = 0; + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__encode_points(__pyx_v_wbuf, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":68 + * + * + * cdef lseg_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * wbuf.write_int32(32) + * _encode_points(wbuf, (obj[0], obj[1])) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.lseg_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":73 + * + * + * cdef lseg_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * double p1_x = hton.unpack_double(frb_read(buf, 8)) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_lseg_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + double __pyx_v_p1_x; + double __pyx_v_p1_y; + double __pyx_v_p2_x; + double __pyx_v_p2_y; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("lseg_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":75 + * cdef lseg_decode(CodecContext settings, FRBuffer *buf): + * cdef: + * double p1_x = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * double p1_y = hton.unpack_double(frb_read(buf, 8)) + * double p2_x = hton.unpack_double(frb_read(buf, 8)) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 75, __pyx_L1_error) + __pyx_v_p1_x = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":76 + * cdef: + * double p1_x = hton.unpack_double(frb_read(buf, 8)) + * double p1_y = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * double p2_x = hton.unpack_double(frb_read(buf, 8)) + * double p2_y = hton.unpack_double(frb_read(buf, 8)) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 76, __pyx_L1_error) + __pyx_v_p1_y = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":77 + * double p1_x = hton.unpack_double(frb_read(buf, 8)) + * double p1_y = hton.unpack_double(frb_read(buf, 8)) + * double p2_x = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * double p2_y = hton.unpack_double(frb_read(buf, 8)) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 77, __pyx_L1_error) + __pyx_v_p2_x = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":78 + * double p1_y = hton.unpack_double(frb_read(buf, 8)) + * double p2_x = hton.unpack_double(frb_read(buf, 8)) + * double p2_y = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * + * return gaussdbproto_types.LineSegment((p1_x, p1_y), (p2_x, p2_y)) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 78, __pyx_L1_error) + __pyx_v_p2_y = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":80 + * double p2_y = hton.unpack_double(frb_read(buf, 8)) + * + * return gaussdbproto_types.LineSegment((p1_x, p1_y), (p2_x, p2_y)) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gaussdbproto_types); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_LineSegment); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyFloat_FromDouble(__pyx_v_p1_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyFloat_FromDouble(__pyx_v_p1_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4) != (0)) __PYX_ERR(20, 80, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6) != (0)) __PYX_ERR(20, 80, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_t_6 = 0; + __pyx_t_6 = PyFloat_FromDouble(__pyx_v_p2_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_4 = PyFloat_FromDouble(__pyx_v_p2_y); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(20, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6) != (0)) __PYX_ERR(20, 80, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_4) != (0)) __PYX_ERR(20, 80, __pyx_L1_error); + __pyx_t_6 = 0; + __pyx_t_4 = 0; + __pyx_t_9 = 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_9 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_8}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __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_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 80, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":73 + * + * + * cdef lseg_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * double p1_x = hton.unpack_double(frb_read(buf, 8)) +*/ + + /* 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("async_gaussdb.gaussdbproto.gaussdbproto.lseg_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":83 + * + * + * cdef point_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * wbuf.write_int32(16) + * wbuf.write_double(obj[0]) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_point_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_wbuf, PyObject *__pyx_v_obj) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + double __pyx_t_2; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("point_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":84 + * + * cdef point_encode(CodecContext settings, WriteBuffer wbuf, obj): + * wbuf.write_int32(16) # <<<<<<<<<<<<<< + * wbuf.write_double(obj[0]) + * wbuf.write_double(obj[1]) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_wbuf, 16); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":85 + * cdef point_encode(CodecContext settings, WriteBuffer wbuf, obj): + * wbuf.write_int32(16) + * wbuf.write_double(obj[0]) # <<<<<<<<<<<<<< + * wbuf.write_double(obj[1]) + * +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 85, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_double(__pyx_v_wbuf, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":86 + * wbuf.write_int32(16) + * wbuf.write_double(obj[0]) + * wbuf.write_double(obj[1]) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 86, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_double(__pyx_v_wbuf, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 86, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":83 + * + * + * cdef point_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * wbuf.write_int32(16) + * wbuf.write_double(obj[0]) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.point_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":89 + * + * + * cdef point_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * double x = hton.unpack_double(frb_read(buf, 8)) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_point_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + double __pyx_v_x; + double __pyx_v_y; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("point_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":91 + * cdef point_decode(CodecContext settings, FRBuffer *buf): + * cdef: + * double x = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * double y = hton.unpack_double(frb_read(buf, 8)) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 91, __pyx_L1_error) + __pyx_v_x = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":92 + * cdef: + * double x = hton.unpack_double(frb_read(buf, 8)) + * double y = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * + * return gaussdbproto_types.Point(x, y) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 92, __pyx_L1_error) + __pyx_v_y = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":94 + * double y = hton.unpack_double(frb_read(buf, 8)) + * + * return gaussdbproto_types.Point(x, y) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gaussdbproto_types); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Point); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyFloat_FromDouble(__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyFloat_FromDouble(__pyx_v_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = 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_7 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_4, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __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_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_2)) __PYX_ERR(20, 94, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":89 + * + * + * cdef point_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * double x = hton.unpack_double(frb_read(buf, 8)) +*/ + + /* 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("async_gaussdb.gaussdbproto.gaussdbproto.point_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":97 + * + * + * cdef path_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * cdef: + * int8_t is_closed = 0 +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_path_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_wbuf, PyObject *__pyx_v_obj) { + int8_t __pyx_v_is_closed; + Py_ssize_t __pyx_v_npts; + Py_ssize_t __pyx_v_encoded_len; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int8_t __pyx_t_4; + Py_ssize_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("path_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":99 + * cdef path_encode(CodecContext settings, WriteBuffer wbuf, obj): + * cdef: + * int8_t is_closed = 0 # <<<<<<<<<<<<<< + * ssize_t npts + * ssize_t encoded_len +*/ + __pyx_v_is_closed = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":104 + * int32_t i + * + * if cpython.PyTuple_Check(obj): # <<<<<<<<<<<<<< + * is_closed = 1 + * elif cpython.PyList_Check(obj): +*/ + __pyx_t_1 = PyTuple_Check(__pyx_v_obj); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":105 + * + * if cpython.PyTuple_Check(obj): + * is_closed = 1 # <<<<<<<<<<<<<< + * elif cpython.PyList_Check(obj): + * is_closed = 0 +*/ + __pyx_v_is_closed = 1; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":104 + * int32_t i + * + * if cpython.PyTuple_Check(obj): # <<<<<<<<<<<<<< + * is_closed = 1 + * elif cpython.PyList_Check(obj): +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":106 + * if cpython.PyTuple_Check(obj): + * is_closed = 1 + * elif cpython.PyList_Check(obj): # <<<<<<<<<<<<<< + * is_closed = 0 + * elif isinstance(obj, gaussdbproto_types.Path): +*/ + __pyx_t_1 = PyList_Check(__pyx_v_obj); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":107 + * is_closed = 1 + * elif cpython.PyList_Check(obj): + * is_closed = 0 # <<<<<<<<<<<<<< + * elif isinstance(obj, gaussdbproto_types.Path): + * is_closed = obj.is_closed +*/ + __pyx_v_is_closed = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":106 + * if cpython.PyTuple_Check(obj): + * is_closed = 1 + * elif cpython.PyList_Check(obj): # <<<<<<<<<<<<<< + * is_closed = 0 + * elif isinstance(obj, gaussdbproto_types.Path): +*/ + goto __pyx_L3; + } + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":108 + * elif cpython.PyList_Check(obj): + * is_closed = 0 + * elif isinstance(obj, gaussdbproto_types.Path): # <<<<<<<<<<<<<< + * is_closed = obj.is_closed + * +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_gaussdbproto_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Path); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 108, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_1 = PyObject_IsInstance(__pyx_v_obj, __pyx_t_3); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 108, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":109 + * is_closed = 0 + * elif isinstance(obj, gaussdbproto_types.Path): + * is_closed = obj.is_closed # <<<<<<<<<<<<<< + * + * npts = len(obj) +*/ + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_is_closed); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyLong_As_int8_t(__pyx_t_3); if (unlikely((__pyx_t_4 == ((int8_t)-1)) && PyErr_Occurred())) __PYX_ERR(20, 109, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_is_closed = __pyx_t_4; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":108 + * elif cpython.PyList_Check(obj): + * is_closed = 0 + * elif isinstance(obj, gaussdbproto_types.Path): # <<<<<<<<<<<<<< + * is_closed = obj.is_closed + * +*/ + } + __pyx_L3:; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":111 + * is_closed = obj.is_closed + * + * npts = len(obj) # <<<<<<<<<<<<<< + * encoded_len = 1 + 4 + 16 * npts + * if encoded_len > _MAXINT32: +*/ + __pyx_t_5 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(20, 111, __pyx_L1_error) + __pyx_v_npts = __pyx_t_5; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":112 + * + * npts = len(obj) + * encoded_len = 1 + 4 + 16 * npts # <<<<<<<<<<<<<< + * if encoded_len > _MAXINT32: + * raise ValueError('path value too long') +*/ + __pyx_v_encoded_len = (0x5 + (16 * __pyx_v_npts)); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":113 + * npts = len(obj) + * encoded_len = 1 + 4 + 16 * npts + * if encoded_len > _MAXINT32: # <<<<<<<<<<<<<< + * raise ValueError('path value too long') + * +*/ + __pyx_t_1 = (__pyx_v_encoded_len > 0x7FFFFFFF); + if (unlikely(__pyx_t_1)) { + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":114 + * encoded_len = 1 + 4 + 16 * npts + * if encoded_len > _MAXINT32: + * raise ValueError('path value too long') # <<<<<<<<<<<<<< + * + * wbuf.write_int32(encoded_len) +*/ + __pyx_t_2 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_6 = __pyx_builtin_ValueError; + __pyx_t_7 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_path_value_too_long}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__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_3)) __PYX_ERR(20, 114, __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(20, 114, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":113 + * npts = len(obj) + * encoded_len = 1 + 4 + 16 * npts + * if encoded_len > _MAXINT32: # <<<<<<<<<<<<<< + * raise ValueError('path value too long') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":116 + * raise ValueError('path value too long') + * + * wbuf.write_int32(encoded_len) # <<<<<<<<<<<<<< + * wbuf.write_byte(is_closed) + * wbuf.write_int32(npts) +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_wbuf, ((int32_t)__pyx_v_encoded_len)); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 116, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":117 + * + * wbuf.write_int32(encoded_len) + * wbuf.write_byte(is_closed) # <<<<<<<<<<<<<< + * wbuf.write_int32(npts) + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_byte(__pyx_v_wbuf, __pyx_v_is_closed); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":118 + * wbuf.write_int32(encoded_len) + * wbuf.write_byte(is_closed) + * wbuf.write_int32(npts) # <<<<<<<<<<<<<< + * + * _encode_points(wbuf, obj) +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_wbuf, ((int32_t)__pyx_v_npts)); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":120 + * wbuf.write_int32(npts) + * + * _encode_points(wbuf, obj) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__encode_points(__pyx_v_wbuf, __pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 120, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":97 + * + * + * cdef path_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * cdef: + * int8_t is_closed = 0 +*/ + + /* 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_6); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.path_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":123 + * + * + * cdef path_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int8_t is_closed = (frb_read(buf, 1)[0]) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_path_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + int8_t __pyx_v_is_closed; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("path_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":125 + * cdef path_decode(CodecContext settings, FRBuffer *buf): + * cdef: + * int8_t is_closed = (frb_read(buf, 1)[0]) # <<<<<<<<<<<<<< + * + * return gaussdbproto_types.Path(*_decode_points(buf), is_closed=is_closed == 1) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 1); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 125, __pyx_L1_error) + __pyx_v_is_closed = ((int8_t)(__pyx_t_1[0])); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":127 + * int8_t is_closed = (frb_read(buf, 1)[0]) + * + * return gaussdbproto_types.Path(*_decode_points(buf), is_closed=is_closed == 1) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_gaussdbproto_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Path); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__decode_points(__pyx_v_buf); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_is_closed == 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_is_closed, __pyx_t_5) < 0) __PYX_ERR(20, 127, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":123 + * + * + * cdef path_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int8_t is_closed = (frb_read(buf, 1)[0]) +*/ + + /* 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("async_gaussdb.gaussdbproto.gaussdbproto.path_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":130 + * + * + * cdef poly_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * cdef: + * bint is_closed +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_poly_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_wbuf, PyObject *__pyx_v_obj) { + Py_ssize_t __pyx_v_npts; + Py_ssize_t __pyx_v_encoded_len; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + Py_ssize_t __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("poly_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":137 + * int32_t i + * + * npts = len(obj) # <<<<<<<<<<<<<< + * encoded_len = 4 + 16 * npts + * if encoded_len > _MAXINT32: +*/ + __pyx_t_1 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(20, 137, __pyx_L1_error) + __pyx_v_npts = __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":138 + * + * npts = len(obj) + * encoded_len = 4 + 16 * npts # <<<<<<<<<<<<<< + * if encoded_len > _MAXINT32: + * raise ValueError('polygon value too long') +*/ + __pyx_v_encoded_len = (4 + (16 * __pyx_v_npts)); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":139 + * npts = len(obj) + * encoded_len = 4 + 16 * npts + * if encoded_len > _MAXINT32: # <<<<<<<<<<<<<< + * raise ValueError('polygon value too long') + * +*/ + __pyx_t_2 = (__pyx_v_encoded_len > 0x7FFFFFFF); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":140 + * encoded_len = 4 + 16 * npts + * if encoded_len > _MAXINT32: + * raise ValueError('polygon value too long') # <<<<<<<<<<<<<< + * + * wbuf.write_int32(encoded_len) +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_5 = __pyx_builtin_ValueError; + __pyx_t_6 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_polygon_value_too_long}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 140, __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(20, 140, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":139 + * npts = len(obj) + * encoded_len = 4 + 16 * npts + * if encoded_len > _MAXINT32: # <<<<<<<<<<<<<< + * raise ValueError('polygon value too long') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":142 + * raise ValueError('polygon value too long') + * + * wbuf.write_int32(encoded_len) # <<<<<<<<<<<<<< + * wbuf.write_int32(npts) + * _encode_points(wbuf, obj) +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_wbuf, ((int32_t)__pyx_v_encoded_len)); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 142, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":143 + * + * wbuf.write_int32(encoded_len) + * wbuf.write_int32(npts) # <<<<<<<<<<<<<< + * _encode_points(wbuf, obj) + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_wbuf, ((int32_t)__pyx_v_npts)); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 143, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":144 + * wbuf.write_int32(encoded_len) + * wbuf.write_int32(npts) + * _encode_points(wbuf, obj) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_3 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__encode_points(__pyx_v_wbuf, __pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 144, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":130 + * + * + * cdef poly_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * cdef: + * bint is_closed +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.poly_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":147 + * + * + * cdef poly_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return gaussdbproto_types.Polygon(*_decode_points(buf)) + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_poly_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("poly_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":148 + * + * cdef poly_decode(CodecContext settings, FRBuffer *buf): + * return gaussdbproto_types.Polygon(*_decode_points(buf)) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_gaussdbproto_types); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_Polygon); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__decode_points(__pyx_v_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 148, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":147 + * + * + * cdef poly_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return gaussdbproto_types.Polygon(*_decode_points(buf)) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.poly_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":151 + * + * + * cdef circle_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * wbuf.write_int32(24) + * wbuf.write_double(obj[0][0]) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_circle_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_wbuf, PyObject *__pyx_v_obj) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + double __pyx_t_3; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("circle_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":152 + * + * cdef circle_encode(CodecContext settings, WriteBuffer wbuf, obj): + * wbuf.write_int32(24) # <<<<<<<<<<<<<< + * wbuf.write_double(obj[0][0]) + * wbuf.write_double(obj[0][1]) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_wbuf, 24); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 152, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":153 + * cdef circle_encode(CodecContext settings, WriteBuffer wbuf, obj): + * wbuf.write_int32(24) + * wbuf.write_double(obj[0][0]) # <<<<<<<<<<<<<< + * wbuf.write_double(obj[0][1]) + * wbuf.write_double(obj[1]) +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 153, __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); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_3 = __Pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 153, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_double(__pyx_v_wbuf, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 153, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":154 + * wbuf.write_int32(24) + * wbuf.write_double(obj[0][0]) + * wbuf.write_double(obj[0][1]) # <<<<<<<<<<<<<< + * wbuf.write_double(obj[1]) + * +*/ + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_3 = __Pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 154, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_double(__pyx_v_wbuf, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 154, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":155 + * wbuf.write_double(obj[0][0]) + * wbuf.write_double(obj[0][1]) + * wbuf.write_double(obj[1]) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 155, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_double(__pyx_v_wbuf, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 155, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":151 + * + * + * cdef circle_encode(CodecContext settings, WriteBuffer wbuf, obj): # <<<<<<<<<<<<<< + * wbuf.write_int32(24) + * wbuf.write_double(obj[0][0]) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.circle_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":158 + * + * + * cdef circle_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * double center_x = hton.unpack_double(frb_read(buf, 8)) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_circle_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + double __pyx_v_center_x; + double __pyx_v_center_y; + double __pyx_v_radius; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("circle_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":160 + * cdef circle_decode(CodecContext settings, FRBuffer *buf): + * cdef: + * double center_x = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * double center_y = hton.unpack_double(frb_read(buf, 8)) + * double radius = hton.unpack_double(frb_read(buf, 8)) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 160, __pyx_L1_error) + __pyx_v_center_x = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":161 + * cdef: + * double center_x = hton.unpack_double(frb_read(buf, 8)) + * double center_y = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * double radius = hton.unpack_double(frb_read(buf, 8)) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 161, __pyx_L1_error) + __pyx_v_center_y = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":162 + * double center_x = hton.unpack_double(frb_read(buf, 8)) + * double center_y = hton.unpack_double(frb_read(buf, 8)) + * double radius = hton.unpack_double(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * + * return gaussdbproto_types.Circle((center_x, center_y), radius) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(20, 162, __pyx_L1_error) + __pyx_v_radius = unpack_double(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":164 + * double radius = hton.unpack_double(frb_read(buf, 8)) + * + * return gaussdbproto_types.Circle((center_x, center_y), radius) # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gaussdbproto_types); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Circle); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = PyFloat_FromDouble(__pyx_v_center_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyFloat_FromDouble(__pyx_v_center_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4) != (0)) __PYX_ERR(20, 164, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6) != (0)) __PYX_ERR(20, 164, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_t_6 = 0; + __pyx_t_6 = PyFloat_FromDouble(__pyx_v_radius); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = 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_8 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_6}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __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_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 164, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_r = __pyx_t_2; + __pyx_t_2 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/geometry.pyx":158 + * + * + * cdef circle_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * double center_x = hton.unpack_double(frb_read(buf, 8)) +*/ + + /* 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_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.circle_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":8 + * + * + * cdef hstore_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * char *str +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_hstore_encode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + char *__pyx_v_str; + Py_ssize_t __pyx_v_size; + Py_ssize_t __pyx_v_count; + PyObject *__pyx_v_items = 0; + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_item_buf = 0; + PyObject *__pyx_v_k = NULL; + PyObject *__pyx_v_v = NULL; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + Py_ssize_t __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; + PyObject *(*__pyx_t_7)(PyObject *); + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *(*__pyx_t_10)(PyObject *); + int32_t __pyx_t_11; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("hstore_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":14 + * ssize_t count + * object items + * WriteBuffer item_buf = WriteBuffer.new() # <<<<<<<<<<<<<< + * + * count = len(obj) +*/ + __pyx_t_1 = ((PyObject *)__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_new()); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_item_buf = ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":16 + * WriteBuffer item_buf = WriteBuffer.new() + * + * count = len(obj) # <<<<<<<<<<<<<< + * if count > _MAXINT32: + * raise ValueError('hstore value is too large') +*/ + __pyx_t_2 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(21, 16, __pyx_L1_error) + __pyx_v_count = __pyx_t_2; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":17 + * + * count = len(obj) + * if count > _MAXINT32: # <<<<<<<<<<<<<< + * raise ValueError('hstore value is too large') + * item_buf.write_int32(count) +*/ + __pyx_t_3 = (__pyx_v_count > 0x7FFFFFFF); + if (unlikely(__pyx_t_3)) { + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":18 + * count = len(obj) + * if count > _MAXINT32: + * raise ValueError('hstore value is too large') # <<<<<<<<<<<<<< + * item_buf.write_int32(count) + * +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_5 = __pyx_builtin_ValueError; + __pyx_t_6 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_hstore_value_is_too_large}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 18, __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(21, 18, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":17 + * + * count = len(obj) + * if count > _MAXINT32: # <<<<<<<<<<<<<< + * raise ValueError('hstore value is too large') + * item_buf.write_int32(count) +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":19 + * if count > _MAXINT32: + * raise ValueError('hstore value is too large') + * item_buf.write_int32(count) # <<<<<<<<<<<<<< + * + * if hasattr(obj, 'items'): +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_item_buf, ((int32_t)__pyx_v_count)); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":21 + * item_buf.write_int32(count) + * + * if hasattr(obj, 'items'): # <<<<<<<<<<<<<< + * items = obj.items() + * else: +*/ + __pyx_t_3 = __Pyx_HasAttr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_items); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(21, 21, __pyx_L1_error) + if (__pyx_t_3) { + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":22 + * + * if hasattr(obj, 'items'): + * items = obj.items() # <<<<<<<<<<<<<< + * else: + * items = obj +*/ + __pyx_t_5 = __pyx_v_obj; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_items, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_items = __pyx_t_1; + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":21 + * item_buf.write_int32(count) + * + * if hasattr(obj, 'items'): # <<<<<<<<<<<<<< + * items = obj.items() + * else: +*/ + goto __pyx_L4; + } + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":24 + * items = obj.items() + * else: + * items = obj # <<<<<<<<<<<<<< + * + * for k, v in items: +*/ + /*else*/ { + __Pyx_INCREF(__pyx_v_obj); + __pyx_v_items = __pyx_v_obj; + } + __pyx_L4:; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":26 + * items = obj + * + * for k, v in items: # <<<<<<<<<<<<<< + * if k is None: + * raise ValueError('null value not allowed in hstore key') +*/ + if (likely(PyList_CheckExact(__pyx_v_items)) || PyTuple_CheckExact(__pyx_v_items)) { + __pyx_t_1 = __pyx_v_items; __Pyx_INCREF(__pyx_t_1); + __pyx_t_2 = 0; + __pyx_t_7 = NULL; + } else { + __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_items); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 26, __pyx_L1_error) + } + for (;;) { + if (likely(!__pyx_t_7)) { + 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(21, 26, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + __pyx_t_5 = __Pyx_PyList_GetItemRef(__pyx_t_1, __pyx_t_2); + ++__pyx_t_2; + } 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(21, 26, __pyx_L1_error) + #endif + if (__pyx_t_2 >= __pyx_temp) break; + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + __pyx_t_5 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2)); + #else + __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); + #endif + ++__pyx_t_2; + } + if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 26, __pyx_L1_error) + } else { + __pyx_t_5 = __pyx_t_7(__pyx_t_1); + if (unlikely(!__pyx_t_5)) { + PyObject* exc_type = PyErr_Occurred(); + if (exc_type) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(21, 26, __pyx_L1_error) + PyErr_Clear(); + } + break; + } + } + __Pyx_GOTREF(__pyx_t_5); + if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { + PyObject* sequence = __pyx_t_5; + 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(21, 26, __pyx_L1_error) + } + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + if (likely(PyTuple_CheckExact(sequence))) { + __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); + __Pyx_INCREF(__pyx_t_4); + __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); + __Pyx_INCREF(__pyx_t_8); + } else { + __pyx_t_4 = __Pyx_PyList_GetItemRef(sequence, 0); + if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 26, __pyx_L1_error) + __Pyx_XGOTREF(__pyx_t_4); + __pyx_t_8 = __Pyx_PyList_GetItemRef(sequence, 1); + if (unlikely(!__pyx_t_8)) __PYX_ERR(21, 26, __pyx_L1_error) + __Pyx_XGOTREF(__pyx_t_8); + } + #else + __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(21, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + #endif + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } else { + Py_ssize_t index = -1; + __pyx_t_9 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(21, 26, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_9); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_9); + index = 0; __pyx_t_4 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L7_unpacking_failed; + __Pyx_GOTREF(__pyx_t_4); + index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L7_unpacking_failed; + __Pyx_GOTREF(__pyx_t_8); + if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) __PYX_ERR(21, 26, __pyx_L1_error) + __pyx_t_10 = NULL; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + goto __pyx_L8_unpacking_done; + __pyx_L7_unpacking_failed:; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __pyx_t_10 = NULL; + if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); + __PYX_ERR(21, 26, __pyx_L1_error) + __pyx_L8_unpacking_done:; + } + __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_4); + __pyx_t_4 = 0; + __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_8); + __pyx_t_8 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":27 + * + * for k, v in items: + * if k is None: # <<<<<<<<<<<<<< + * raise ValueError('null value not allowed in hstore key') + * as_gaussdb_string_and_size(settings, k, &str, &size) +*/ + __pyx_t_3 = (__pyx_v_k == Py_None); + if (unlikely(__pyx_t_3)) { + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":28 + * for k, v in items: + * if k is None: + * raise ValueError('null value not allowed in hstore key') # <<<<<<<<<<<<<< + * as_gaussdb_string_and_size(settings, k, &str, &size) + * item_buf.write_int32(size) +*/ + __pyx_t_8 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_4 = __pyx_builtin_ValueError; + __pyx_t_6 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_null_value_not_allowed_in_hstore}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 28, __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(21, 28, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":27 + * + * for k, v in items: + * if k is None: # <<<<<<<<<<<<<< + * raise ValueError('null value not allowed in hstore key') + * as_gaussdb_string_and_size(settings, k, &str, &size) +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":29 + * if k is None: + * raise ValueError('null value not allowed in hstore key') + * as_gaussdb_string_and_size(settings, k, &str, &size) # <<<<<<<<<<<<<< + * item_buf.write_int32(size) + * item_buf.write_cstr(str, size) +*/ + __pyx_t_5 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_as_gaussdb_string_and_size(__pyx_v_settings, __pyx_v_k, (&__pyx_v_str), (&__pyx_v_size)); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":30 + * raise ValueError('null value not allowed in hstore key') + * as_gaussdb_string_and_size(settings, k, &str, &size) + * item_buf.write_int32(size) # <<<<<<<<<<<<<< + * item_buf.write_cstr(str, size) + * if v is None: +*/ + __pyx_t_5 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_item_buf, ((int32_t)__pyx_v_size)); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 30, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":31 + * as_gaussdb_string_and_size(settings, k, &str, &size) + * item_buf.write_int32(size) + * item_buf.write_cstr(str, size) # <<<<<<<<<<<<<< + * if v is None: + * item_buf.write_int32(-1) +*/ + __pyx_t_5 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_item_buf, __pyx_v_str, __pyx_v_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 31, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":32 + * item_buf.write_int32(size) + * item_buf.write_cstr(str, size) + * if v is None: # <<<<<<<<<<<<<< + * item_buf.write_int32(-1) + * else: +*/ + __pyx_t_3 = (__pyx_v_v == Py_None); + if (__pyx_t_3) { + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":33 + * item_buf.write_cstr(str, size) + * if v is None: + * item_buf.write_int32(-1) # <<<<<<<<<<<<<< + * else: + * as_gaussdb_string_and_size(settings, v, &str, &size) +*/ + __pyx_t_5 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_item_buf, ((int32_t)-1L)); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":32 + * item_buf.write_int32(size) + * item_buf.write_cstr(str, size) + * if v is None: # <<<<<<<<<<<<<< + * item_buf.write_int32(-1) + * else: +*/ + goto __pyx_L10; + } + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":35 + * item_buf.write_int32(-1) + * else: + * as_gaussdb_string_and_size(settings, v, &str, &size) # <<<<<<<<<<<<<< + * item_buf.write_int32(size) + * item_buf.write_cstr(str, size) +*/ + /*else*/ { + __pyx_t_5 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_as_gaussdb_string_and_size(__pyx_v_settings, __pyx_v_v, (&__pyx_v_str), (&__pyx_v_size)); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":36 + * else: + * as_gaussdb_string_and_size(settings, v, &str, &size) + * item_buf.write_int32(size) # <<<<<<<<<<<<<< + * item_buf.write_cstr(str, size) + * +*/ + __pyx_t_5 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_item_buf, ((int32_t)__pyx_v_size)); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 36, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":37 + * as_gaussdb_string_and_size(settings, v, &str, &size) + * item_buf.write_int32(size) + * item_buf.write_cstr(str, size) # <<<<<<<<<<<<<< + * + * buf.write_int32(item_buf.len()) +*/ + __pyx_t_5 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_item_buf, __pyx_v_str, __pyx_v_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + __pyx_L10:; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":26 + * items = obj + * + * for k, v in items: # <<<<<<<<<<<<<< + * if k is None: + * raise ValueError('null value not allowed in hstore key') +*/ + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":39 + * item_buf.write_cstr(str, size) + * + * buf.write_int32(item_buf.len()) # <<<<<<<<<<<<<< + * buf.write_buffer(item_buf) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_len(__pyx_v_item_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 39, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_11 = __Pyx_PyLong_As_int32_t(__pyx_t_1); if (unlikely((__pyx_t_11 == ((int32_t)-1)) && PyErr_Occurred())) __PYX_ERR(21, 39, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, __pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 39, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":40 + * + * buf.write_int32(item_buf.len()) + * buf.write_buffer(item_buf) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_buffer(__pyx_v_buf, __pyx_v_item_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 40, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":8 + * + * + * cdef hstore_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * char *str +*/ + + /* 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_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.hstore_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_items); + __Pyx_XDECREF((PyObject *)__pyx_v_item_buf); + __Pyx_XDECREF(__pyx_v_k); + __Pyx_XDECREF(__pyx_v_v); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":43 + * + * + * cdef hstore_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * dict result +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_hstore_decode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_v_result = 0; + uint32_t __pyx_v_elem_count; + int32_t __pyx_v_elem_len; + CYTHON_UNUSED uint32_t __pyx_v_i; + PyObject *__pyx_v_k = 0; + PyObject *__pyx_v_v = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + char const *__pyx_t_2; + int __pyx_t_3; + uint32_t __pyx_t_4; + uint32_t __pyx_t_5; + uint32_t __pyx_t_6; + PyObject *__pyx_t_7 = NULL; + PyObject *__pyx_t_8 = NULL; + size_t __pyx_t_9; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("hstore_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":52 + * str v + * + * result = {} # <<<<<<<<<<<<<< + * + * elem_count = hton.unpack_int32(frb_read(buf, 4)) +*/ + __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 52, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_result = ((PyObject*)__pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":54 + * result = {} + * + * elem_count = hton.unpack_int32(frb_read(buf, 4)) # <<<<<<<<<<<<<< + * if elem_count == 0: + * return result +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_2 == ((char const *)0))) __PYX_ERR(21, 54, __pyx_L1_error) + __pyx_v_elem_count = ((uint32_t)unpack_int32(__pyx_t_2)); + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":55 + * + * elem_count = hton.unpack_int32(frb_read(buf, 4)) + * if elem_count == 0: # <<<<<<<<<<<<<< + * return result + * +*/ + __pyx_t_3 = (__pyx_v_elem_count == 0); + if (__pyx_t_3) { + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":56 + * elem_count = hton.unpack_int32(frb_read(buf, 4)) + * if elem_count == 0: + * return result # <<<<<<<<<<<<<< + * + * for i in range(elem_count): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_result); + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":55 + * + * elem_count = hton.unpack_int32(frb_read(buf, 4)) + * if elem_count == 0: # <<<<<<<<<<<<<< + * return result + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":58 + * return result + * + * for i in range(elem_count): # <<<<<<<<<<<<<< + * elem_len = hton.unpack_int32(frb_read(buf, 4)) + * if elem_len < 0: +*/ + __pyx_t_4 = __pyx_v_elem_count; + __pyx_t_5 = __pyx_t_4; + for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { + __pyx_v_i = __pyx_t_6; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":59 + * + * for i in range(elem_count): + * elem_len = hton.unpack_int32(frb_read(buf, 4)) # <<<<<<<<<<<<<< + * if elem_len < 0: + * raise ValueError('null value not allowed in hstore key') +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_2 == ((char const *)0))) __PYX_ERR(21, 59, __pyx_L1_error) + __pyx_v_elem_len = unpack_int32(__pyx_t_2); + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":60 + * for i in range(elem_count): + * elem_len = hton.unpack_int32(frb_read(buf, 4)) + * if elem_len < 0: # <<<<<<<<<<<<<< + * raise ValueError('null value not allowed in hstore key') + * +*/ + __pyx_t_3 = (__pyx_v_elem_len < 0); + if (unlikely(__pyx_t_3)) { + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":61 + * elem_len = hton.unpack_int32(frb_read(buf, 4)) + * if elem_len < 0: + * raise ValueError('null value not allowed in hstore key') # <<<<<<<<<<<<<< + * + * k = decode_gaussdb_string(settings, frb_read(buf, elem_len), elem_len) +*/ + __pyx_t_7 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_8 = __pyx_builtin_ValueError; + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_null_value_not_allowed_in_hstore}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 61, __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(21, 61, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":60 + * for i in range(elem_count): + * elem_len = hton.unpack_int32(frb_read(buf, 4)) + * if elem_len < 0: # <<<<<<<<<<<<<< + * raise ValueError('null value not allowed in hstore key') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":63 + * raise ValueError('null value not allowed in hstore key') + * + * k = decode_gaussdb_string(settings, frb_read(buf, elem_len), elem_len) # <<<<<<<<<<<<<< + * + * elem_len = hton.unpack_int32(frb_read(buf, 4)) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, __pyx_v_elem_len); if (unlikely(__pyx_t_2 == ((char const *)0))) __PYX_ERR(21, 63, __pyx_L1_error) + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_decode_gaussdb_string(__pyx_v_settings, __pyx_t_2, __pyx_v_elem_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 63, __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(21, 63, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_k, ((PyObject*)__pyx_t_1)); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":65 + * k = decode_gaussdb_string(settings, frb_read(buf, elem_len), elem_len) + * + * elem_len = hton.unpack_int32(frb_read(buf, 4)) # <<<<<<<<<<<<<< + * if elem_len < 0: + * v = None +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_2 == ((char const *)0))) __PYX_ERR(21, 65, __pyx_L1_error) + __pyx_v_elem_len = unpack_int32(__pyx_t_2); + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":66 + * + * elem_len = hton.unpack_int32(frb_read(buf, 4)) + * if elem_len < 0: # <<<<<<<<<<<<<< + * v = None + * else: +*/ + __pyx_t_3 = (__pyx_v_elem_len < 0); + if (__pyx_t_3) { + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":67 + * elem_len = hton.unpack_int32(frb_read(buf, 4)) + * if elem_len < 0: + * v = None # <<<<<<<<<<<<<< + * else: + * v = decode_gaussdb_string(settings, frb_read(buf, elem_len), elem_len) +*/ + __Pyx_INCREF(Py_None); + __Pyx_XDECREF_SET(__pyx_v_v, ((PyObject*)Py_None)); + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":66 + * + * elem_len = hton.unpack_int32(frb_read(buf, 4)) + * if elem_len < 0: # <<<<<<<<<<<<<< + * v = None + * else: +*/ + goto __pyx_L7; + } + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":69 + * v = None + * else: + * v = decode_gaussdb_string(settings, frb_read(buf, elem_len), elem_len) # <<<<<<<<<<<<<< + * + * result[k] = v +*/ + /*else*/ { + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, __pyx_v_elem_len); if (unlikely(__pyx_t_2 == ((char const *)0))) __PYX_ERR(21, 69, __pyx_L1_error) + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_decode_gaussdb_string(__pyx_v_settings, __pyx_t_2, __pyx_v_elem_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 69, __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(21, 69, __pyx_L1_error) + __Pyx_XDECREF_SET(__pyx_v_v, ((PyObject*)__pyx_t_1)); + __pyx_t_1 = 0; + } + __pyx_L7:; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":71 + * v = decode_gaussdb_string(settings, frb_read(buf, elem_len), elem_len) + * + * result[k] = v # <<<<<<<<<<<<<< + * + * return result +*/ + if (unlikely((PyDict_SetItem(__pyx_v_result, __pyx_v_k, __pyx_v_v) < 0))) __PYX_ERR(21, 71, __pyx_L1_error) + } + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":73 + * result[k] = v + * + * return result # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v_result); + __pyx_r = __pyx_v_result; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/hstore.pyx":43 + * + * + * cdef hstore_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * dict result +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_XDECREF(__pyx_t_8); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.hstore_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_result); + __Pyx_XDECREF(__pyx_v_k); + __Pyx_XDECREF(__pyx_v_v); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/misc.pyx":8 + * + * + * cdef void_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * # Void is zero bytes + * buf.write_int32(0) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_void_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, CYTHON_UNUSED PyObject *__pyx_v_obj) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("void_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/misc.pyx":10 + * cdef void_encode(CodecContext settings, WriteBuffer buf, obj): + * # Void is zero bytes + * buf.write_int32(0) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/misc.pyx":8 + * + * + * cdef void_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * # Void is zero bytes + * buf.write_int32(0) +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.void_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/misc.pyx":13 + * + * + * cdef void_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * # Do nothing; void will be passed as NULL so this function + * # will never be called. +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_void_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, CYTHON_UNUSED struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("void_decode", 0); + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/network.pyx":22 + * + * + * cdef inline uint8_t _ip_max_prefix_len(int32_t family): # <<<<<<<<<<<<<< + * # Maximum number of bits in the network prefix of the specified + * # IP protocol version. +*/ + +static CYTHON_INLINE uint8_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__ip_max_prefix_len(int32_t __pyx_v_family) { + uint8_t __pyx_r; + int __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":25 + * # Maximum number of bits in the network prefix of the specified + * # IP protocol version. + * if family == GAUSSDBSQL_AF_INET: # <<<<<<<<<<<<<< + * return 32 + * else: +*/ + __pyx_t_1 = (__pyx_v_family == 2); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":26 + * # IP protocol version. + * if family == GAUSSDBSQL_AF_INET: + * return 32 # <<<<<<<<<<<<<< + * else: + * return 128 +*/ + __pyx_r = 32; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":25 + * # Maximum number of bits in the network prefix of the specified + * # IP protocol version. + * if family == GAUSSDBSQL_AF_INET: # <<<<<<<<<<<<<< + * return 32 + * else: +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":28 + * return 32 + * else: + * return 128 # <<<<<<<<<<<<<< + * + * +*/ + /*else*/ { + __pyx_r = 0x80; + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":22 + * + * + * cdef inline uint8_t _ip_max_prefix_len(int32_t family): # <<<<<<<<<<<<<< + * # Maximum number of bits in the network prefix of the specified + * # IP protocol version. +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/network.pyx":31 + * + * + * cdef inline int32_t _ip_addr_len(int32_t family): # <<<<<<<<<<<<<< + * # Length of address in bytes for the specified IP protocol version. + * if family == GAUSSDBSQL_AF_INET: +*/ + +static CYTHON_INLINE int32_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__ip_addr_len(int32_t __pyx_v_family) { + int32_t __pyx_r; + int __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":33 + * cdef inline int32_t _ip_addr_len(int32_t family): + * # Length of address in bytes for the specified IP protocol version. + * if family == GAUSSDBSQL_AF_INET: # <<<<<<<<<<<<<< + * return 4 + * else: +*/ + __pyx_t_1 = (__pyx_v_family == 2); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":34 + * # Length of address in bytes for the specified IP protocol version. + * if family == GAUSSDBSQL_AF_INET: + * return 4 # <<<<<<<<<<<<<< + * else: + * return 16 +*/ + __pyx_r = 4; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":33 + * cdef inline int32_t _ip_addr_len(int32_t family): + * # Length of address in bytes for the specified IP protocol version. + * if family == GAUSSDBSQL_AF_INET: # <<<<<<<<<<<<<< + * return 4 + * else: +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":36 + * return 4 + * else: + * return 16 # <<<<<<<<<<<<<< + * + * +*/ + /*else*/ { + __pyx_r = 16; + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":31 + * + * + * cdef inline int32_t _ip_addr_len(int32_t family): # <<<<<<<<<<<<<< + * # Length of address in bytes for the specified IP protocol version. + * if family == GAUSSDBSQL_AF_INET: +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/network.pyx":39 + * + * + * cdef inline int8_t _ver_to_family(int32_t version): # <<<<<<<<<<<<<< + * if version == 4: + * return GAUSSDBSQL_AF_INET +*/ + +static CYTHON_INLINE int8_t __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__ver_to_family(int32_t __pyx_v_version) { + int8_t __pyx_r; + int __pyx_t_1; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":40 + * + * cdef inline int8_t _ver_to_family(int32_t version): + * if version == 4: # <<<<<<<<<<<<<< + * return GAUSSDBSQL_AF_INET + * else: +*/ + __pyx_t_1 = (__pyx_v_version == 4); + if (__pyx_t_1) { + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":41 + * cdef inline int8_t _ver_to_family(int32_t version): + * if version == 4: + * return GAUSSDBSQL_AF_INET # <<<<<<<<<<<<<< + * else: + * return GAUSSDBSQL_AF_INET6 +*/ + __pyx_r = 2; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":40 + * + * cdef inline int8_t _ver_to_family(int32_t version): + * if version == 4: # <<<<<<<<<<<<<< + * return GAUSSDBSQL_AF_INET + * else: +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":43 + * return GAUSSDBSQL_AF_INET + * else: + * return GAUSSDBSQL_AF_INET6 # <<<<<<<<<<<<<< + * + * +*/ + /*else*/ { + __pyx_r = 3; + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":39 + * + * + * cdef inline int8_t _ver_to_family(int32_t version): # <<<<<<<<<<<<<< + * if version == 4: + * return GAUSSDBSQL_AF_INET +*/ + + /* function exit code */ + __pyx_L0:; + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/network.pyx":46 + * + * + * cdef inline _net_encode(WriteBuffer buf, int8_t family, uint32_t bits, # <<<<<<<<<<<<<< + * int8_t is_cidr, bytes addr): + * +*/ + +static CYTHON_INLINE PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__net_encode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, int8_t __pyx_v_family, uint32_t __pyx_v_bits, int8_t __pyx_v_is_cidr, PyObject *__pyx_v_addr) { + char *__pyx_v_addrbytes; + Py_ssize_t __pyx_v_addrlen; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("_net_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":53 + * ssize_t addrlen + * + * cpython.PyBytes_AsStringAndSize(addr, &addrbytes, &addrlen) # <<<<<<<<<<<<<< + * + * buf.write_int32(4 + addrlen) +*/ + __pyx_t_1 = PyBytes_AsStringAndSize(__pyx_v_addr, (&__pyx_v_addrbytes), ((Py_ssize_t *)(&__pyx_v_addrlen))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(23, 53, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":55 + * cpython.PyBytes_AsStringAndSize(addr, &addrbytes, &addrlen) + * + * buf.write_int32(4 + addrlen) # <<<<<<<<<<<<<< + * buf.write_byte(family) + * buf.write_byte(bits) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, (4 + ((int32_t)__pyx_v_addrlen))); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 55, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":56 + * + * buf.write_int32(4 + addrlen) + * buf.write_byte(family) # <<<<<<<<<<<<<< + * buf.write_byte(bits) + * buf.write_byte(is_cidr) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_byte(__pyx_v_buf, __pyx_v_family); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":57 + * buf.write_int32(4 + addrlen) + * buf.write_byte(family) + * buf.write_byte(bits) # <<<<<<<<<<<<<< + * buf.write_byte(is_cidr) + * buf.write_byte(addrlen) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_byte(__pyx_v_buf, ((int8_t)__pyx_v_bits)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 57, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":58 + * buf.write_byte(family) + * buf.write_byte(bits) + * buf.write_byte(is_cidr) # <<<<<<<<<<<<<< + * buf.write_byte(addrlen) + * buf.write_cstr(addrbytes, addrlen) +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_byte(__pyx_v_buf, __pyx_v_is_cidr); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 58, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":59 + * buf.write_byte(bits) + * buf.write_byte(is_cidr) + * buf.write_byte(addrlen) # <<<<<<<<<<<<<< + * buf.write_cstr(addrbytes, addrlen) + * +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_byte(__pyx_v_buf, ((int8_t)__pyx_v_addrlen)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":60 + * buf.write_byte(is_cidr) + * buf.write_byte(addrlen) + * buf.write_cstr(addrbytes, addrlen) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr(__pyx_v_buf, __pyx_v_addrbytes, __pyx_v_addrlen); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 60, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":46 + * + * + * cdef inline _net_encode(WriteBuffer buf, int8_t family, uint32_t bits, # <<<<<<<<<<<<<< + * int8_t is_cidr, bytes addr): + * +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto._net_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/network.pyx":63 + * + * + * cdef net_decode(CodecContext settings, FRBuffer *buf, bint as_cidr): # <<<<<<<<<<<<<< + * cdef: + * int32_t family = frb_read(buf, 1)[0] +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_net_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf, int __pyx_v_as_cidr) { + int32_t __pyx_v_family; + uint8_t __pyx_v_bits; + int __pyx_v_prefix_len; + int32_t __pyx_v_is_cidr; + int32_t __pyx_v_addrlen; + PyObject *__pyx_v_addr = 0; + uint8_t __pyx_v_max_prefix_len; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + uint8_t __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + PyObject *__pyx_t_9 = NULL; + PyObject *__pyx_t_10 = NULL; + int32_t __pyx_t_11; + int __pyx_t_12; + int __pyx_t_13; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("net_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":65 + * cdef net_decode(CodecContext settings, FRBuffer *buf, bint as_cidr): + * cdef: + * int32_t family = frb_read(buf, 1)[0] # <<<<<<<<<<<<<< + * uint8_t bits = frb_read(buf, 1)[0] + * int prefix_len +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 1); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(23, 65, __pyx_L1_error) + __pyx_v_family = ((int32_t)(__pyx_t_1[0])); + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":66 + * cdef: + * int32_t family = frb_read(buf, 1)[0] + * uint8_t bits = frb_read(buf, 1)[0] # <<<<<<<<<<<<<< + * int prefix_len + * int32_t is_cidr = frb_read(buf, 1)[0] +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 1); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(23, 66, __pyx_L1_error) + __pyx_v_bits = ((uint8_t)(__pyx_t_1[0])); + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":68 + * uint8_t bits = frb_read(buf, 1)[0] + * int prefix_len + * int32_t is_cidr = frb_read(buf, 1)[0] # <<<<<<<<<<<<<< + * int32_t addrlen = frb_read(buf, 1)[0] + * bytes addr +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 1); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(23, 68, __pyx_L1_error) + __pyx_v_is_cidr = ((int32_t)(__pyx_t_1[0])); + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":69 + * int prefix_len + * int32_t is_cidr = frb_read(buf, 1)[0] + * int32_t addrlen = frb_read(buf, 1)[0] # <<<<<<<<<<<<<< + * bytes addr + * uint8_t max_prefix_len = _ip_max_prefix_len(family) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 1); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(23, 69, __pyx_L1_error) + __pyx_v_addrlen = ((int32_t)(__pyx_t_1[0])); + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":71 + * int32_t addrlen = frb_read(buf, 1)[0] + * bytes addr + * uint8_t max_prefix_len = _ip_max_prefix_len(family) # <<<<<<<<<<<<<< + * + * if is_cidr != as_cidr: +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__ip_max_prefix_len(__pyx_v_family); if (unlikely(__pyx_t_2 == ((uint8_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 71, __pyx_L1_error) + __pyx_v_max_prefix_len = __pyx_t_2; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":73 + * uint8_t max_prefix_len = _ip_max_prefix_len(family) + * + * if is_cidr != as_cidr: # <<<<<<<<<<<<<< + * raise ValueError('unexpected CIDR flag set in non-cidr value') + * +*/ + __pyx_t_3 = (__pyx_v_is_cidr != __pyx_v_as_cidr); + if (unlikely(__pyx_t_3)) { + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":74 + * + * if is_cidr != as_cidr: + * raise ValueError('unexpected CIDR flag set in non-cidr value') # <<<<<<<<<<<<<< + * + * if family != GAUSSDBSQL_AF_INET and family != GAUSSDBSQL_AF_INET6: +*/ + __pyx_t_5 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_6 = __pyx_builtin_ValueError; + __pyx_t_7 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_unexpected_CIDR_flag_set_in_non}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 74, __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(23, 74, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":73 + * uint8_t max_prefix_len = _ip_max_prefix_len(family) + * + * if is_cidr != as_cidr: # <<<<<<<<<<<<<< + * raise ValueError('unexpected CIDR flag set in non-cidr value') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":76 + * raise ValueError('unexpected CIDR flag set in non-cidr value') + * + * if family != GAUSSDBSQL_AF_INET and family != GAUSSDBSQL_AF_INET6: # <<<<<<<<<<<<<< + * raise ValueError('invalid address family in "{}" value'.format( + * 'cidr' if is_cidr else 'inet' +*/ + switch (__pyx_v_family) { + case 2: + case 3: + __pyx_t_3 = 0; + break; + default: + __pyx_t_3 = 1; + break; + } + if (unlikely(__pyx_t_3)) { + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":77 + * + * if family != GAUSSDBSQL_AF_INET and family != GAUSSDBSQL_AF_INET6: + * raise ValueError('invalid address family in "{}" value'.format( # <<<<<<<<<<<<<< + * 'cidr' if is_cidr else 'inet' + * )) +*/ + __pyx_t_6 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_5 = __pyx_builtin_ValueError; + __pyx_t_9 = __pyx_mstate_global->__pyx_kp_u_invalid_address_family_in_value; + __Pyx_INCREF(__pyx_t_9); + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":78 + * if family != GAUSSDBSQL_AF_INET and family != GAUSSDBSQL_AF_INET6: + * raise ValueError('invalid address family in "{}" value'.format( + * 'cidr' if is_cidr else 'inet' # <<<<<<<<<<<<<< + * )) + * +*/ + __pyx_t_3 = (__pyx_v_is_cidr != 0); + if (__pyx_t_3) { + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_cidr); + __pyx_t_10 = __pyx_mstate_global->__pyx_n_u_cidr; + } else { + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_inet); + __pyx_t_10 = __pyx_mstate_global->__pyx_n_u_inet; + } + __pyx_t_7 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_10}; + __pyx_t_8 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(23, 77, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + } + __pyx_t_7 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_8}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __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_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 77, __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(23, 77, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":76 + * raise ValueError('unexpected CIDR flag set in non-cidr value') + * + * if family != GAUSSDBSQL_AF_INET and family != GAUSSDBSQL_AF_INET6: # <<<<<<<<<<<<<< + * raise ValueError('invalid address family in "{}" value'.format( + * 'cidr' if is_cidr else 'inet' +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":81 + * )) + * + * max_prefix_len = _ip_max_prefix_len(family) # <<<<<<<<<<<<<< + * + * if bits > max_prefix_len: +*/ + __pyx_t_2 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__ip_max_prefix_len(__pyx_v_family); if (unlikely(__pyx_t_2 == ((uint8_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 81, __pyx_L1_error) + __pyx_v_max_prefix_len = __pyx_t_2; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":83 + * max_prefix_len = _ip_max_prefix_len(family) + * + * if bits > max_prefix_len: # <<<<<<<<<<<<<< + * raise ValueError('invalid network prefix length in "{}" value'.format( + * 'cidr' if is_cidr else 'inet' +*/ + __pyx_t_3 = (__pyx_v_bits > __pyx_v_max_prefix_len); + if (unlikely(__pyx_t_3)) { + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":84 + * + * if bits > max_prefix_len: + * raise ValueError('invalid network prefix length in "{}" value'.format( # <<<<<<<<<<<<<< + * 'cidr' if is_cidr else 'inet' + * )) +*/ + __pyx_t_5 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_8 = __pyx_builtin_ValueError; + __pyx_t_10 = __pyx_mstate_global->__pyx_kp_u_invalid_network_prefix_length_in; + __Pyx_INCREF(__pyx_t_10); + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":85 + * if bits > max_prefix_len: + * raise ValueError('invalid network prefix length in "{}" value'.format( + * 'cidr' if is_cidr else 'inet' # <<<<<<<<<<<<<< + * )) + * +*/ + __pyx_t_3 = (__pyx_v_is_cidr != 0); + if (__pyx_t_3) { + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_cidr); + __pyx_t_9 = __pyx_mstate_global->__pyx_n_u_cidr; + } else { + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_inet); + __pyx_t_9 = __pyx_mstate_global->__pyx_n_u_inet; + } + __pyx_t_7 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_9}; + __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 84, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __pyx_t_7 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 84, __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(23, 84, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":83 + * max_prefix_len = _ip_max_prefix_len(family) + * + * if bits > max_prefix_len: # <<<<<<<<<<<<<< + * raise ValueError('invalid network prefix length in "{}" value'.format( + * 'cidr' if is_cidr else 'inet' +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":88 + * )) + * + * if addrlen != _ip_addr_len(family): # <<<<<<<<<<<<<< + * raise ValueError('invalid address length in "{}" value'.format( + * 'cidr' if is_cidr else 'inet' +*/ + __pyx_t_11 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__ip_addr_len(__pyx_v_family); if (unlikely(__pyx_t_11 == ((int32_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 88, __pyx_L1_error) + __pyx_t_3 = (__pyx_v_addrlen != __pyx_t_11); + if (unlikely(__pyx_t_3)) { + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":89 + * + * if addrlen != _ip_addr_len(family): + * raise ValueError('invalid address length in "{}" value'.format( # <<<<<<<<<<<<<< + * 'cidr' if is_cidr else 'inet' + * )) +*/ + __pyx_t_8 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_6 = __pyx_builtin_ValueError; + __pyx_t_9 = __pyx_mstate_global->__pyx_kp_u_invalid_address_length_in_value; + __Pyx_INCREF(__pyx_t_9); + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":90 + * if addrlen != _ip_addr_len(family): + * raise ValueError('invalid address length in "{}" value'.format( + * 'cidr' if is_cidr else 'inet' # <<<<<<<<<<<<<< + * )) + * +*/ + __pyx_t_3 = (__pyx_v_is_cidr != 0); + if (__pyx_t_3) { + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_cidr); + __pyx_t_10 = __pyx_mstate_global->__pyx_n_u_cidr; + } else { + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_inet); + __pyx_t_10 = __pyx_mstate_global->__pyx_n_u_inet; + } + __pyx_t_7 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_10}; + __pyx_t_5 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 89, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __pyx_t_7 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_5}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 89, __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(23, 89, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":88 + * )) + * + * if addrlen != _ip_addr_len(family): # <<<<<<<<<<<<<< + * raise ValueError('invalid address length in "{}" value'.format( + * 'cidr' if is_cidr else 'inet' +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":93 + * )) + * + * addr = cpython.PyBytes_FromStringAndSize(frb_read(buf, addrlen), addrlen) # <<<<<<<<<<<<<< + * + * if as_cidr or bits != max_prefix_len: +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, __pyx_v_addrlen); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(23, 93, __pyx_L1_error) + __pyx_t_4 = PyBytes_FromStringAndSize(__pyx_t_1, __pyx_v_addrlen); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 93, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_v_addr = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":95 + * addr = cpython.PyBytes_FromStringAndSize(frb_read(buf, addrlen), addrlen) + * + * if as_cidr or bits != max_prefix_len: # <<<<<<<<<<<<<< + * prefix_len = cpython.PyLong_FromLong(bits) + * +*/ + if (!__pyx_v_as_cidr) { + } else { + __pyx_t_3 = __pyx_v_as_cidr; + goto __pyx_L8_bool_binop_done; + } + __pyx_t_12 = (__pyx_v_bits != __pyx_v_max_prefix_len); + __pyx_t_3 = __pyx_t_12; + __pyx_L8_bool_binop_done:; + if (__pyx_t_3) { + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":96 + * + * if as_cidr or bits != max_prefix_len: + * prefix_len = cpython.PyLong_FromLong(bits) # <<<<<<<<<<<<<< + * + * if as_cidr: +*/ + __pyx_t_4 = PyLong_FromLong(__pyx_v_bits); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 96, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_13 = __Pyx_PyLong_As_int(__pyx_t_4); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 96, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_v_prefix_len = __pyx_t_13; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":98 + * prefix_len = cpython.PyLong_FromLong(bits) + * + * if as_cidr: # <<<<<<<<<<<<<< + * return _ipnet((addr, prefix_len)) + * else: +*/ + if (__pyx_v_as_cidr) { + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":99 + * + * if as_cidr: + * return _ipnet((addr, prefix_len)) # <<<<<<<<<<<<<< + * else: + * return _ipiface((addr, prefix_len)) +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_6 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ipnet); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_8 = __Pyx_PyLong_From_int(__pyx_v_prefix_len); if (unlikely(!__pyx_t_8)) __PYX_ERR(23, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_INCREF(__pyx_v_addr); + __Pyx_GIVEREF(__pyx_v_addr); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_addr) != (0)) __PYX_ERR(23, 99, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_8); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_8) != (0)) __PYX_ERR(23, 99, __pyx_L1_error); + __pyx_t_8 = 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[2] = {__pyx_t_6, __pyx_t_10}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __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_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 99, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":98 + * prefix_len = cpython.PyLong_FromLong(bits) + * + * if as_cidr: # <<<<<<<<<<<<<< + * return _ipnet((addr, prefix_len)) + * else: +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":101 + * return _ipnet((addr, prefix_len)) + * else: + * return _ipiface((addr, prefix_len)) # <<<<<<<<<<<<<< + * else: + * return _ipaddr(addr) +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __pyx_t_5 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_ipiface); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_prefix_len); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(23, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_INCREF(__pyx_v_addr); + __Pyx_GIVEREF(__pyx_v_addr); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_addr) != (0)) __PYX_ERR(23, 101, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6) != (0)) __PYX_ERR(23, 101, __pyx_L1_error); + __pyx_t_6 = 0; + __pyx_t_7 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_10))) { + __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_10); + assert(__pyx_t_5); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10); + __Pyx_INCREF(__pyx_t_5); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_10, __pyx__function); + __pyx_t_7 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_8}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 101, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":95 + * addr = cpython.PyBytes_FromStringAndSize(frb_read(buf, addrlen), addrlen) + * + * if as_cidr or bits != max_prefix_len: # <<<<<<<<<<<<<< + * prefix_len = cpython.PyLong_FromLong(bits) + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":103 + * return _ipiface((addr, prefix_len)) + * else: + * return _ipaddr(addr) # <<<<<<<<<<<<<< + * + * +*/ + /*else*/ { + __Pyx_XDECREF(__pyx_r); + __pyx_t_10 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_ipaddr); if (unlikely(!__pyx_t_8)) __PYX_ERR(23, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __pyx_t_7 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8); + assert(__pyx_t_10); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_10); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_8, __pyx__function); + __pyx_t_7 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_addr}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__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_4)) __PYX_ERR(23, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":63 + * + * + * cdef net_decode(CodecContext settings, FRBuffer *buf, bint as_cidr): # <<<<<<<<<<<<<< + * cdef: + * int32_t family = frb_read(buf, 1)[0] +*/ + + /* 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_8); + __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.net_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_addr); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/network.pyx":106 + * + * + * cdef cidr_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * object ipnet +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_cidr_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + PyObject *__pyx_v_ipnet = 0; + int8_t __pyx_v_family; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int32_t __pyx_t_5; + int8_t __pyx_t_6; + uint32_t __pyx_t_7; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("cidr_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":111 + * int8_t family + * + * ipnet = _ipnet(obj) # <<<<<<<<<<<<<< + * family = _ver_to_family(ipnet.version) + * _net_encode(buf, family, ipnet.prefixlen, 1, ipnet.network_address.packed) +*/ + __pyx_t_2 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ipnet); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 111, __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_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_4 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_obj}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __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(23, 111, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v_ipnet = __pyx_t_1; + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":112 + * + * ipnet = _ipnet(obj) + * family = _ver_to_family(ipnet.version) # <<<<<<<<<<<<<< + * _net_encode(buf, family, ipnet.prefixlen, 1, ipnet.network_address.packed) + * +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_ipnet, __pyx_mstate_global->__pyx_n_u_version); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_PyLong_As_int32_t(__pyx_t_1); if (unlikely((__pyx_t_5 == ((int32_t)-1)) && PyErr_Occurred())) __PYX_ERR(23, 112, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_6 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__ver_to_family(__pyx_t_5); if (unlikely(__pyx_t_6 == ((int8_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 112, __pyx_L1_error) + __pyx_v_family = __pyx_t_6; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":113 + * ipnet = _ipnet(obj) + * family = _ver_to_family(ipnet.version) + * _net_encode(buf, family, ipnet.prefixlen, 1, ipnet.network_address.packed) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_ipnet, __pyx_mstate_global->__pyx_n_u_prefixlen); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_7 = __Pyx_PyLong_As_uint32_t(__pyx_t_1); if (unlikely((__pyx_t_7 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(23, 113, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_ipnet, __pyx_mstate_global->__pyx_n_u_network_address); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_packed); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_3))) __PYX_ERR(23, 113, __pyx_L1_error) + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__net_encode(__pyx_v_buf, __pyx_v_family, __pyx_t_7, 1, ((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 113, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":106 + * + * + * cdef cidr_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * object ipnet +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.cidr_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_ipnet); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/network.pyx":116 + * + * + * cdef cidr_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return net_decode(settings, buf, True) + * +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_cidr_decode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("cidr_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":117 + * + * cdef cidr_decode(CodecContext settings, FRBuffer *buf): + * return net_decode(settings, buf, True) # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_net_decode(__pyx_v_settings, __pyx_v_buf, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 117, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":116 + * + * + * cdef cidr_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return net_decode(settings, buf, True) + * +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.cidr_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/network.pyx":120 + * + * + * cdef inet_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * object ipaddr +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_inet_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + PyObject *__pyx_v_ipaddr = 0; + int8_t __pyx_v_family; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + int32_t __pyx_t_8; + int8_t __pyx_t_9; + uint8_t __pyx_t_10; + int __pyx_t_11; + PyObject *__pyx_t_12 = NULL; + PyObject *__pyx_t_13 = NULL; + PyObject *__pyx_t_14 = NULL; + uint32_t __pyx_t_15; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("inet_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":125 + * int8_t family + * + * try: # <<<<<<<<<<<<<< + * ipaddr = _ipaddr(obj) + * except ValueError: +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_1); + __Pyx_XGOTREF(__pyx_t_2); + __Pyx_XGOTREF(__pyx_t_3); + /*try:*/ { + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":126 + * + * try: + * ipaddr = _ipaddr(obj) # <<<<<<<<<<<<<< + * except ValueError: + * # GaussDBSQL accepts *both* CIDR and host values +*/ + __pyx_t_5 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ipaddr); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 126, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = 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_7 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_obj}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 126, __pyx_L3_error) + __Pyx_GOTREF(__pyx_t_4); + } + __pyx_v_ipaddr = __pyx_t_4; + __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":125 + * int8_t family + * + * try: # <<<<<<<<<<<<<< + * ipaddr = _ipaddr(obj) + * except ValueError: +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":134 + * _net_encode(buf, family, ipaddr.network.prefixlen, 1, ipaddr.packed) + * else: + * family = _ver_to_family(ipaddr.version) # <<<<<<<<<<<<<< + * _net_encode(buf, family, _ip_max_prefix_len(family), 0, ipaddr.packed) + * +*/ + /*else:*/ { + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_ipaddr, __pyx_mstate_global->__pyx_n_u_version); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 134, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = __Pyx_PyLong_As_int32_t(__pyx_t_4); if (unlikely((__pyx_t_8 == ((int32_t)-1)) && PyErr_Occurred())) __PYX_ERR(23, 134, __pyx_L5_except_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_9 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__ver_to_family(__pyx_t_8); if (unlikely(__pyx_t_9 == ((int8_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 134, __pyx_L5_except_error) + __pyx_v_family = __pyx_t_9; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":135 + * else: + * family = _ver_to_family(ipaddr.version) + * _net_encode(buf, family, _ip_max_prefix_len(family), 0, ipaddr.packed) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_10 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__ip_max_prefix_len(__pyx_v_family); if (unlikely(__pyx_t_10 == ((uint8_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 135, __pyx_L5_except_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_ipaddr, __pyx_mstate_global->__pyx_n_u_packed); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 135, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_4); + if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_4))) __PYX_ERR(23, 135, __pyx_L5_except_error) + __pyx_t_6 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__net_encode(__pyx_v_buf, __pyx_v_family, __pyx_t_10, 0, ((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 135, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 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; + goto __pyx_L8_try_end; + __pyx_L3_error:; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":127 + * try: + * ipaddr = _ipaddr(obj) + * except ValueError: # <<<<<<<<<<<<<< + * # GaussDBSQL accepts *both* CIDR and host values + * # for the host datatype. +*/ + __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); + if (__pyx_t_11) { + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.inet_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_4, &__pyx_t_5) < 0) __PYX_ERR(23, 127, __pyx_L5_except_error) + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_5); + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":130 + * # GaussDBSQL accepts *both* CIDR and host values + * # for the host datatype. + * ipaddr = _ipiface(obj) # <<<<<<<<<<<<<< + * family = _ver_to_family(ipaddr.version) + * _net_encode(buf, family, ipaddr.network.prefixlen, 1, ipaddr.packed) +*/ + __pyx_t_13 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_ipiface); if (unlikely(!__pyx_t_14)) __PYX_ERR(23, 130, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_14); + __pyx_t_7 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_14))) { + __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_14); + assert(__pyx_t_13); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_14); + __Pyx_INCREF(__pyx_t_13); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_14, __pyx__function); + __pyx_t_7 = 0; + } + #endif + { + PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_v_obj}; + __pyx_t_12 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 130, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_12); + } + __Pyx_XDECREF_SET(__pyx_v_ipaddr, __pyx_t_12); + __pyx_t_12 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":131 + * # for the host datatype. + * ipaddr = _ipiface(obj) + * family = _ver_to_family(ipaddr.version) # <<<<<<<<<<<<<< + * _net_encode(buf, family, ipaddr.network.prefixlen, 1, ipaddr.packed) + * else: +*/ + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_ipaddr, __pyx_mstate_global->__pyx_n_u_version); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 131, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_8 = __Pyx_PyLong_As_int32_t(__pyx_t_12); if (unlikely((__pyx_t_8 == ((int32_t)-1)) && PyErr_Occurred())) __PYX_ERR(23, 131, __pyx_L5_except_error) + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_9 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__ver_to_family(__pyx_t_8); if (unlikely(__pyx_t_9 == ((int8_t)-1) && PyErr_Occurred())) __PYX_ERR(23, 131, __pyx_L5_except_error) + __pyx_v_family = __pyx_t_9; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":132 + * ipaddr = _ipiface(obj) + * family = _ver_to_family(ipaddr.version) + * _net_encode(buf, family, ipaddr.network.prefixlen, 1, ipaddr.packed) # <<<<<<<<<<<<<< + * else: + * family = _ver_to_family(ipaddr.version) +*/ + __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_ipaddr, __pyx_mstate_global->__pyx_n_u_network); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 132, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_12); + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_prefixlen); if (unlikely(!__pyx_t_14)) __PYX_ERR(23, 132, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_14); + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __pyx_t_15 = __Pyx_PyLong_As_uint32_t(__pyx_t_14); if (unlikely((__pyx_t_15 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(23, 132, __pyx_L5_except_error) + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_ipaddr, __pyx_mstate_global->__pyx_n_u_packed); if (unlikely(!__pyx_t_14)) __PYX_ERR(23, 132, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_14); + if (!(likely(PyBytes_CheckExact(__pyx_t_14))||((__pyx_t_14) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_14))) __PYX_ERR(23, 132, __pyx_L5_except_error) + __pyx_t_12 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto__net_encode(__pyx_v_buf, __pyx_v_family, __pyx_t_15, 1, ((PyObject*)__pyx_t_14)); if (unlikely(!__pyx_t_12)) __PYX_ERR(23, 132, __pyx_L5_except_error) + __Pyx_GOTREF(__pyx_t_12); + __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; + __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L4_exception_handled; + } + goto __pyx_L5_except_error; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":125 + * int8_t family + * + * try: # <<<<<<<<<<<<<< + * ipaddr = _ipaddr(obj) + * except ValueError: +*/ + __pyx_L5_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; + __pyx_L4_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + __pyx_L8_try_end:; + } + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":120 + * + * + * cdef inet_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * object ipaddr +*/ + + /* 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_6); + __Pyx_XDECREF(__pyx_t_12); + __Pyx_XDECREF(__pyx_t_13); + __Pyx_XDECREF(__pyx_t_14); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.inet_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_ipaddr); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/network.pyx":138 + * + * + * cdef inet_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return net_decode(settings, buf, False) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_inet_decode(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("inet_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":139 + * + * cdef inet_decode(CodecContext settings, FRBuffer *buf): + * return net_decode(settings, buf, False) # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_net_decode(__pyx_v_settings, __pyx_v_buf, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 139, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_r = __pyx_t_1; + __pyx_t_1 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":138 + * + * + * cdef inet_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * return net_decode(settings, buf, False) +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.inet_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/tid.pyx":8 + * + * + * cdef tid_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef int overflow = 0 + * cdef unsigned long block, offset +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_tid_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + int __pyx_v_overflow; + unsigned long __pyx_v_block; + unsigned long __pyx_v_offset; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + Py_ssize_t __pyx_t_9; + PyObject *__pyx_t_10 = NULL; + PyObject *__pyx_t_11 = NULL; + PyObject *__pyx_t_12 = NULL; + unsigned long __pyx_t_13; + int __pyx_t_14; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("tid_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":9 + * + * cdef tid_encode(CodecContext settings, WriteBuffer buf, obj): + * cdef int overflow = 0 # <<<<<<<<<<<<<< + * cdef unsigned long block, offset + * +*/ + __pyx_v_overflow = 0; + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":12 + * cdef unsigned long block, offset + * + * if not (cpython.PyTuple_Check(obj) or cpython.PyList_Check(obj)): # <<<<<<<<<<<<<< + * raise TypeError( + * 'list or tuple expected (got type {})'.format(type(obj))) +*/ + __pyx_t_2 = PyTuple_Check(__pyx_v_obj); + if (!__pyx_t_2) { + } else { + __pyx_t_1 = __pyx_t_2; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_2 = PyList_Check(__pyx_v_obj); + __pyx_t_1 = __pyx_t_2; + __pyx_L4_bool_binop_done:; + __pyx_t_2 = (!__pyx_t_1); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":13 + * + * if not (cpython.PyTuple_Check(obj) or cpython.PyList_Check(obj)): + * raise TypeError( # <<<<<<<<<<<<<< + * 'list or tuple expected (got type {})'.format(type(obj))) + * +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_TypeError); + __pyx_t_5 = __pyx_builtin_TypeError; + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":14 + * if not (cpython.PyTuple_Check(obj) or cpython.PyList_Check(obj)): + * raise TypeError( + * 'list or tuple expected (got type {})'.format(type(obj))) # <<<<<<<<<<<<<< + * + * if len(obj) != 2: +*/ + __pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_list_or_tuple_expected_got_type; + __Pyx_INCREF(__pyx_t_7); + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, ((PyObject *)Py_TYPE(__pyx_v_obj))}; + __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __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(24, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 13, __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(24, 13, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":12 + * cdef unsigned long block, offset + * + * if not (cpython.PyTuple_Check(obj) or cpython.PyList_Check(obj)): # <<<<<<<<<<<<<< + * raise TypeError( + * 'list or tuple expected (got type {})'.format(type(obj))) +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":16 + * 'list or tuple expected (got type {})'.format(type(obj))) + * + * if len(obj) != 2: # <<<<<<<<<<<<<< + * raise ValueError( + * 'invalid number of elements in tid tuple, expecting 2') +*/ + __pyx_t_9 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(24, 16, __pyx_L1_error) + __pyx_t_2 = (__pyx_t_9 != 2); + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":17 + * + * if len(obj) != 2: + * raise ValueError( # <<<<<<<<<<<<<< + * 'invalid number of elements in tid tuple, expecting 2') + * +*/ + __pyx_t_5 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_6 = __pyx_builtin_ValueError; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_invalid_number_of_elements_in_ti}; + __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __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(24, 17, __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(24, 17, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":16 + * 'list or tuple expected (got type {})'.format(type(obj))) + * + * if len(obj) != 2: # <<<<<<<<<<<<<< + * raise ValueError( + * 'invalid number of elements in tid tuple, expecting 2') +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":20 + * 'invalid number of elements in tid tuple, expecting 2') + * + * try: # <<<<<<<<<<<<<< + * block = cpython.PyLong_AsUnsignedLong(obj[0]) + * except OverflowError: +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_12); + /*try:*/ { + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":21 + * + * try: + * block = cpython.PyLong_AsUnsignedLong(obj[0]) # <<<<<<<<<<<<<< + * except OverflowError: + * overflow = 1 +*/ + __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 21, __pyx_L7_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_13 = PyLong_AsUnsignedLong(__pyx_t_3); if (unlikely(__pyx_t_13 == ((unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(24, 21, __pyx_L7_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_block = __pyx_t_13; + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":20 + * 'invalid number of elements in tid tuple, expecting 2') + * + * try: # <<<<<<<<<<<<<< + * block = cpython.PyLong_AsUnsignedLong(obj[0]) + * except OverflowError: +*/ + } + __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_L12_try_end; + __pyx_L7_error:; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":22 + * try: + * block = cpython.PyLong_AsUnsignedLong(obj[0]) + * except OverflowError: # <<<<<<<<<<<<<< + * overflow = 1 + * +*/ + __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OverflowError); + if (__pyx_t_14) { + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.tid_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(24, 22, __pyx_L9_except_error) + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_5); + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":23 + * block = cpython.PyLong_AsUnsignedLong(obj[0]) + * except OverflowError: + * overflow = 1 # <<<<<<<<<<<<<< + * + * # "long" and "long long" have the same size for x86_64, need an extra check +*/ + __pyx_v_overflow = 1; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + goto __pyx_L8_exception_handled; + } + goto __pyx_L9_except_error; + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":20 + * 'invalid number of elements in tid tuple, expecting 2') + * + * try: # <<<<<<<<<<<<<< + * block = cpython.PyLong_AsUnsignedLong(obj[0]) + * except OverflowError: +*/ + __pyx_L9_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_L8_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_L12_try_end:; + } + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":26 + * + * # "long" and "long long" have the same size for x86_64, need an extra check + * if overflow or (sizeof(block) > 4 and block > UINT32_MAX): # <<<<<<<<<<<<<< + * raise OverflowError('tuple id block value out of uint32 range') + * +*/ + __pyx_t_1 = (__pyx_v_overflow != 0); + if (!__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L16_bool_binop_done; + } + __pyx_t_1 = ((sizeof(__pyx_v_block)) > 4); + if (__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L16_bool_binop_done; + } + __pyx_t_1 = (__pyx_v_block > UINT32_MAX); + __pyx_t_2 = __pyx_t_1; + __pyx_L16_bool_binop_done:; + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":27 + * # "long" and "long long" have the same size for x86_64, need an extra check + * if overflow or (sizeof(block) > 4 and block > UINT32_MAX): + * raise OverflowError('tuple id block value out of uint32 range') # <<<<<<<<<<<<<< + * + * try: +*/ + __pyx_t_6 = NULL; + __Pyx_INCREF(__pyx_builtin_OverflowError); + __pyx_t_3 = __pyx_builtin_OverflowError; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_tuple_id_block_value_out_of_uint}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 27, __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(24, 27, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":26 + * + * # "long" and "long long" have the same size for x86_64, need an extra check + * if overflow or (sizeof(block) > 4 and block > UINT32_MAX): # <<<<<<<<<<<<<< + * raise OverflowError('tuple id block value out of uint32 range') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":29 + * raise OverflowError('tuple id block value out of uint32 range') + * + * try: # <<<<<<<<<<<<<< + * offset = cpython.PyLong_AsUnsignedLong(obj[1]) + * overflow = 0 +*/ + { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10); + __Pyx_XGOTREF(__pyx_t_12); + __Pyx_XGOTREF(__pyx_t_11); + __Pyx_XGOTREF(__pyx_t_10); + /*try:*/ { + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":30 + * + * try: + * offset = cpython.PyLong_AsUnsignedLong(obj[1]) # <<<<<<<<<<<<<< + * overflow = 0 + * except OverflowError: +*/ + __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 30, __pyx_L19_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_13 = PyLong_AsUnsignedLong(__pyx_t_5); if (unlikely(__pyx_t_13 == ((unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(24, 30, __pyx_L19_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_offset = __pyx_t_13; + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":31 + * try: + * offset = cpython.PyLong_AsUnsignedLong(obj[1]) + * overflow = 0 # <<<<<<<<<<<<<< + * except OverflowError: + * overflow = 1 +*/ + __pyx_v_overflow = 0; + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":29 + * raise OverflowError('tuple id block value out of uint32 range') + * + * try: # <<<<<<<<<<<<<< + * offset = cpython.PyLong_AsUnsignedLong(obj[1]) + * overflow = 0 +*/ + } + __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_L24_try_end; + __pyx_L19_error:; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":32 + * offset = cpython.PyLong_AsUnsignedLong(obj[1]) + * overflow = 0 + * except OverflowError: # <<<<<<<<<<<<<< + * overflow = 1 + * +*/ + __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_OverflowError); + if (__pyx_t_14) { + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.tid_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_3, &__pyx_t_6) < 0) __PYX_ERR(24, 32, __pyx_L21_except_error) + __Pyx_XGOTREF(__pyx_t_5); + __Pyx_XGOTREF(__pyx_t_3); + __Pyx_XGOTREF(__pyx_t_6); + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":33 + * overflow = 0 + * except OverflowError: + * overflow = 1 # <<<<<<<<<<<<<< + * + * if overflow or offset > 65535: +*/ + __pyx_v_overflow = 1; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + goto __pyx_L20_exception_handled; + } + goto __pyx_L21_except_error; + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":29 + * raise OverflowError('tuple id block value out of uint32 range') + * + * try: # <<<<<<<<<<<<<< + * offset = cpython.PyLong_AsUnsignedLong(obj[1]) + * overflow = 0 +*/ + __pyx_L21_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_L20_exception_handled:; + __Pyx_XGIVEREF(__pyx_t_12); + __Pyx_XGIVEREF(__pyx_t_11); + __Pyx_XGIVEREF(__pyx_t_10); + __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_11, __pyx_t_10); + __pyx_L24_try_end:; + } + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":35 + * overflow = 1 + * + * if overflow or offset > 65535: # <<<<<<<<<<<<<< + * raise OverflowError('tuple id offset value out of uint16 range') + * +*/ + __pyx_t_1 = (__pyx_v_overflow != 0); + if (!__pyx_t_1) { + } else { + __pyx_t_2 = __pyx_t_1; + goto __pyx_L28_bool_binop_done; + } + __pyx_t_1 = (__pyx_v_offset > 0xFFFF); + __pyx_t_2 = __pyx_t_1; + __pyx_L28_bool_binop_done:; + if (unlikely(__pyx_t_2)) { + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":36 + * + * if overflow or offset > 65535: + * raise OverflowError('tuple id offset value out of uint16 range') # <<<<<<<<<<<<<< + * + * buf.write_int32(6) +*/ + __pyx_t_3 = NULL; + __Pyx_INCREF(__pyx_builtin_OverflowError); + __pyx_t_5 = __pyx_builtin_OverflowError; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_tuple_id_offset_value_out_of_uin}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __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_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 36, __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(24, 36, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":35 + * overflow = 1 + * + * if overflow or offset > 65535: # <<<<<<<<<<<<<< + * raise OverflowError('tuple id offset value out of uint16 range') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":38 + * raise OverflowError('tuple id offset value out of uint16 range') + * + * buf.write_int32(6) # <<<<<<<<<<<<<< + * buf.write_int32(block) + * buf.write_int16(offset) +*/ + __pyx_t_6 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, 6); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":39 + * + * buf.write_int32(6) + * buf.write_int32(block) # <<<<<<<<<<<<<< + * buf.write_int16(offset) + * +*/ + __pyx_t_6 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, ((int32_t)__pyx_v_block)); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 39, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":40 + * buf.write_int32(6) + * buf.write_int32(block) + * buf.write_int16(offset) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_6 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int16(__pyx_v_buf, ((int16_t)__pyx_v_offset)); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 40, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":8 + * + * + * cdef tid_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef int overflow = 0 + * cdef unsigned long block, offset +*/ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.tid_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/tid.pyx":43 + * + * + * cdef tid_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * uint32_t block +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_tid_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + uint32_t __pyx_v_block; + uint16_t __pyx_v_offset; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("tid_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":48 + * uint16_t offset + * + * block = hton.unpack_int32(frb_read(buf, 4)) # <<<<<<<<<<<<<< + * offset = hton.unpack_int16(frb_read(buf, 2)) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(24, 48, __pyx_L1_error) + __pyx_v_block = ((uint32_t)unpack_int32(__pyx_t_1)); + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":49 + * + * block = hton.unpack_int32(frb_read(buf, 4)) + * offset = hton.unpack_int16(frb_read(buf, 2)) # <<<<<<<<<<<<<< + * + * return (block, offset) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 2); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(24, 49, __pyx_L1_error) + __pyx_v_offset = ((uint16_t)unpack_int16(__pyx_t_1)); + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":51 + * offset = hton.unpack_int16(frb_read(buf, 2)) + * + * return (block, offset) # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyLong_From_uint32_t(__pyx_v_block); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 51, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_PyLong_From_uint16_t(__pyx_v_offset); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 51, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 51, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2) != (0)) __PYX_ERR(24, 51, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3) != (0)) __PYX_ERR(24, 51, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_t_3 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/tid.pyx":43 + * + * + * cdef tid_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * uint32_t block +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.tid_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":8 + * + * + * cdef gaussdb_snapshot_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * ssize_t nxip +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_snapshot_encode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_buf, PyObject *__pyx_v_obj) { + Py_ssize_t __pyx_v_nxip; + uint64_t __pyx_v_xmin; + uint64_t __pyx_v_xmax; + int __pyx_v_i; + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *__pyx_v_xip_buf = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + Py_ssize_t __pyx_t_9; + uint64_t __pyx_t_10; + Py_ssize_t __pyx_t_11; + Py_ssize_t __pyx_t_12; + int __pyx_t_13; + unsigned PY_LONG_LONG __pyx_t_14; + int32_t __pyx_t_15; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("gaussdb_snapshot_encode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":14 + * uint64_t xmax + * int i + * WriteBuffer xip_buf = WriteBuffer.new() # <<<<<<<<<<<<<< + * + * if not (cpython.PyTuple_Check(obj) or cpython.PyList_Check(obj)): +*/ + __pyx_t_1 = ((PyObject *)__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_new()); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_v_xip_buf = ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *)__pyx_t_1); + __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":16 + * WriteBuffer xip_buf = WriteBuffer.new() + * + * if not (cpython.PyTuple_Check(obj) or cpython.PyList_Check(obj)): # <<<<<<<<<<<<<< + * raise TypeError( + * 'list or tuple expected (got type {})'.format(type(obj))) +*/ + __pyx_t_3 = PyTuple_Check(__pyx_v_obj); + if (!__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_3 = PyList_Check(__pyx_v_obj); + __pyx_t_2 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + __pyx_t_3 = (!__pyx_t_2); + if (unlikely(__pyx_t_3)) { + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":17 + * + * if not (cpython.PyTuple_Check(obj) or cpython.PyList_Check(obj)): + * raise TypeError( # <<<<<<<<<<<<<< + * 'list or tuple expected (got type {})'.format(type(obj))) + * +*/ + __pyx_t_4 = NULL; + __Pyx_INCREF(__pyx_builtin_TypeError); + __pyx_t_5 = __pyx_builtin_TypeError; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":18 + * if not (cpython.PyTuple_Check(obj) or cpython.PyList_Check(obj)): + * raise TypeError( + * 'list or tuple expected (got type {})'.format(type(obj))) # <<<<<<<<<<<<<< + * + * if len(obj) != 3: +*/ + __pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_list_or_tuple_expected_got_type; + __Pyx_INCREF(__pyx_t_7); + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_7, ((PyObject *)Py_TYPE(__pyx_v_obj))}; + __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __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(25, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + } + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 17, __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(25, 17, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":16 + * WriteBuffer xip_buf = WriteBuffer.new() + * + * if not (cpython.PyTuple_Check(obj) or cpython.PyList_Check(obj)): # <<<<<<<<<<<<<< + * raise TypeError( + * 'list or tuple expected (got type {})'.format(type(obj))) +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":20 + * 'list or tuple expected (got type {})'.format(type(obj))) + * + * if len(obj) != 3: # <<<<<<<<<<<<<< + * raise ValueError( + * 'invalid number of elements in txid_snapshot tuple, expecting 4') +*/ + __pyx_t_9 = PyObject_Length(__pyx_v_obj); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(25, 20, __pyx_L1_error) + __pyx_t_3 = (__pyx_t_9 != 3); + if (unlikely(__pyx_t_3)) { + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":21 + * + * if len(obj) != 3: + * raise ValueError( # <<<<<<<<<<<<<< + * 'invalid number of elements in txid_snapshot tuple, expecting 4') + * +*/ + __pyx_t_5 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_6 = __pyx_builtin_ValueError; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_invalid_number_of_elements_in_tx}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __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_1)) __PYX_ERR(25, 21, __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(25, 21, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":20 + * 'list or tuple expected (got type {})'.format(type(obj))) + * + * if len(obj) != 3: # <<<<<<<<<<<<<< + * raise ValueError( + * 'invalid number of elements in txid_snapshot tuple, expecting 4') +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":24 + * 'invalid number of elements in txid_snapshot tuple, expecting 4') + * + * nxip = len(obj[2]) # <<<<<<<<<<<<<< + * if nxip > _MAXINT32: + * raise ValueError('txid_snapshot value is too long') +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 24, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_9 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(25, 24, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_nxip = __pyx_t_9; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":25 + * + * nxip = len(obj[2]) + * if nxip > _MAXINT32: # <<<<<<<<<<<<<< + * raise ValueError('txid_snapshot value is too long') + * +*/ + __pyx_t_3 = (__pyx_v_nxip > 0x7FFFFFFF); + if (unlikely(__pyx_t_3)) { + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":26 + * nxip = len(obj[2]) + * if nxip > _MAXINT32: + * raise ValueError('txid_snapshot value is too long') # <<<<<<<<<<<<<< + * + * xmin = obj[0] +*/ + __pyx_t_6 = NULL; + __Pyx_INCREF(__pyx_builtin_ValueError); + __pyx_t_5 = __pyx_builtin_ValueError; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_txid_snapshot_value_is_too_long}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 26, __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(25, 26, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":25 + * + * nxip = len(obj[2]) + * if nxip > _MAXINT32: # <<<<<<<<<<<<<< + * raise ValueError('txid_snapshot value is too long') + * +*/ + } + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":28 + * raise ValueError('txid_snapshot value is too long') + * + * xmin = obj[0] # <<<<<<<<<<<<<< + * xmax = obj[1] + * +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 28, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_10 = __Pyx_PyLong_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_10 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(25, 28, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_xmin = __pyx_t_10; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":29 + * + * xmin = obj[0] + * xmax = obj[1] # <<<<<<<<<<<<<< + * + * for i in range(nxip): +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 29, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_10 = __Pyx_PyLong_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_10 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(25, 29, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_v_xmax = __pyx_t_10; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":31 + * xmax = obj[1] + * + * for i in range(nxip): # <<<<<<<<<<<<<< + * xip_buf.write_int64( + * cpython.PyLong_AsUnsignedLongLong(obj[2][i])) +*/ + __pyx_t_11 = __pyx_v_nxip; + __pyx_t_12 = __pyx_t_11; + for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) { + __pyx_v_i = __pyx_t_13; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":33 + * for i in range(nxip): + * xip_buf.write_int64( + * cpython.PyLong_AsUnsignedLongLong(obj[2][i])) # <<<<<<<<<<<<<< + * + * buf.write_int32(20 + xip_buf.len()) +*/ + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_obj, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_i, int, 1, __Pyx_PyLong_From_int, 0, 1, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 33, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_14 = PyLong_AsUnsignedLongLong(__pyx_t_5); if (unlikely(__pyx_t_14 == ((unsigned PY_LONG_LONG)-1) && PyErr_Occurred())) __PYX_ERR(25, 33, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":32 + * + * for i in range(nxip): + * xip_buf.write_int64( # <<<<<<<<<<<<<< + * cpython.PyLong_AsUnsignedLongLong(obj[2][i])) + * +*/ + __pyx_t_5 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(__pyx_v_xip_buf, ((int64_t)__pyx_t_14)); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 32, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + } + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":35 + * cpython.PyLong_AsUnsignedLongLong(obj[2][i])) + * + * buf.write_int32(20 + xip_buf.len()) # <<<<<<<<<<<<<< + * + * buf.write_int32(nxip) +*/ + __pyx_t_5 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_len(__pyx_v_xip_buf); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_1 = __Pyx_PyLong_AddCObj(__pyx_mstate_global->__pyx_int_20, __pyx_t_5, 20, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_15 = __Pyx_PyLong_As_int32_t(__pyx_t_1); if (unlikely((__pyx_t_15 == ((int32_t)-1)) && PyErr_Occurred())) __PYX_ERR(25, 35, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, __pyx_t_15); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":37 + * buf.write_int32(20 + xip_buf.len()) + * + * buf.write_int32(nxip) # <<<<<<<<<<<<<< + * buf.write_int64(xmin) + * buf.write_int64(xmax) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32(__pyx_v_buf, ((int32_t)__pyx_v_nxip)); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 37, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":38 + * + * buf.write_int32(nxip) + * buf.write_int64(xmin) # <<<<<<<<<<<<<< + * buf.write_int64(xmax) + * buf.write_buffer(xip_buf) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(__pyx_v_buf, ((int64_t)__pyx_v_xmin)); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 38, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":39 + * buf.write_int32(nxip) + * buf.write_int64(xmin) + * buf.write_int64(xmax) # <<<<<<<<<<<<<< + * buf.write_buffer(xip_buf) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64(__pyx_v_buf, ((int64_t)__pyx_v_xmax)); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 39, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":40 + * buf.write_int64(xmin) + * buf.write_int64(xmax) + * buf.write_buffer(xip_buf) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_buffer(__pyx_v_buf, __pyx_v_xip_buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 40, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":8 + * + * + * cdef gaussdb_snapshot_encode(CodecContext settings, WriteBuffer buf, obj): # <<<<<<<<<<<<<< + * cdef: + * ssize_t nxip +*/ + + /* 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_4); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.gaussdb_snapshot_encode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF((PyObject *)__pyx_v_xip_buf); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":43 + * + * + * cdef gaussdb_snapshot_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int32_t nxip +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_snapshot_decode(CYTHON_UNUSED struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v_settings, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *__pyx_v_buf) { + int32_t __pyx_v_nxip; + uint64_t __pyx_v_xmin; + uint64_t __pyx_v_xmax; + PyObject *__pyx_v_xip_tup = 0; + int32_t __pyx_v_i; + PyObject *__pyx_v_xip = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + char const *__pyx_t_1; + PyObject *__pyx_t_2 = NULL; + int32_t __pyx_t_3; + int32_t __pyx_t_4; + int32_t __pyx_t_5; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("gaussdb_snapshot_decode", 0); + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":52 + * object xip + * + * nxip = hton.unpack_int32(frb_read(buf, 4)) # <<<<<<<<<<<<<< + * xmin = hton.unpack_int64(frb_read(buf, 8)) + * xmax = hton.unpack_int64(frb_read(buf, 8)) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 4); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(25, 52, __pyx_L1_error) + __pyx_v_nxip = unpack_int32(__pyx_t_1); + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":53 + * + * nxip = hton.unpack_int32(frb_read(buf, 4)) + * xmin = hton.unpack_int64(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * xmax = hton.unpack_int64(frb_read(buf, 8)) + * +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(25, 53, __pyx_L1_error) + __pyx_v_xmin = ((uint64_t)unpack_int64(__pyx_t_1)); + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":54 + * nxip = hton.unpack_int32(frb_read(buf, 4)) + * xmin = hton.unpack_int64(frb_read(buf, 8)) + * xmax = hton.unpack_int64(frb_read(buf, 8)) # <<<<<<<<<<<<<< + * + * xip_tup = cpython.PyTuple_New(nxip) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(25, 54, __pyx_L1_error) + __pyx_v_xmax = ((uint64_t)unpack_int64(__pyx_t_1)); + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":56 + * xmax = hton.unpack_int64(frb_read(buf, 8)) + * + * xip_tup = cpython.PyTuple_New(nxip) # <<<<<<<<<<<<<< + * for i in range(nxip): + * xip = cpython.PyLong_FromUnsignedLongLong( +*/ + __pyx_t_2 = PyTuple_New(__pyx_v_nxip); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_v_xip_tup = ((PyObject*)__pyx_t_2); + __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":57 + * + * xip_tup = cpython.PyTuple_New(nxip) + * for i in range(nxip): # <<<<<<<<<<<<<< + * xip = cpython.PyLong_FromUnsignedLongLong( + * hton.unpack_int64(frb_read(buf, 8))) +*/ + __pyx_t_3 = __pyx_v_nxip; + __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; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":59 + * for i in range(nxip): + * xip = cpython.PyLong_FromUnsignedLongLong( + * hton.unpack_int64(frb_read(buf, 8))) # <<<<<<<<<<<<<< + * cpython.Py_INCREF(xip) + * cpython.PyTuple_SET_ITEM(xip_tup, i, xip) +*/ + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_read(__pyx_v_buf, 8); if (unlikely(__pyx_t_1 == ((char const *)0))) __PYX_ERR(25, 59, __pyx_L1_error) + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":58 + * xip_tup = cpython.PyTuple_New(nxip) + * for i in range(nxip): + * xip = cpython.PyLong_FromUnsignedLongLong( # <<<<<<<<<<<<<< + * hton.unpack_int64(frb_read(buf, 8))) + * cpython.Py_INCREF(xip) +*/ + __pyx_t_2 = PyLong_FromUnsignedLongLong(((uint64_t)unpack_int64(__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 58, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_XDECREF_SET(__pyx_v_xip, __pyx_t_2); + __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":60 + * xip = cpython.PyLong_FromUnsignedLongLong( + * hton.unpack_int64(frb_read(buf, 8))) + * cpython.Py_INCREF(xip) # <<<<<<<<<<<<<< + * cpython.PyTuple_SET_ITEM(xip_tup, i, xip) + * +*/ + Py_INCREF(__pyx_v_xip); + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":61 + * hton.unpack_int64(frb_read(buf, 8))) + * cpython.Py_INCREF(xip) + * cpython.PyTuple_SET_ITEM(xip_tup, i, xip) # <<<<<<<<<<<<<< + * + * return (xmin, xmax, xip_tup) +*/ + PyTuple_SET_ITEM(__pyx_v_xip_tup, __pyx_v_i, __pyx_v_xip); + } + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":63 + * cpython.PyTuple_SET_ITEM(xip_tup, i, xip) + * + * return (xmin, xmax, xip_tup) # <<<<<<<<<<<<<< +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_2 = __Pyx_PyLong_From_uint64_t(__pyx_v_xmin); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = __Pyx_PyLong_From_uint64_t(__pyx_v_xmax); if (unlikely(!__pyx_t_6)) __PYX_ERR(25, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(25, 63, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __Pyx_GIVEREF(__pyx_t_2); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2) != (0)) __PYX_ERR(25, 63, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6) != (0)) __PYX_ERR(25, 63, __pyx_L1_error); + __Pyx_INCREF(__pyx_v_xip_tup); + __Pyx_GIVEREF(__pyx_v_xip_tup); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_v_xip_tup) != (0)) __PYX_ERR(25, 63, __pyx_L1_error); + __pyx_t_2 = 0; + __pyx_t_6 = 0; + __pyx_r = __pyx_t_7; + __pyx_t_7 = 0; + goto __pyx_L0; + + /* "async_gaussdb/gaussdbproto/codecs/gaussdb_snapshot.pyx":43 + * + * + * cdef gaussdb_snapshot_decode(CodecContext settings, FRBuffer *buf): # <<<<<<<<<<<<<< + * cdef: + * int32_t nxip +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.gaussdb_snapshot_decode", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v_xip_tup); + __Pyx_XDECREF(__pyx_v_xip); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __pyx_unpickle___UUIDReplaceMe(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_1__pyx_unpickle___UUIDReplaceMe(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_1__pyx_unpickle___UUIDReplaceMe = {"__pyx_unpickle___UUIDReplaceMe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_1__pyx_unpickle___UUIDReplaceMe, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_1__pyx_unpickle___UUIDReplaceMe(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___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle___UUIDReplaceMe (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_pyx_type,&__pyx_mstate_global->__pyx_n_u_pyx_checksum,&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 1, __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(3, 1, __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(3, 1, __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(3, 1, __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, "__pyx_unpickle___UUIDReplaceMe", 0) < 0) __PYX_ERR(3, 1, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle___UUIDReplaceMe", 1, 3, 3, i); __PYX_ERR(3, 1, __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(3, 1, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 1, __pyx_L3_error) + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(3, 1, __pyx_L3_error) + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyLong_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(3, 1, __pyx_L3_error) + __pyx_v___pyx_state = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle___UUIDReplaceMe", 1, 3, 3, __pyx_nargs); __PYX_ERR(3, 1, __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("async_gaussdb.gaussdbproto.gaussdbproto.__pyx_unpickle___UUIDReplaceMe", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto___pyx_unpickle___UUIDReplaceMe(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* 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_13async_gaussdb_12gaussdbproto_12gaussdbproto___pyx_unpickle___UUIDReplaceMe(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_PickleError = 0; + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle___UUIDReplaceMe", 0); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum +*/ + __pyx_t_1 = __Pyx_PyLong_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[1], Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "(tree fragment)":5 + * cdef object __pyx_result + * if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd): + * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum + * __pyx_result = __UUIDReplaceMe.__new__(__pyx_type) +*/ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_PickleError); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_PickleError); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_mstate_global->__pyx_n_u_PickleError) != (0)) __PYX_ERR(3, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_1); + __pyx_v___pyx_PickleError = __pyx_t_1; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd): + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum # <<<<<<<<<<<<<< + * __pyx_result = __UUIDReplaceMe.__new__(__pyx_type) + * if __pyx_state is not None: +*/ + __pyx_t_3 = __Pyx_PyLong_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_Incompatible_checksums_0x_x_vs_0, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(3, 6, __pyx_L1_error) + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum +*/ + } + + /* "(tree fragment)":7 + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum + * __pyx_result = __UUIDReplaceMe.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle___UUIDReplaceMe__set_state(<__UUIDReplaceMe> __pyx_result, __pyx_state) +*/ + __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe); + __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v___pyx_type}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_new, __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_1)) __PYX_ERR(3, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v___pyx_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum + * __pyx_result = __UUIDReplaceMe.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle___UUIDReplaceMe__set_state(<__UUIDReplaceMe> __pyx_result, __pyx_state) + * return __pyx_result +*/ + __pyx_t_2 = (__pyx_v___pyx_state != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":9 + * __pyx_result = __UUIDReplaceMe.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle___UUIDReplaceMe__set_state(<__UUIDReplaceMe> __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle___UUIDReplaceMe__set_state(__UUIDReplaceMe __pyx_result, tuple __pyx_state): +*/ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(3, 9, __pyx_L1_error) + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto___pyx_unpickle___UUIDReplaceMe__set_state(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum + * __pyx_result = __UUIDReplaceMe.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle___UUIDReplaceMe__set_state(<__UUIDReplaceMe> __pyx_result, __pyx_state) + * return __pyx_result +*/ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle___UUIDReplaceMe__set_state(<__UUIDReplaceMe> __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle___UUIDReplaceMe__set_state(__UUIDReplaceMe __pyx_result, tuple __pyx_state): + * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":1 + * def __pyx_unpickle___UUIDReplaceMe(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.__pyx_unpickle___UUIDReplaceMe", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_PickleError); + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle___UUIDReplaceMe__set_state(<__UUIDReplaceMe> __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle___UUIDReplaceMe__set_state(__UUIDReplaceMe __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[0]) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto___pyx_unpickle___UUIDReplaceMe__set_state(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + Py_ssize_t __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle___UUIDReplaceMe__set_state", 0); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle___UUIDReplaceMe__set_state(__UUIDReplaceMe __pyx_result, tuple __pyx_state): + * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[0]) +*/ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 12, __pyx_L1_error) + } + __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(3, 12, __pyx_L1_error) + __pyx_t_3 = (__pyx_t_2 > 0); + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(3, 12, __pyx_L1_error) + __pyx_t_1 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "(tree fragment)":13 + * cdef __pyx_unpickle___UUIDReplaceMe__set_state(__UUIDReplaceMe __pyx_result, tuple __pyx_state): + * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[0]) # <<<<<<<<<<<<<< +*/ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __pyx_t_6; + __Pyx_INCREF(__pyx_t_5); + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(3, 13, __pyx_L1_error) + } + __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_7}; + __pyx_t_4 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_update, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__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; + if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle___UUIDReplaceMe__set_state(__UUIDReplaceMe __pyx_result, tuple __pyx_state): + * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[0]) +*/ + } + + /* "(tree fragment)":11 + * __pyx_unpickle___UUIDReplaceMe__set_state(<__UUIDReplaceMe> __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle___UUIDReplaceMe__set_state(__UUIDReplaceMe __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[0]) +*/ + + /* 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_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.__pyx_unpickle___UUIDReplaceMe__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":1 + * def __pyx_unpickle_CodecContext(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result +*/ + +/* Python wrapper */ +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_3__pyx_unpickle_CodecContext(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_13async_gaussdb_12gaussdbproto_12gaussdbproto_3__pyx_unpickle_CodecContext = {"__pyx_unpickle_CodecContext", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_3__pyx_unpickle_CodecContext, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_3__pyx_unpickle_CodecContext(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___pyx_type = 0; + long __pyx_v___pyx_checksum; + PyObject *__pyx_v___pyx_state = 0; + #if !CYTHON_METH_FASTCALL + CYTHON_UNUSED Py_ssize_t __pyx_nargs; + #endif + CYTHON_UNUSED PyObject *const *__pyx_kwvalues; + PyObject* values[3] = {0,0,0}; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("__pyx_unpickle_CodecContext (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_pyx_type,&__pyx_mstate_global->__pyx_n_u_pyx_checksum,&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; + const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(3, 1, __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(3, 1, __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(3, 1, __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(3, 1, __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, "__pyx_unpickle_CodecContext", 0) < 0) __PYX_ERR(3, 1, __pyx_L3_error) + for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_CodecContext", 1, 3, 3, i); __PYX_ERR(3, 1, __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(3, 1, __pyx_L3_error) + values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(3, 1, __pyx_L3_error) + values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(3, 1, __pyx_L3_error) + } + __pyx_v___pyx_type = values[0]; + __pyx_v___pyx_checksum = __Pyx_PyLong_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(3, 1, __pyx_L3_error) + __pyx_v___pyx_state = values[2]; + } + goto __pyx_L6_skip; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_CodecContext", 1, 3, 3, __pyx_nargs); __PYX_ERR(3, 1, __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("async_gaussdb.gaussdbproto.gaussdbproto.__pyx_unpickle_CodecContext", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + __pyx_r = __pyx_pf_13async_gaussdb_12gaussdbproto_12gaussdbproto_2__pyx_unpickle_CodecContext(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); + + /* 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_13async_gaussdb_12gaussdbproto_12gaussdbproto_2__pyx_unpickle_CodecContext(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_PickleError = 0; + PyObject *__pyx_v___pyx_result = 0; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + size_t __pyx_t_4; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_CodecContext", 0); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum +*/ + __pyx_t_1 = __Pyx_PyLong_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[1], Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "(tree fragment)":5 + * cdef object __pyx_result + * if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd): + * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum + * __pyx_result = CodecContext.__new__(__pyx_type) +*/ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_PickleError); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_PickleError); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_mstate_global->__pyx_n_u_PickleError) != (0)) __PYX_ERR(3, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_1); + __pyx_v___pyx_PickleError = __pyx_t_1; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd): + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum # <<<<<<<<<<<<<< + * __pyx_result = CodecContext.__new__(__pyx_type) + * if __pyx_state is not None: +*/ + __pyx_t_3 = __Pyx_PyLong_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_Incompatible_checksums_0x_x_vs_0, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(3, 6, __pyx_L1_error) + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum +*/ + } + + /* "(tree fragment)":7 + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum + * __pyx_result = CodecContext.__new__(__pyx_type) # <<<<<<<<<<<<<< + * if __pyx_state is not None: + * __pyx_unpickle_CodecContext__set_state( __pyx_result, __pyx_state) +*/ + __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext); + __Pyx_INCREF(__pyx_t_3); + __pyx_t_4 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v___pyx_type}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_new, __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_1)) __PYX_ERR(3, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __pyx_v___pyx_result = __pyx_t_1; + __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum + * __pyx_result = CodecContext.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_CodecContext__set_state( __pyx_result, __pyx_state) + * return __pyx_result +*/ + __pyx_t_2 = (__pyx_v___pyx_state != Py_None); + if (__pyx_t_2) { + + /* "(tree fragment)":9 + * __pyx_result = CodecContext.__new__(__pyx_type) + * if __pyx_state is not None: + * __pyx_unpickle_CodecContext__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< + * return __pyx_result + * cdef __pyx_unpickle_CodecContext__set_state(CodecContext __pyx_result, tuple __pyx_state): +*/ + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(3, 9, __pyx_L1_error) + __pyx_t_1 = __pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto___pyx_unpickle_CodecContext__set_state(((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":8 + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum + * __pyx_result = CodecContext.__new__(__pyx_type) + * if __pyx_state is not None: # <<<<<<<<<<<<<< + * __pyx_unpickle_CodecContext__set_state( __pyx_result, __pyx_state) + * return __pyx_result +*/ + } + + /* "(tree fragment)":10 + * if __pyx_state is not None: + * __pyx_unpickle_CodecContext__set_state( __pyx_result, __pyx_state) + * return __pyx_result # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_CodecContext__set_state(CodecContext __pyx_result, tuple __pyx_state): + * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): +*/ + __Pyx_XDECREF(__pyx_r); + __Pyx_INCREF(__pyx_v___pyx_result); + __pyx_r = __pyx_v___pyx_result; + goto __pyx_L0; + + /* "(tree fragment)":1 + * def __pyx_unpickle_CodecContext(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result +*/ + + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.__pyx_unpickle_CodecContext", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_PickleError); + __Pyx_XDECREF(__pyx_v___pyx_result); + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "(tree fragment)":11 + * __pyx_unpickle_CodecContext__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_CodecContext__set_state(CodecContext __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[0]) +*/ + +static PyObject *__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto___pyx_unpickle_CodecContext__set_state(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + int __pyx_t_1; + Py_ssize_t __pyx_t_2; + int __pyx_t_3; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__pyx_unpickle_CodecContext__set_state", 0); + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle_CodecContext__set_state(CodecContext __pyx_result, tuple __pyx_state): + * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[0]) +*/ + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(3, 12, __pyx_L1_error) + } + __pyx_t_2 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(3, 12, __pyx_L1_error) + __pyx_t_3 = (__pyx_t_2 > 0); + if (__pyx_t_3) { + } else { + __pyx_t_1 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(3, 12, __pyx_L1_error) + __pyx_t_1 = __pyx_t_3; + __pyx_L4_bool_binop_done:; + if (__pyx_t_1) { + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_CodecContext__set_state(CodecContext __pyx_result, tuple __pyx_state): + * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[0]) # <<<<<<<<<<<<<< +*/ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __pyx_t_6; + __Pyx_INCREF(__pyx_t_5); + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(3, 13, __pyx_L1_error) + } + __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_7}; + __pyx_t_4 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_update, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__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; + if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "(tree fragment)":12 + * return __pyx_result + * cdef __pyx_unpickle_CodecContext__set_state(CodecContext __pyx_result, tuple __pyx_state): + * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[0]) +*/ + } + + /* "(tree fragment)":11 + * __pyx_unpickle_CodecContext__set_state( __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle_CodecContext__set_state(CodecContext __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[0]) +*/ + + /* 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_6); + __Pyx_XDECREF(__pyx_t_7); + __Pyx_AddTraceback("async_gaussdb.gaussdbproto.gaussdbproto.__pyx_unpickle_CodecContext__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = 0; + __pyx_L0:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} +/* #### Code section: module_exttypes ### */ +static struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer; + +static PyObject *__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *p; + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer)))) { + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer[--__pyx_mstate_global->__pyx_freecount_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer]; + memset(o, 0, sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer)); + (void) PyObject_INIT(o, t); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + p = ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *)o); + p->__pyx_vtab = __pyx_vtabptr_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer; + if (unlikely(__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_1__cinit__(o, __pyx_mstate_global->__pyx_empty_tuple, NULL) < 0)) goto bad; + return o; + bad: + Py_DECREF(o); o = 0; + return NULL; +} + +static void __pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer(PyObject *o) { + { + PyObject *etype, *eval, *etb; + PyErr_Fetch(&etype, &eval, &etb); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1); + __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_3__dealloc__(o); + __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1); + PyErr_Restore(etype, eval, etb); + } + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_mstate_global->__pyx_freecount_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer < 256) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer)))) { + __pyx_mstate_global->__pyx_freelist_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer[__pyx_mstate_global->__pyx_freecount_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer++] = ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static PyMethodDef __pyx_methods_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer[] = { + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +#if !CYTHON_COMPILING_IN_LIMITED_API + +static PyBufferProcs __pyx_tp_as_buffer_WriteBuffer = { + __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_5__getbuffer__, /*bf_getbuffer*/ + __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_7__releasebuffer__, /*bf_releasebuffer*/ +}; +#endif +static PyType_Slot __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer}, + #if defined(Py_bf_getbuffer) + {Py_bf_getbuffer, (void *)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_5__getbuffer__}, + #endif + #if defined(Py_bf_releasebuffer) + {Py_bf_releasebuffer, (void *)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_7__releasebuffer__}, + #endif + {Py_tp_methods, (void *)__pyx_methods_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer}, + {Py_tp_new, (void *)__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer}, + {0, 0}, +}; +static PyType_Spec __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer_spec = { + "async_gaussdb.gaussdbproto.gaussdbproto.WriteBuffer", + sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, + __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer_slots, +}; +#else + +static PyBufferProcs __pyx_tp_as_buffer_WriteBuffer = { + __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_5__getbuffer__, /*bf_getbuffer*/ + __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_7__releasebuffer__, /*bf_releasebuffer*/ +}; + +static PyTypeObject __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer = { + PyVarObject_HEAD_INIT(0, 0) + "async_gaussdb.gaussdbproto.gaussdbproto.""WriteBuffer", /*tp_name*/ + sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + &__pyx_tp_as_buffer_WriteBuffer, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif +static struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer; + +static PyObject *__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *p; + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + #if CYTHON_USE_FREELISTS + if (likely((int)(__pyx_mstate_global->__pyx_freecount_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer)))) { + o = (PyObject*)__pyx_mstate_global->__pyx_freelist_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer[--__pyx_mstate_global->__pyx_freecount_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer]; + memset(o, 0, sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer)); + (void) PyObject_INIT(o, t); + PyObject_GC_Track(o); + } else + #endif + { + o = (*t->tp_alloc)(t, 0); + if (unlikely(!o)) return 0; + } + #endif + p = ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *)o); + p->__pyx_vtab = __pyx_vtabptr_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer; + p->_bufs = Py_None; Py_INCREF(Py_None); + p->_bufs_append = Py_None; Py_INCREF(Py_None); + p->_bufs_popleft = Py_None; Py_INCREF(Py_None); + p->_buf0 = ((PyObject*)Py_None); Py_INCREF(Py_None); + p->_buf0_prev = ((PyObject*)Py_None); Py_INCREF(Py_None); + if (unlikely(__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_1__cinit__(o, __pyx_mstate_global->__pyx_empty_tuple, NULL) < 0)) goto bad; + return o; + bad: + Py_DECREF(o); o = 0; + return NULL; +} + +static void __pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer(PyObject *o) { + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *p = (struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *)o; + PyObject_GC_UnTrack(o); + Py_CLEAR(p->_bufs); + Py_CLEAR(p->_bufs_append); + Py_CLEAR(p->_bufs_popleft); + Py_CLEAR(p->_buf0); + Py_CLEAR(p->_buf0_prev); + #if CYTHON_USE_FREELISTS + if (((int)(__pyx_mstate_global->__pyx_freecount_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer < 256) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer)))) { + __pyx_mstate_global->__pyx_freelist_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer[__pyx_mstate_global->__pyx_freecount_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer++] = ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *)o); + } else + #endif + { + #if CYTHON_USE_TYPE_SLOTS + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif + } +} + +static int __pyx_tp_traverse_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *p = (struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *)o; + { + e = __Pyx_call_type_traverse(o, 1, v, a); + if (e) return e; + } + if (p->_bufs) { + e = (*v)(p->_bufs, a); if (e) return e; + } + if (p->_bufs_append) { + e = (*v)(p->_bufs_append, a); if (e) return e; + } + if (p->_bufs_popleft) { + e = (*v)(p->_bufs_popleft, a); if (e) return e; + } + return 0; +} + +static PyMethodDef __pyx_methods_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer[] = { + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer}, + {Py_tp_methods, (void *)__pyx_methods_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer}, + {Py_tp_new, (void *)__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer}, + {0, 0}, +}; +static PyType_Spec __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer_spec = { + "async_gaussdb.gaussdbproto.gaussdbproto.ReadBuffer", + sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, + __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer_slots, +}; +#else + +static PyTypeObject __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer = { + PyVarObject_HEAD_INIT(0, 0) + "async_gaussdb.gaussdbproto.gaussdbproto.""ReadBuffer", /*tp_name*/ + sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif +static struct __pyx_vtabstruct_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext; + +static PyObject *__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *p; + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + #endif + p = ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *)o); + p->__pyx_vtab = __pyx_vtabptr_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext; + return o; +} + +static void __pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext(PyObject *o) { + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + #if CYTHON_USE_TYPE_SLOTS + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif +} + +static PyMethodDef __pyx_methods_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext[] = { + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext}, + {Py_tp_methods, (void *)__pyx_methods_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext}, + {Py_tp_new, (void *)__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext}, + {0, 0}, +}; +static PyType_Spec __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext_spec = { + "async_gaussdb.gaussdbproto.gaussdbproto.CodecContext", + sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, + __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext_slots, +}; +#else + +static PyTypeObject __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext = { + PyVarObject_HEAD_INIT(0, 0) + "async_gaussdb.gaussdbproto.gaussdbproto.""CodecContext", /*tp_name*/ + sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { + PyObject *o; + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0); + } + if (unlikely(!o)) return 0; + #endif + return o; +} + +static void __pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe(PyObject *o) { + #if CYTHON_USE_TP_FINALIZE + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { + if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe) { + if (PyObject_CallFinalizerFromDealloc(o)) return; + } + } + #endif + #if CYTHON_USE_TYPE_SLOTS + (*Py_TYPE(o)->tp_free)(o); + #else + { + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + if (tp_free) tp_free(o); + } + #endif +} + +static PyMethodDef __pyx_methods_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe[] = { + {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyType_Slot __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe}, + {Py_tp_methods, (void *)__pyx_methods_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe}, + {Py_tp_new, (void *)__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe}, + {0, 0}, +}; +static PyType_Spec __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe_spec = { + "async_gaussdb.gaussdbproto.gaussdbproto.__UUIDReplaceMe", + sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, + __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe_slots, +}; +#else + +static PyTypeObject __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe = { + PyVarObject_HEAD_INIT(0, 0) + "async_gaussdb.gaussdbproto.gaussdbproto.""__UUIDReplaceMe", /*tp_name*/ + sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyObject *__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *p; + PyObject *o = __pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe(t, a, k); + if (unlikely(!o)) return 0; + p = ((struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)o); + p->_int = Py_None; Py_INCREF(Py_None); + p->_hash = Py_None; Py_INCREF(Py_None); + if (unlikely(__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_1__cinit__(o, __pyx_mstate_global->__pyx_empty_tuple, NULL) < 0)) goto bad; + return o; + bad: + Py_DECREF(o); o = 0; + return NULL; +} + +static void __pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID(PyObject *o) { + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *p = (struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)o; + PyObject_GC_UnTrack(o); + if (p->__weakref__) PyObject_ClearWeakRefs(o); + Py_CLEAR(p->_int); + Py_CLEAR(p->_hash); + __pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe(o); +} + +static int __pyx_tp_traverse_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *p = (struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID *)o; + #if !CYTHON_USE_MODULE_STATE + e = 0; + if (likely(__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe)) { + traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe, tp_traverse, traverseproc); + if (traverse) { e = traverse(o, v, a); } + } else + #endif + { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID); } + if (e) return e; + { + e = __Pyx_call_type_traverse(o, 0, v, a); + if (e) return e; + } + if (p->_int) { + e = (*v)(p->_int, a); if (e) return e; + } + if (p->_hash) { + e = (*v)(p->_hash, a); if (e) return e; + } + return 0; +} + +static PyObject *__pyx_tp_richcompare_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID(PyObject *o1, PyObject *o2, int op) { + switch (op) { + case Py_EQ: { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_11__eq__(o1, o2); + } + case Py_NE: { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_13__ne__(o1, o2); + } + case Py_LT: { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_15__lt__(o1, o2); + } + case Py_GT: { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_17__gt__(o1, o2); + } + case Py_LE: { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_19__le__(o1, o2); + } + case Py_GE: { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_21__ge__(o1, o2); + } + default: { + return __Pyx_NewRef(Py_NotImplemented); + } + } +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_bytes(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_5bytes_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_int(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3int_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_is_safe(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7is_safe_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_hex(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3hex_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_bytes_le(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8bytes_le_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_fields(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_6fields_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_time_low(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8time_low_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_time_mid(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_8time_mid_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_time_hi_version(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_15time_hi_version_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_clock_seq_hi_variant(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_20clock_seq_hi_variant_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_clock_seq_low(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_13clock_seq_low_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_time(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_4time_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_clock_seq(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_9clock_seq_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_node(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_4node_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_urn(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3urn_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_variant(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7variant_1__get__(o); +} + +static PyObject *__pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_version(PyObject *o, CYTHON_UNUSED void *x) { + return __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7version_1__get__(o); +} + +static PyMethodDef __pyx_methods_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID[] = { + {"__reduce__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0}, + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID[] = { + {"bytes", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_bytes, 0, 0, 0}, + {"int", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_int, 0, 0, 0}, + {"is_safe", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_is_safe, 0, 0, 0}, + {"hex", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_hex, 0, 0, 0}, + {"bytes_le", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_bytes_le, 0, 0, 0}, + {"fields", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_fields, 0, 0, 0}, + {"time_low", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_time_low, 0, 0, 0}, + {"time_mid", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_time_mid, 0, 0, 0}, + {"time_hi_version", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_time_hi_version, 0, 0, 0}, + {"clock_seq_hi_variant", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_clock_seq_hi_variant, 0, 0, 0}, + {"clock_seq_low", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_clock_seq_low, 0, 0, 0}, + {"time", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_time, 0, 0, 0}, + {"clock_seq", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_clock_seq, 0, 0, 0}, + {"node", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_node, 0, 0, 0}, + {"urn", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_urn, 0, 0, 0}, + {"variant", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_variant, 0, 0, 0}, + {"version", __pyx_getprop_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_version, 0, 0, 0}, + {0, 0, 0, 0, 0} +}; +#if CYTHON_USE_TYPE_SPECS +static PyMemberDef __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID_members[] = { + #if !CYTHON_USE_TYPE_SLOTS + {"__weaklistoffset__", T_PYSSIZET, offsetof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID, __weakref__), READONLY, 0}, + #endif + {0, 0, 0, 0, 0} +}; +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000 +#if defined(__GNUC__) || defined(__clang__) +#warning "async_gaussdb/gaussdbproto/./uuid.pyx:144:15: : __weakref__ is unsupported in the Limited API when running on Python <3.9." +#elif defined(_MSC_VER) +#pragma message("async_gaussdb/gaussdbproto/./uuid.pyx:144:15: : __weakref__ is unsupported in the Limited API when running on Python <3.9.") +#endif +#endif +static PyType_Slot __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID_slots[] = { + {Py_tp_dealloc, (void *)__pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID}, + {Py_tp_repr, (void *)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7__repr__}, + {Py_nb_int, (void *)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_25__int__}, + {Py_tp_hash, (void *)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_23__hash__}, + {Py_tp_str, (void *)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_5__str__}, + {Py_tp_traverse, (void *)__pyx_tp_traverse_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID}, + {Py_tp_richcompare, (void *)__pyx_tp_richcompare_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID}, + {Py_tp_methods, (void *)__pyx_methods_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID}, + {Py_tp_getset, (void *)__pyx_getsets_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID}, + {Py_tp_init, (void *)__pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3__init__}, + {Py_tp_new, (void *)__pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID}, + {Py_tp_members, (void*)__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID_members}, + {0, 0}, +}; +static PyType_Spec __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID_spec = { + "async_gaussdb.gaussdbproto.gaussdbproto.UUID", + sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID), + 0, + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, + __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID_slots, +}; +#else + +static PyNumberMethods __pyx_tp_as_number_UUID = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + 0, /*nb_bool*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_25__int__, /*nb_int*/ + 0, /*nb_long (reserved)*/ + 0, /*nb_float*/ + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + 0, /*nb_index*/ + 0, /*nb_matrix_multiply*/ + 0, /*nb_inplace_matrix_multiply*/ +}; + +static PyTypeObject __pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID = { + PyVarObject_HEAD_INIT(0, 0) + "async_gaussdb.gaussdbproto.gaussdbproto.""UUID", /*tp_name*/ + sizeof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 + 0, /*tp_vectorcall_offset*/ + #endif + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_async*/ + __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_7__repr__, /*tp_repr*/ + &__pyx_tp_as_number_UUID, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_23__hash__, /*tp_hash*/ + 0, /*tp_call*/ + __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_5__str__, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + 0, /*tp_doc*/ + __pyx_tp_traverse_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID, /*tp_traverse*/ + 0, /*tp_clear*/ + __pyx_tp_richcompare_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + #if !CYTHON_USE_TYPE_SPECS + 0, /*tp_dictoffset*/ + #endif + __pyx_pw_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_3__init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ + 0, /*tp_del*/ + 0, /*tp_version_tag*/ + #if CYTHON_USE_TP_FINALIZE + 0, /*tp_finalize*/ + #else + NULL, /*tp_finalize*/ + #endif + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if __PYX_NEED_TP_PRINT_SLOT == 1 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030C0000 + 0, /*tp_watched*/ + #endif + #if PY_VERSION_HEX >= 0x030d00A4 + 0, /*tp_versions_used*/ + #endif + #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000 + 0, /*tp_pypy_flags*/ + #endif +}; +#endif + +static PyMethodDef __pyx_methods[] = { + {0, 0, 0, 0} +}; +/* #### Code section: initfunc_declarations ### */ +static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/ +static CYTHON_SMALL_CODE int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate); /*proto*/ +/* #### Code section: init_module ### */ + +static int __Pyx_modinit_global_init_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); + /*--- Global init code ---*/ + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_std_UUID = Py_None; Py_INCREF(Py_None); + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_UUID = Py_None; Py_INCREF(Py_None); + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_variable_export_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); + /*--- Variable export code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_export_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); + /*--- Function export code ---*/ + if (__Pyx_ExportFunction("frb_check", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_frb_check, "PyObject *(struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *, Py_ssize_t)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("date_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_date_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("date_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_date_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("date_encode_tuple", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_date_encode_tuple, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("date_decode_tuple", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_date_decode_tuple, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("timestamp_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timestamp_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("timestamp_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timestamp_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("timestamp_encode_tuple", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timestamp_encode_tuple, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("timestamp_decode_tuple", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timestamp_decode_tuple, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("timestamptz_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timestamptz_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("timestamptz_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timestamptz_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("time_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_time_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("time_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_time_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("time_encode_tuple", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_time_encode_tuple, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("time_decode_tuple", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_time_decode_tuple, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("timetz_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timetz_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("timetz_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timetz_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("timetz_encode_tuple", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timetz_encode_tuple, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("timetz_decode_tuple", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_timetz_decode_tuple, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("interval_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_interval_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("interval_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_interval_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("interval_encode_tuple", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_interval_encode_tuple, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("interval_decode_tuple", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_interval_decode_tuple, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("bits_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_bits_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("bits_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_bits_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("bool_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_bool_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("bool_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_bool_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("box_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_box_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("box_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_box_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("line_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_line_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("line_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_line_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("lseg_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_lseg_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("lseg_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_lseg_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("point_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_point_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("point_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_point_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("path_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_path_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("path_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_path_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("poly_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_poly_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("poly_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_poly_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("circle_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_circle_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("circle_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_circle_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("hstore_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_hstore_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("hstore_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_hstore_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("int2_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_int2_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("int2_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_int2_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("int4_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_int4_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("int4_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_int4_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("uint4_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_uint4_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("uint4_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_uint4_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("int8_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_int8_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("int8_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_int8_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("uint8_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_uint8_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("uint8_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_uint8_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("float4_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_float4_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("float4_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_float4_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("float8_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_float8_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("float8_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_float8_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("jsonb_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_jsonb_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("jsonb_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_jsonb_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("jsonpath_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_jsonpath_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("jsonpath_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_jsonpath_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("as_gaussdb_string_and_size", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_as_gaussdb_string_and_size, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, PyObject *, char **, Py_ssize_t *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("text_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_text_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("text_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_text_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("bytea_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_bytea_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("bytea_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_bytea_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("uuid_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_uuid_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("uuid_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_uuid_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("numeric_encode_text", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_numeric_encode_text, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("numeric_decode_text", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_numeric_decode_text, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("numeric_encode_binary", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_numeric_encode_binary, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("numeric_decode_binary", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_numeric_decode_binary, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("numeric_decode_binary_ex", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_numeric_decode_binary_ex, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("void_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_void_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("void_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_void_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("tid_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_tid_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("tid_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_tid_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("cidr_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_cidr_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("cidr_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_cidr_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("inet_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_inet_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("inet_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_inet_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("gaussdb_snapshot_encode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_snapshot_encode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_ExportFunction("gaussdb_snapshot_decode", (void (*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_snapshot_decode, "PyObject *(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); + /*--- Type init code ---*/ + __pyx_vtabptr_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer = &__pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.len = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_len; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.write_len_prefixed_utf8 = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_len_prefixed_utf8; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer._check_readonly = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__check_readonly; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer._ensure_alloced = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, Py_ssize_t))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__ensure_alloced; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer._reallocate = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, Py_ssize_t))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer__reallocate; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.reset = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_reset; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.start_message = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, char))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_start_message; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.end_message = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_end_message; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.write_buffer = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_buffer; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.write_byte = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, char))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_byte; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.write_bytes = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_bytes; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.write_len_prefixed_buffer = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_len_prefixed_buffer; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.write_len_prefixed_bytes = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_len_prefixed_bytes; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.write_bytestring = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_bytestring; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.write_str = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, PyObject *, PyObject *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_str; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.write_frbuf = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, struct __pyx_t_13async_gaussdb_12gaussdbproto_12gaussdbproto_FRBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_frbuf; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.write_cstr = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, char const *, Py_ssize_t))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_cstr; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.write_int16 = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, int16_t))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int16; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.write_int32 = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, int32_t))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int32; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.write_int64 = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, int64_t))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_int64; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.write_float = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, float))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_float; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.write_double = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, double))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_write_double; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.new_message = (struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *(*)(char))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_new_message; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer.__pyx_new = (struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *(*)(void))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_new; + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer)) __PYX_ERR(2, 15, __pyx_L1_error) + #if !CYTHON_COMPILING_IN_LIMITED_API + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer->tp_as_buffer = &__pyx_tp_as_buffer_WriteBuffer; + #elif defined(Py_bf_getbuffer) && defined(Py_bf_releasebuffer) + /* PY_VERSION_HEX >= 0x03090000 || Py_LIMITED_API >= 0x030B0000 */ + #elif defined(_MSC_VER) + #pragma message ("The buffer protocol is not supported in the Limited C-API < 3.11.") + #else + #warning "The buffer protocol is not supported in the Limited C-API < 3.11." + #endif + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer_spec, __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer) < 0) __PYX_ERR(2, 15, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer = &__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer) < 0) __PYX_ERR(2, 15, __pyx_L1_error) + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer->tp_dictoffset && __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer->tp_getattro = PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer, __pyx_vtabptr_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer) < 0) __PYX_ERR(2, 15, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer) < 0) __PYX_ERR(2, 15, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_WriteBuffer, (PyObject *) __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer) < 0) __PYX_ERR(2, 15, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer) < 0) __PYX_ERR(2, 15, __pyx_L1_error) + __pyx_vtabptr_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer = &__pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.len = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_len; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.get_message_type = (char (*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_get_message_type; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.get_message_length = (int32_t (*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_get_message_length; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.feed_data = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, PyObject *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_feed_data; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer._ensure_first_buf = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__ensure_first_buf; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer._switch_to_next_buf = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__switch_to_next_buf; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.read_byte = (char (*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_byte; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer._try_read_bytes = (char const *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, Py_ssize_t))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__try_read_bytes; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer._read_into = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, char *, Py_ssize_t))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__read_into; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer._read_and_discard = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, Py_ssize_t))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__read_and_discard; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.read_bytes = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, Py_ssize_t))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_bytes; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.read_len_prefixed_bytes = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_len_prefixed_bytes; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.read_len_prefixed_utf8 = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_len_prefixed_utf8; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.read_uuid = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_uuid; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.read_int64 = (int64_t (*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_int64; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.read_int32 = (int32_t (*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_int32; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.read_int16 = (int16_t (*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_int16; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.read_null_str = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_read_null_str; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.take_message = (int32_t (*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_take_message; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.take_message_type = (int32_t (*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, char))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_take_message_type; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.put_message = (int32_t (*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_put_message; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.try_consume_message = (char const *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, Py_ssize_t *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_try_consume_message; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.consume_message = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_consume_message; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.discard_message = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_discard_message; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.redirect_messages = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_WriteBuffer *, char, struct __pyx_opt_args_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_redirect_messages *__pyx_optional_args))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_redirect_messages; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.consume_messages = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *, char))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_consume_messages; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.finish_message = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_finish_message; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer._finish_message = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer__finish_message; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer.new_message_parser = (struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer *(*)(PyObject *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_new_message_parser; + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer)) __PYX_ERR(2, 238, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer_spec, __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer) < 0) __PYX_ERR(2, 238, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer = &__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer) < 0) __PYX_ERR(2, 238, __pyx_L1_error) + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer->tp_dictoffset && __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer->tp_getattro = PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer, __pyx_vtabptr_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer) < 0) __PYX_ERR(2, 238, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer) < 0) __PYX_ERR(2, 238, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ReadBuffer, (PyObject *) __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer) < 0) __PYX_ERR(2, 238, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_ReadBuffer) < 0) __PYX_ERR(2, 238, __pyx_L1_error) + __pyx_vtabptr_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext = &__pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext.get_text_codec = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, int __pyx_skip_dispatch))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_get_text_codec; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext.is_encoding_utf8 = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_is_encoding_utf8; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext.get_json_decoder = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, int __pyx_skip_dispatch))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_get_json_decoder; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext.is_decoding_json = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_is_decoding_json; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext.get_json_encoder = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *, int __pyx_skip_dispatch))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_get_json_encoder; + __pyx_vtable_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext.is_encoding_json = (PyObject *(*)(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext *))__pyx_f_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_is_encoding_json; + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext)) __PYX_ERR(4, 8, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext_spec, __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext) < 0) __PYX_ERR(4, 8, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext = &__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext) < 0) __PYX_ERR(4, 8, __pyx_L1_error) + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext->tp_dictoffset && __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext->tp_getattro = PyObject_GenericGetAttr; + } + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext, __pyx_vtabptr_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext) < 0) __PYX_ERR(4, 8, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext) < 0) __PYX_ERR(4, 8, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_CodecContext, (PyObject *) __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext) < 0) __PYX_ERR(4, 8, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext) < 0) __PYX_ERR(4, 8, __pyx_L1_error) + #if CYTHON_USE_TYPE_SPECS + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe)) __PYX_ERR(1, 125, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe_spec, __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe) < 0) __PYX_ERR(1, 125, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe = &__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe) < 0) __PYX_ERR(1, 125, __pyx_L1_error) + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe->tp_dictoffset && __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe->tp_getattro = PyObject_GenericGetAttr; + } + #endif + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_UUIDReplaceMe, (PyObject *) __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe) < 0) __PYX_ERR(1, 125, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe) < 0) __PYX_ERR(1, 125, __pyx_L1_error) + #if CYTHON_USE_TYPE_SPECS + __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 136, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID_spec, __pyx_t_1); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(!__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID)) __PYX_ERR(1, 136, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID_spec, __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID) < 0) __PYX_ERR(1, 136, __pyx_L1_error) + #else + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID = &__pyx_type_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID; + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + __pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID->tp_base = __pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe; + #endif + #if !CYTHON_USE_TYPE_SPECS + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID) < 0) __PYX_ERR(1, 136, __pyx_L1_error) + #endif + #if !CYTHON_COMPILING_IN_LIMITED_API + if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID->tp_dictoffset && __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID->tp_getattro == PyObject_GenericGetAttr)) { + __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID->tp_getattro = PyObject_GenericGetAttr; + } + #endif + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_UUID_2, (PyObject *) __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID) < 0) __PYX_ERR(1, 136, __pyx_L1_error) + #if CYTHON_USE_TYPE_SLOTS + if (__pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID->tp_weaklistoffset = offsetof(struct __pyx_obj_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID, __weakref__); + #endif + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_type_import_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + PyObject *__pyx_t_1 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); + /*--- Type import code ---*/ + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_mstate->__pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_1_2(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyTypeObject), + #elif CYTHON_COMPILING_IN_LIMITED_API + 0, 0, + #else + sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyHeapTypeObject), + #endif + __Pyx_ImportType_CheckSize_Warn_3_1_2); if (!__pyx_mstate->__pyx_ptype_7cpython_4type_type) __PYX_ERR(26, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_mstate->__pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType_3_1_2(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "bool", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyLongObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyLongObject), + #elif CYTHON_COMPILING_IN_LIMITED_API + 0, 0, + #else + sizeof(PyLongObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyLongObject), + #endif + __Pyx_ImportType_CheckSize_Warn_3_1_2); if (!__pyx_mstate->__pyx_ptype_7cpython_4bool_bool) __PYX_ERR(27, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_mstate->__pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType_3_1_2(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "complex", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyComplexObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyComplexObject), + #elif CYTHON_COMPILING_IN_LIMITED_API + 0, 0, + #else + sizeof(PyComplexObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyComplexObject), + #endif + __Pyx_ImportType_CheckSize_Warn_3_1_2); if (!__pyx_mstate->__pyx_ptype_7cpython_7complex_complex) __PYX_ERR(28, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = PyImport_ImportModule("datetime"); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_mstate->__pyx_ptype_7cpython_8datetime_date = __Pyx_ImportType_3_1_2(__pyx_t_1, "datetime", "date", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyDateTime_Date), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Date), + #elif CYTHON_COMPILING_IN_LIMITED_API + sizeof(PyDateTime_Date), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Date), + #else + sizeof(PyDateTime_Date), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Date), + #endif + __Pyx_ImportType_CheckSize_Warn_3_1_2); if (!__pyx_mstate->__pyx_ptype_7cpython_8datetime_date) __PYX_ERR(9, 43, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_7cpython_8datetime_time = __Pyx_ImportType_3_1_2(__pyx_t_1, "datetime", "time", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyDateTime_Time), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Time), + #elif CYTHON_COMPILING_IN_LIMITED_API + sizeof(PyDateTime_Time), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Time), + #else + sizeof(PyDateTime_Time), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Time), + #endif + __Pyx_ImportType_CheckSize_Warn_3_1_2); if (!__pyx_mstate->__pyx_ptype_7cpython_8datetime_time) __PYX_ERR(9, 56, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_7cpython_8datetime_datetime = __Pyx_ImportType_3_1_2(__pyx_t_1, "datetime", "datetime", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyDateTime_DateTime), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_DateTime), + #elif CYTHON_COMPILING_IN_LIMITED_API + sizeof(PyDateTime_DateTime), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_DateTime), + #else + sizeof(PyDateTime_DateTime), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_DateTime), + #endif + __Pyx_ImportType_CheckSize_Warn_3_1_2); if (!__pyx_mstate->__pyx_ptype_7cpython_8datetime_datetime) __PYX_ERR(9, 82, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_7cpython_8datetime_timedelta = __Pyx_ImportType_3_1_2(__pyx_t_1, "datetime", "timedelta", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyDateTime_Delta), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Delta), + #elif CYTHON_COMPILING_IN_LIMITED_API + sizeof(PyDateTime_Delta), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Delta), + #else + sizeof(PyDateTime_Delta), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Delta), + #endif + __Pyx_ImportType_CheckSize_Warn_3_1_2); if (!__pyx_mstate->__pyx_ptype_7cpython_8datetime_timedelta) __PYX_ERR(9, 120, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_7cpython_8datetime_tzinfo = __Pyx_ImportType_3_1_2(__pyx_t_1, "datetime", "tzinfo", + #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 + sizeof(PyDateTime_TZInfo), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_TZInfo), + #elif CYTHON_COMPILING_IN_LIMITED_API + sizeof(PyDateTime_TZInfo), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_TZInfo), + #else + sizeof(PyDateTime_TZInfo), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_TZInfo), + #endif + __Pyx_ImportType_CheckSize_Warn_3_1_2); if (!__pyx_mstate->__pyx_ptype_7cpython_8datetime_tzinfo) __PYX_ERR(9, 133, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_RefNannyFinishContext(); + return -1; +} + +static int __Pyx_modinit_variable_import_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); + /*--- Variable import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +static int __Pyx_modinit_function_import_code(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); + /*--- Function import code ---*/ + __Pyx_RefNannyFinishContext(); + return 0; +} + +#if CYTHON_PEP489_MULTI_PHASE_INIT +static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ +static int __pyx_pymod_exec_gaussdbproto(PyObject* module); /*proto*/ +static PyModuleDef_Slot __pyx_moduledef_slots[] = { + {Py_mod_create, (void*)__pyx_pymod_create}, + {Py_mod_exec, (void*)__pyx_pymod_exec_gaussdbproto}, + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + {Py_mod_gil, Py_MOD_GIL_USED}, + #endif + #if PY_VERSION_HEX >= 0x030C0000 && CYTHON_USE_MODULE_STATE + {Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED}, + #endif + {0, NULL} +}; +#endif + +#ifdef __cplusplus +namespace { + struct PyModuleDef __pyx_moduledef = + #else + static struct PyModuleDef __pyx_moduledef = + #endif + { + PyModuleDef_HEAD_INIT, + "gaussdbproto", + 0, /* m_doc */ + #if CYTHON_USE_MODULE_STATE + sizeof(__pyx_mstatetype), /* m_size */ + #else + (CYTHON_PEP489_MULTI_PHASE_INIT) ? 0 : -1, /* m_size */ + #endif + __pyx_methods /* m_methods */, + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_moduledef_slots, /* m_slots */ + #else + NULL, /* m_reload */ + #endif + #if CYTHON_USE_MODULE_STATE + __pyx_m_traverse, /* m_traverse */ + __pyx_m_clear, /* m_clear */ + NULL /* m_free */ + #else + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL /* m_free */ + #endif + }; + #ifdef __cplusplus +} /* anonymous namespace */ +#endif + +/* PyModInitFuncType */ +#ifndef CYTHON_NO_PYINIT_EXPORT + #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#else + #ifdef __cplusplus + #define __Pyx_PyMODINIT_FUNC extern "C" PyObject * + #else + #define __Pyx_PyMODINIT_FUNC PyObject * + #endif +#endif + +__Pyx_PyMODINIT_FUNC PyInit_gaussdbproto(void) CYTHON_SMALL_CODE; /*proto*/ +__Pyx_PyMODINIT_FUNC PyInit_gaussdbproto(void) +#if CYTHON_PEP489_MULTI_PHASE_INIT +{ + return PyModuleDef_Init(&__pyx_moduledef); +} +/* ModuleCreationPEP489 */ +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000 +static PY_INT64_T __Pyx_GetCurrentInterpreterId(void) { + { + PyObject *module = PyImport_ImportModule("_interpreters"); // 3.13+ I think + if (!module) { + PyErr_Clear(); // just try the 3.8-3.12 version + module = PyImport_ImportModule("_xxsubinterpreters"); + if (!module) goto bad; + } + PyObject *current = PyObject_CallMethod(module, "get_current", NULL); + Py_DECREF(module); + if (!current) goto bad; + if (PyTuple_Check(current)) { + PyObject *new_current = PySequence_GetItem(current, 0); + Py_DECREF(current); + current = new_current; + if (!new_current) goto bad; + } + long long as_c_int = PyLong_AsLongLong(current); + Py_DECREF(current); + return as_c_int; + } + bad: + PySys_WriteStderr("__Pyx_GetCurrentInterpreterId failed. Try setting the C define CYTHON_PEP489_MULTI_PHASE_INIT=0\n"); + return -1; +} +#endif +#if !CYTHON_USE_MODULE_STATE +static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { + static PY_INT64_T main_interpreter_id = -1; +#if CYTHON_COMPILING_IN_GRAAL + PY_INT64_T current_id = PyInterpreterState_GetIDFromThreadState(PyThreadState_Get()); +#elif CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX >= 0x03090000 + PY_INT64_T current_id = PyInterpreterState_GetID(PyInterpreterState_Get()); +#elif CYTHON_COMPILING_IN_LIMITED_API + PY_INT64_T current_id = __Pyx_GetCurrentInterpreterId(); +#else + PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); +#endif + if (unlikely(current_id == -1)) { + return -1; + } + if (main_interpreter_id == -1) { + main_interpreter_id = current_id; + return 0; + } else if (unlikely(main_interpreter_id != current_id)) { + PyErr_SetString( + PyExc_ImportError, + "Interpreter change detected - this module can only be loaded into one interpreter per process."); + return -1; + } + return 0; +} +#endif +static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) +{ + PyObject *value = PyObject_GetAttrString(spec, from_name); + int result = 0; + if (likely(value)) { + if (allow_none || value != Py_None) { + result = PyDict_SetItemString(moddict, to_name, value); + } + Py_DECREF(value); + } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Clear(); + } else { + result = -1; + } + return result; +} +static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) { + PyObject *module = NULL, *moddict, *modname; + CYTHON_UNUSED_VAR(def); + #if !CYTHON_USE_MODULE_STATE + if (__Pyx_check_single_interpreter()) + return NULL; + #endif + if (__pyx_m) + return __Pyx_NewRef(__pyx_m); + modname = PyObject_GetAttrString(spec, "name"); + if (unlikely(!modname)) goto bad; + module = PyModule_NewObject(modname); + Py_DECREF(modname); + if (unlikely(!module)) goto bad; + moddict = PyModule_GetDict(module); + if (unlikely(!moddict)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; + if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; + return module; +bad: + Py_XDECREF(module); + return NULL; +} + + +static CYTHON_SMALL_CODE int __pyx_pymod_exec_gaussdbproto(PyObject *__pyx_pyinit_module) +#endif +{ + int stringtab_initialized = 0; + #if CYTHON_USE_MODULE_STATE + int pystate_addmodule_run = 0; + #endif + __pyx_mstatetype *__pyx_mstate = NULL; + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; + static char __pyx_t_6[256]; + int __pyx_t_7; + size_t __pyx_t_8; + long __pyx_t_9; + PyObject *__pyx_t_10 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; + __Pyx_RefNannyDeclarations + #if CYTHON_PEP489_MULTI_PHASE_INIT + if (__pyx_m) { + if (__pyx_m == __pyx_pyinit_module) return 0; + PyErr_SetString(PyExc_RuntimeError, "Module 'gaussdbproto' has already been imported. Re-initialisation is not supported."); + return -1; + } + #else + if (__pyx_m) return __Pyx_NewRef(__pyx_m); + #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_t_1 = __pyx_pyinit_module; + Py_INCREF(__pyx_t_1); + #else + __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #if CYTHON_USE_MODULE_STATE + { + int add_module_result = __Pyx_State_AddModule(__pyx_t_1, &__pyx_moduledef); + __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "gaussdbproto" pseudovariable */ + if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + pystate_addmodule_run = 1; + } + #else + __pyx_m = __pyx_t_1; + #endif + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED); + #endif + __pyx_mstate = __pyx_mstate_global; + CYTHON_UNUSED_VAR(__pyx_t_1); + __pyx_mstate->__pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_mstate->__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) + Py_INCREF(__pyx_mstate->__pyx_d); + __pyx_mstate->__pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_mstate->__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_cython_runtime = __Pyx_PyImport_AddModuleRef("cython_runtime"); if (unlikely(!__pyx_mstate->__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_mstate->__pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /* ImportRefnannyAPI */ + #if CYTHON_REFNANNY +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + +__Pyx_RefNannySetupContext("PyInit_gaussdbproto", 0); + if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif + __pyx_mstate->__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_mstate->__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Initialize various global constants etc. ---*/ + if (__Pyx_InitConstants(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + stringtab_initialized = 1; + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if 0 || defined(__Pyx_CyFunction_USED) || defined(__Pyx_FusedFunction_USED) || defined(__Pyx_Coroutine_USED) || defined(__Pyx_Generator_USED) || defined(__Pyx_AsyncGen_USED) + if (__pyx_CommonTypesMetaclass_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ + if (__pyx_module_is_main_async_gaussdb__gaussdbproto__gaussdbproto) { + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_name, __pyx_mstate_global->__pyx_n_u_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + } + { + PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) + if (!PyDict_GetItemString(modules, "async_gaussdb.gaussdbproto.gaussdbproto")) { + if (unlikely((PyDict_SetItemString(modules, "async_gaussdb.gaussdbproto.gaussdbproto", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + /*--- Builtin init code ---*/ + if (__Pyx_InitCachedBuiltins(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Constants init code ---*/ + if (__Pyx_InitCachedConstants(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_CreateCodeObjects(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Global type/function init code ---*/ + (void)__Pyx_modinit_global_init_code(__pyx_mstate); + (void)__Pyx_modinit_variable_export_code(__pyx_mstate); + if (unlikely((__Pyx_modinit_function_export_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely((__Pyx_modinit_type_init_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + if (unlikely((__Pyx_modinit_type_import_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error) + (void)__Pyx_modinit_variable_import_code(__pyx_mstate); + (void)__Pyx_modinit_function_import_code(__pyx_mstate); + /*--- Execution code ---*/ + + /* "async_gaussdb/gaussdbproto/gaussdbproto.pyx":23 + * + * from .debug cimport GAUSSDB_DEBUG + * from . import types as gaussdbproto_types # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_2 = __Pyx_PyList_Pack(1, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_, __pyx_t_2, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_gaussdbproto_types, __pyx_t_2) < 0) __PYX_ERR(0, 23, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":10 + * from libc.string cimport memcpy + * + * import collections # <<<<<<<<<<<<<< + * + * class BufferError(Exception): +*/ + __pyx_t_3 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_collections, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_collections, __pyx_t_3) < 0) __PYX_ERR(2, 10, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/buffer.pyx":12 + * import collections + * + * class BufferError(Exception): # <<<<<<<<<<<<<< + * pass + * +*/ + __pyx_t_3 = PyTuple_Pack(1, ((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_4, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_BufferError, __pyx_mstate_global->__pyx_n_u_BufferError, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_async_gaussdb_gaussdbproto_gauss, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (__pyx_t_2 != __pyx_t_3) { + if (unlikely((PyDict_SetItemString(__pyx_t_5, "__orig_bases__", __pyx_t_3) < 0))) __PYX_ERR(2, 12, __pyx_L1_error) + } + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_Py3ClassCreate(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BufferError, __pyx_t_2, __pyx_t_5, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_BufferError, __pyx_t_3) < 0) __PYX_ERR(2, 12, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_WriteBuffer___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_async_gaussdb_gaussdbproto_gauss, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(3, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_13async_gaussdb_12gaussdbproto_12gaussdbproto_11WriteBuffer_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_WriteBuffer___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_async_gaussdb_gaussdbproto_gauss, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(3, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ReadBuffer___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_async_gaussdb_gaussdbproto_gauss, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(3, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "(tree fragment)":3 + * def __reduce_cython__(self): + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" +*/ + __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_13async_gaussdb_12gaussdbproto_12gaussdbproto_10ReadBuffer_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ReadBuffer___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_async_gaussdb_gaussdbproto_gauss, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[3])); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 3, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(3, 3, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":1 + * import functools # <<<<<<<<<<<<<< + * import uuid + * +*/ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_functools, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_functools, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":2 + * import functools + * import uuid # <<<<<<<<<<<<<< + * + * cimport cython +*/ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_uuid, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_uuid, __pyx_t_2) < 0) __PYX_ERR(1, 2, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":60 + * + * cdef char _hextable[256] + * _hextable[:] = [ # <<<<<<<<<<<<<< + * -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + * -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, +*/ + __pyx_t_6[0] = -1; + __pyx_t_6[1] = -1; + __pyx_t_6[2] = -1; + __pyx_t_6[3] = -1; + __pyx_t_6[4] = -1; + __pyx_t_6[5] = -1; + __pyx_t_6[6] = -1; + __pyx_t_6[7] = -1; + __pyx_t_6[8] = -1; + __pyx_t_6[9] = -1; + __pyx_t_6[10] = -1; + __pyx_t_6[11] = -1; + __pyx_t_6[12] = -1; + __pyx_t_6[13] = -1; + __pyx_t_6[14] = -1; + __pyx_t_6[15] = -1; + __pyx_t_6[16] = -1; + __pyx_t_6[17] = -1; + __pyx_t_6[18] = -1; + __pyx_t_6[19] = -1; + __pyx_t_6[20] = -1; + __pyx_t_6[21] = -1; + __pyx_t_6[22] = -1; + __pyx_t_6[23] = -1; + __pyx_t_6[24] = -1; + __pyx_t_6[25] = -1; + __pyx_t_6[26] = -1; + __pyx_t_6[27] = -1; + __pyx_t_6[28] = -1; + __pyx_t_6[29] = -1; + __pyx_t_6[30] = -1; + __pyx_t_6[31] = -1; + __pyx_t_6[32] = -1; + __pyx_t_6[33] = -1; + __pyx_t_6[34] = -1; + __pyx_t_6[35] = -1; + __pyx_t_6[36] = -1; + __pyx_t_6[37] = -1; + __pyx_t_6[38] = -1; + __pyx_t_6[39] = -1; + __pyx_t_6[40] = -1; + __pyx_t_6[41] = -1; + __pyx_t_6[42] = -1; + __pyx_t_6[43] = -1; + __pyx_t_6[44] = -1; + __pyx_t_6[45] = -1; + __pyx_t_6[46] = -1; + __pyx_t_6[47] = -1; + __pyx_t_6[48] = 0; + __pyx_t_6[49] = 1; + __pyx_t_6[50] = 2; + __pyx_t_6[51] = 3; + __pyx_t_6[52] = 4; + __pyx_t_6[53] = 5; + __pyx_t_6[54] = 6; + __pyx_t_6[55] = 7; + __pyx_t_6[56] = 8; + __pyx_t_6[57] = 9; + __pyx_t_6[58] = -1; + __pyx_t_6[59] = -1; + __pyx_t_6[60] = -1; + __pyx_t_6[61] = -1; + __pyx_t_6[62] = -1; + __pyx_t_6[63] = -1; + __pyx_t_6[64] = -1; + __pyx_t_6[65] = 10; + __pyx_t_6[66] = 11; + __pyx_t_6[67] = 12; + __pyx_t_6[68] = 13; + __pyx_t_6[69] = 14; + __pyx_t_6[70] = 15; + __pyx_t_6[71] = -1; + __pyx_t_6[72] = -1; + __pyx_t_6[73] = -1; + __pyx_t_6[74] = -1; + __pyx_t_6[75] = -1; + __pyx_t_6[76] = -1; + __pyx_t_6[77] = -1; + __pyx_t_6[78] = -1; + __pyx_t_6[79] = -1; + __pyx_t_6[80] = -1; + __pyx_t_6[81] = -1; + __pyx_t_6[82] = -1; + __pyx_t_6[83] = -1; + __pyx_t_6[84] = -1; + __pyx_t_6[85] = -1; + __pyx_t_6[86] = -1; + __pyx_t_6[87] = -1; + __pyx_t_6[88] = -1; + __pyx_t_6[89] = -1; + __pyx_t_6[90] = -1; + __pyx_t_6[91] = -1; + __pyx_t_6[92] = -1; + __pyx_t_6[93] = -1; + __pyx_t_6[94] = -1; + __pyx_t_6[95] = -1; + __pyx_t_6[96] = -1; + __pyx_t_6[97] = 10; + __pyx_t_6[98] = 11; + __pyx_t_6[99] = 12; + __pyx_t_6[100] = 13; + __pyx_t_6[101] = 14; + __pyx_t_6[102] = 15; + __pyx_t_6[103] = -1; + __pyx_t_6[104] = -1; + __pyx_t_6[105] = -1; + __pyx_t_6[106] = -1; + __pyx_t_6[107] = -1; + __pyx_t_6[108] = -1; + __pyx_t_6[109] = -1; + __pyx_t_6[110] = -1; + __pyx_t_6[111] = -1; + __pyx_t_6[112] = -1; + __pyx_t_6[113] = -1; + __pyx_t_6[114] = -1; + __pyx_t_6[115] = -1; + __pyx_t_6[116] = -1; + __pyx_t_6[117] = -1; + __pyx_t_6[118] = -1; + __pyx_t_6[119] = -1; + __pyx_t_6[120] = -1; + __pyx_t_6[121] = -1; + __pyx_t_6[122] = -1; + __pyx_t_6[123] = -1; + __pyx_t_6[124] = -1; + __pyx_t_6[125] = -1; + __pyx_t_6[126] = -1; + __pyx_t_6[127] = -1; + __pyx_t_6[128] = -1; + __pyx_t_6[129] = -1; + __pyx_t_6[130] = -1; + __pyx_t_6[131] = -1; + __pyx_t_6[132] = -1; + __pyx_t_6[133] = -1; + __pyx_t_6[134] = -1; + __pyx_t_6[135] = -1; + __pyx_t_6[136] = -1; + __pyx_t_6[137] = -1; + __pyx_t_6[138] = -1; + __pyx_t_6[139] = -1; + __pyx_t_6[140] = -1; + __pyx_t_6[141] = -1; + __pyx_t_6[142] = -1; + __pyx_t_6[143] = -1; + __pyx_t_6[144] = -1; + __pyx_t_6[145] = -1; + __pyx_t_6[146] = -1; + __pyx_t_6[147] = -1; + __pyx_t_6[148] = -1; + __pyx_t_6[149] = -1; + __pyx_t_6[150] = -1; + __pyx_t_6[151] = -1; + __pyx_t_6[152] = -1; + __pyx_t_6[153] = -1; + __pyx_t_6[154] = -1; + __pyx_t_6[155] = -1; + __pyx_t_6[156] = -1; + __pyx_t_6[157] = -1; + __pyx_t_6[158] = -1; + __pyx_t_6[159] = -1; + __pyx_t_6[160] = -1; + __pyx_t_6[161] = -1; + __pyx_t_6[162] = -1; + __pyx_t_6[163] = -1; + __pyx_t_6[164] = -1; + __pyx_t_6[165] = -1; + __pyx_t_6[166] = -1; + __pyx_t_6[167] = -1; + __pyx_t_6[168] = -1; + __pyx_t_6[169] = -1; + __pyx_t_6[170] = -1; + __pyx_t_6[171] = -1; + __pyx_t_6[172] = -1; + __pyx_t_6[173] = -1; + __pyx_t_6[174] = -1; + __pyx_t_6[175] = -1; + __pyx_t_6[176] = -1; + __pyx_t_6[177] = -1; + __pyx_t_6[178] = -1; + __pyx_t_6[179] = -1; + __pyx_t_6[180] = -1; + __pyx_t_6[181] = -1; + __pyx_t_6[182] = -1; + __pyx_t_6[183] = -1; + __pyx_t_6[184] = -1; + __pyx_t_6[185] = -1; + __pyx_t_6[186] = -1; + __pyx_t_6[187] = -1; + __pyx_t_6[188] = -1; + __pyx_t_6[189] = -1; + __pyx_t_6[190] = -1; + __pyx_t_6[191] = -1; + __pyx_t_6[192] = -1; + __pyx_t_6[193] = -1; + __pyx_t_6[194] = -1; + __pyx_t_6[195] = -1; + __pyx_t_6[196] = -1; + __pyx_t_6[197] = -1; + __pyx_t_6[198] = -1; + __pyx_t_6[199] = -1; + __pyx_t_6[200] = -1; + __pyx_t_6[201] = -1; + __pyx_t_6[202] = -1; + __pyx_t_6[203] = -1; + __pyx_t_6[204] = -1; + __pyx_t_6[205] = -1; + __pyx_t_6[206] = -1; + __pyx_t_6[207] = -1; + __pyx_t_6[208] = -1; + __pyx_t_6[209] = -1; + __pyx_t_6[210] = -1; + __pyx_t_6[211] = -1; + __pyx_t_6[212] = -1; + __pyx_t_6[213] = -1; + __pyx_t_6[214] = -1; + __pyx_t_6[215] = -1; + __pyx_t_6[216] = -1; + __pyx_t_6[217] = -1; + __pyx_t_6[218] = -1; + __pyx_t_6[219] = -1; + __pyx_t_6[220] = -1; + __pyx_t_6[221] = -1; + __pyx_t_6[222] = -1; + __pyx_t_6[223] = -1; + __pyx_t_6[224] = -1; + __pyx_t_6[225] = -1; + __pyx_t_6[226] = -1; + __pyx_t_6[227] = -1; + __pyx_t_6[228] = -1; + __pyx_t_6[229] = -1; + __pyx_t_6[230] = -1; + __pyx_t_6[231] = -1; + __pyx_t_6[232] = -1; + __pyx_t_6[233] = -1; + __pyx_t_6[234] = -1; + __pyx_t_6[235] = -1; + __pyx_t_6[236] = -1; + __pyx_t_6[237] = -1; + __pyx_t_6[238] = -1; + __pyx_t_6[239] = -1; + __pyx_t_6[240] = -1; + __pyx_t_6[241] = -1; + __pyx_t_6[242] = -1; + __pyx_t_6[243] = -1; + __pyx_t_6[244] = -1; + __pyx_t_6[245] = -1; + __pyx_t_6[246] = -1; + __pyx_t_6[247] = -1; + __pyx_t_6[248] = -1; + __pyx_t_6[249] = -1; + __pyx_t_6[250] = -1; + __pyx_t_6[251] = -1; + __pyx_t_6[252] = -1; + __pyx_t_6[253] = -1; + __pyx_t_6[254] = -1; + __pyx_t_6[255] = -1; + if (unlikely((0x100) != (256))) { + PyErr_Format(PyExc_ValueError, "Assignment to slice of wrong length, expected %" CYTHON_FORMAT_SSIZE_T "d, got %" CYTHON_FORMAT_SSIZE_T "d", (Py_ssize_t)(256), (Py_ssize_t)(0x100)); + __PYX_ERR(1, 60, __pyx_L1_error) + } + memcpy(&(__pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto__hextable[0]), __pyx_t_6, sizeof(__pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto__hextable[0]) * (256)); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":75 + * + * + * cdef std_UUID = uuid.UUID # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_uuid); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_UUID_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 75, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_XGOTREF(__pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_std_UUID); + __Pyx_DECREF_SET(__pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_std_UUID, __pyx_t_4); + __Pyx_GIVEREF(__pyx_t_4); + __pyx_t_4 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_UUIDReplaceMe___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_async_gaussdb_gaussdbproto_gauss, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4])); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_4) < 0) __PYX_ERR(3, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle___UUIDReplaceMe, (type(self), 0xe3b0c44, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle___UUIDReplaceMe__set_state(self, __pyx_state) +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13async_gaussdb_12gaussdbproto_12gaussdbproto_15__UUIDReplaceMe_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_UUIDReplaceMe___setstate_cytho, NULL, __pyx_mstate_global->__pyx_n_u_async_gaussdb_gaussdbproto_gauss, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[5])); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_4) < 0) __PYX_ERR(3, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":196 + * return f"UUID('{self}')" + * + * def __reduce__(self): # <<<<<<<<<<<<<< + * return (type(self), (self.bytes,)) + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13async_gaussdb_12gaussdbproto_12gaussdbproto_4UUID_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_UUID___reduce, NULL, __pyx_mstate_global->__pyx_n_u_async_gaussdb_gaussdbproto_gauss, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[6])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 196, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID, __pyx_mstate_global->__pyx_n_u_reduce, __pyx_t_4) < 0) __PYX_ERR(1, 196, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":344 + * # compatible with future Pythons for long enough. + * # + * assert UUID.__bases__[0] is __UUIDReplaceMe # <<<<<<<<<<<<<< + * assert UUID.__mro__[1] is __UUIDReplaceMe + * cpython.Py_INCREF(std_UUID) +*/ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(__pyx_assertions_enabled())) { + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID), __pyx_mstate_global->__pyx_n_u_bases); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 344, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 344, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_7 = (__pyx_t_2 == ((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe)); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_7)) { + __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); + __PYX_ERR(1, 344, __pyx_L1_error) + } + } + #else + if ((1)); else __PYX_ERR(1, 344, __pyx_L1_error) + #endif + + /* "async_gaussdb/gaussdbproto/uuid.pyx":345 + * # + * assert UUID.__bases__[0] is __UUIDReplaceMe + * assert UUID.__mro__[1] is __UUIDReplaceMe # <<<<<<<<<<<<<< + * cpython.Py_INCREF(std_UUID) + * cpython.PyTuple_SET_ITEM(UUID.__bases__, 0, std_UUID) +*/ + #ifndef CYTHON_WITHOUT_ASSERTIONS + if (unlikely(__pyx_assertions_enabled())) { + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID), __pyx_mstate_global->__pyx_n_u_mro); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 345, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 345, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_7 = (__pyx_t_4 == ((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto___UUIDReplaceMe)); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_7)) { + __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); + __PYX_ERR(1, 345, __pyx_L1_error) + } + } + #else + if ((1)); else __PYX_ERR(1, 345, __pyx_L1_error) + #endif + + /* "async_gaussdb/gaussdbproto/uuid.pyx":346 + * assert UUID.__bases__[0] is __UUIDReplaceMe + * assert UUID.__mro__[1] is __UUIDReplaceMe + * cpython.Py_INCREF(std_UUID) # <<<<<<<<<<<<<< + * cpython.PyTuple_SET_ITEM(UUID.__bases__, 0, std_UUID) + * cpython.Py_INCREF(std_UUID) +*/ + __pyx_t_4 = __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_std_UUID; + __Pyx_INCREF(__pyx_t_4); + Py_INCREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":347 + * assert UUID.__mro__[1] is __UUIDReplaceMe + * cpython.Py_INCREF(std_UUID) + * cpython.PyTuple_SET_ITEM(UUID.__bases__, 0, std_UUID) # <<<<<<<<<<<<<< + * cpython.Py_INCREF(std_UUID) + * cpython.PyTuple_SET_ITEM(UUID.__mro__, 1, std_UUID) +*/ + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID), __pyx_mstate_global->__pyx_n_u_bases); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 347, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_std_UUID; + __Pyx_INCREF(__pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":348 + * cpython.Py_INCREF(std_UUID) + * cpython.PyTuple_SET_ITEM(UUID.__bases__, 0, std_UUID) + * cpython.Py_INCREF(std_UUID) # <<<<<<<<<<<<<< + * cpython.PyTuple_SET_ITEM(UUID.__mro__, 1, std_UUID) + * # +*/ + __pyx_t_2 = __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_std_UUID; + __Pyx_INCREF(__pyx_t_2); + Py_INCREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":349 + * cpython.PyTuple_SET_ITEM(UUID.__bases__, 0, std_UUID) + * cpython.Py_INCREF(std_UUID) + * cpython.PyTuple_SET_ITEM(UUID.__mro__, 1, std_UUID) # <<<<<<<<<<<<<< + * # + * +*/ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID), __pyx_mstate_global->__pyx_n_u_mro); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 349, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_std_UUID; + __Pyx_INCREF(__pyx_t_4); + PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/uuid.pyx":353 + * + * + * cdef gaussdb_UUID = UUID # <<<<<<<<<<<<<< +*/ + __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID); + __Pyx_XGOTREF(__pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_UUID); + __Pyx_DECREF_SET(__pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_UUID, ((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID)); + __Pyx_GIVEREF((PyObject *)__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_UUID); + + /* "async_gaussdb/gaussdbproto/codecs/context.pyx":10 + * cdef class CodecContext: + * + * cpdef get_text_codec(self): # <<<<<<<<<<<<<< + * raise NotImplementedError + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_1get_text_codec, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_CodecContext_get_text_codec, NULL, __pyx_mstate_global->__pyx_n_u_async_gaussdb_gaussdbproto_gauss, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[7])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 10, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext, __pyx_mstate_global->__pyx_n_u_get_text_codec, __pyx_t_4) < 0) __PYX_ERR(4, 10, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/context.pyx":16 + * raise NotImplementedError + * + * cpdef get_json_decoder(self): # <<<<<<<<<<<<<< + * raise NotImplementedError + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_3get_json_decoder, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_CodecContext_get_json_decoder, NULL, __pyx_mstate_global->__pyx_n_u_async_gaussdb_gaussdbproto_gauss, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[8])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext, __pyx_mstate_global->__pyx_n_u_get_json_decoder, __pyx_t_4) < 0) __PYX_ERR(4, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/context.pyx":22 + * return False + * + * cpdef get_json_encoder(self): # <<<<<<<<<<<<<< + * raise NotImplementedError + * +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_5get_json_encoder, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_CodecContext_get_json_encoder, NULL, __pyx_mstate_global->__pyx_n_u_async_gaussdb_gaussdbproto_gauss, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[9])); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext, __pyx_mstate_global->__pyx_n_u_get_json_encoder, __pyx_t_4) < 0) __PYX_ERR(4, 22, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "(tree fragment)":1 + * def __reduce_cython__(self): # <<<<<<<<<<<<<< + * cdef tuple state + * cdef object _dict +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_CodecContext___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_async_gaussdb_gaussdbproto_gauss, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[10])); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_4) < 0) __PYX_ERR(3, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "(tree fragment)":16 + * else: + * return __pyx_unpickle_CodecContext, (type(self), 0xe3b0c44, state) + * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< + * __pyx_unpickle_CodecContext__set_state(self, __pyx_state) +*/ + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_13async_gaussdb_12gaussdbproto_12gaussdbproto_12CodecContext_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_CodecContext___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_async_gaussdb_gaussdbproto_gauss, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[11])); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_13async_gaussdb_12gaussdbproto_12gaussdbproto_CodecContext, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_4) < 0) __PYX_ERR(3, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":9 + * + * cimport cpython.datetime + * import datetime # <<<<<<<<<<<<<< + * + * cpython.datetime.import_datetime() +*/ + __pyx_t_4 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_datetime, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 9, __pyx_L1_error) + __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(13, 9, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":11 + * import datetime + * + * cpython.datetime.import_datetime() # <<<<<<<<<<<<<< + * + * utc = datetime.timezone.utc +*/ + __pyx_f_7cpython_8datetime_import_datetime(); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":13 + * cpython.datetime.import_datetime() + * + * utc = datetime.timezone.utc # <<<<<<<<<<<<<< + * date_from_ordinal = datetime.date.fromordinal + * timedelta = datetime.timedelta +*/ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_utc, __pyx_t_4) < 0) __PYX_ERR(13, 13, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":14 + * + * utc = datetime.timezone.utc + * date_from_ordinal = datetime.date.fromordinal # <<<<<<<<<<<<<< + * timedelta = datetime.timedelta + * +*/ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_date); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_fromordinal); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_date_from_ordinal, __pyx_t_4) < 0) __PYX_ERR(13, 14, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":15 + * utc = datetime.timezone.utc + * date_from_ordinal = datetime.date.fromordinal + * timedelta = datetime.timedelta # <<<<<<<<<<<<<< + * + * gaussdb_epoch_datetime = datetime.datetime(2000, 1, 1) +*/ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_timedelta, __pyx_t_2) < 0) __PYX_ERR(13, 15, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":17 + * timedelta = datetime.timedelta + * + * gaussdb_epoch_datetime = datetime.datetime(2000, 1, 1) # <<<<<<<<<<<<<< + * cdef int32_t gaussdb_epoch_datetime_ts = \ + * cpython.PyLong_AsLong(int(gaussdb_epoch_datetime.timestamp())) +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[2], NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_gaussdb_epoch_datetime, __pyx_t_2) < 0) __PYX_ERR(13, 17, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":19 + * gaussdb_epoch_datetime = datetime.datetime(2000, 1, 1) + * cdef int32_t gaussdb_epoch_datetime_ts = \ + * cpython.PyLong_AsLong(int(gaussdb_epoch_datetime.timestamp())) # <<<<<<<<<<<<<< + * + * gaussdb_epoch_datetime_utc = datetime.datetime(2000, 1, 1, tzinfo=utc) +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_gaussdb_epoch_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_timestamp); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_8, (1-__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; + if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_9 = PyLong_AsLong(__pyx_t_3); if (unlikely(__pyx_t_9 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 19, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_epoch_datetime_ts = ((int32_t)__pyx_t_9); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":21 + * cpython.PyLong_AsLong(int(gaussdb_epoch_datetime.timestamp())) + * + * gaussdb_epoch_datetime_utc = datetime.datetime(2000, 1, 1, tzinfo=utc) # <<<<<<<<<<<<<< + * cdef int32_t gaussdb_epoch_datetime_utc_ts = \ + * cpython.PyLong_AsLong(int(gaussdb_epoch_datetime_utc.timestamp())) +*/ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_4) < 0) __PYX_ERR(13, 21, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[2], __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 21, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_gaussdb_epoch_datetime_utc, __pyx_t_4) < 0) __PYX_ERR(13, 21, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":23 + * gaussdb_epoch_datetime_utc = datetime.datetime(2000, 1, 1, tzinfo=utc) + * cdef int32_t gaussdb_epoch_datetime_utc_ts = \ + * cpython.PyLong_AsLong(int(gaussdb_epoch_datetime_utc.timestamp())) # <<<<<<<<<<<<<< + * + * gaussdb_epoch_date = datetime.date(2000, 1, 1) +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_gaussdb_epoch_datetime_utc); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_timestamp); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__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_4)) __PYX_ERR(13, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + } + __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 23, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_9 = PyLong_AsLong(__pyx_t_5); if (unlikely(__pyx_t_9 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 23, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_epoch_datetime_utc_ts = ((int32_t)__pyx_t_9); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":25 + * cpython.PyLong_AsLong(int(gaussdb_epoch_datetime_utc.timestamp())) + * + * gaussdb_epoch_date = datetime.date(2000, 1, 1) # <<<<<<<<<<<<<< + * cdef int32_t gaussdb_date_offset_ord = \ + * cpython.PyLong_AsLong(gaussdb_epoch_date.toordinal()) +*/ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_date); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_mstate_global->__pyx_tuple[2], NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 25, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_gaussdb_epoch_date, __pyx_t_5) < 0) __PYX_ERR(13, 25, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":27 + * gaussdb_epoch_date = datetime.date(2000, 1, 1) + * cdef int32_t gaussdb_date_offset_ord = \ + * cpython.PyLong_AsLong(gaussdb_epoch_date.toordinal()) # <<<<<<<<<<<<<< + * + * # Binary representations of infinity for datetimes. +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_gaussdb_epoch_date); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_toordinal); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__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_5)) __PYX_ERR(13, 27, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __pyx_t_9 = PyLong_AsLong(__pyx_t_5); if (unlikely(__pyx_t_9 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 27, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_date_offset_ord = ((int32_t)__pyx_t_9); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":30 + * + * # Binary representations of infinity for datetimes. + * cdef int64_t gaussdb_time64_infinity = 0x7fffffffffffffff # <<<<<<<<<<<<<< + * cdef int64_t gaussdb_time64_negative_infinity = 0x8000000000000000 + * cdef int32_t gaussdb_date_infinity = 0x7fffffff +*/ + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_time64_infinity = 0x7fffffffffffffff; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":31 + * # Binary representations of infinity for datetimes. + * cdef int64_t gaussdb_time64_infinity = 0x7fffffffffffffff + * cdef int64_t gaussdb_time64_negative_infinity = 0x8000000000000000 # <<<<<<<<<<<<<< + * cdef int32_t gaussdb_date_infinity = 0x7fffffff + * cdef int32_t gaussdb_date_negative_infinity = 0x80000000 +*/ + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_time64_negative_infinity = ((int64_t)0x8000000000000000); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":32 + * cdef int64_t gaussdb_time64_infinity = 0x7fffffffffffffff + * cdef int64_t gaussdb_time64_negative_infinity = 0x8000000000000000 + * cdef int32_t gaussdb_date_infinity = 0x7fffffff # <<<<<<<<<<<<<< + * cdef int32_t gaussdb_date_negative_infinity = 0x80000000 + * +*/ + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_date_infinity = 0x7fffffff; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":33 + * cdef int64_t gaussdb_time64_negative_infinity = 0x8000000000000000 + * cdef int32_t gaussdb_date_infinity = 0x7fffffff + * cdef int32_t gaussdb_date_negative_infinity = 0x80000000 # <<<<<<<<<<<<<< + * + * infinity_datetime = datetime.datetime( +*/ + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_gaussdb_date_negative_infinity = ((int32_t)0x80000000); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":35 + * cdef int32_t gaussdb_date_negative_infinity = 0x80000000 + * + * infinity_datetime = datetime.datetime( # <<<<<<<<<<<<<< + * datetime.MAXYEAR, 12, 31, 23, 59, 59, 999999) + * +*/ + __pyx_t_2 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":36 + * + * infinity_datetime = datetime.datetime( + * datetime.MAXYEAR, 12, 31, 23, 59, 59, 999999) # <<<<<<<<<<<<<< + * + * cdef int32_t infinity_datetime_ord = cpython.PyLong_AsLong( +*/ + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 36, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_MAXYEAR); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 36, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[8] = {__pyx_t_2, __pyx_t_10, __pyx_mstate_global->__pyx_int_12, __pyx_mstate_global->__pyx_int_31, __pyx_mstate_global->__pyx_int_23, __pyx_mstate_global->__pyx_int_59, __pyx_mstate_global->__pyx_int_59, __pyx_mstate_global->__pyx_int_999999}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_8, (8-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 35, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_infinity_datetime, __pyx_t_5) < 0) __PYX_ERR(13, 35, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":39 + * + * cdef int32_t infinity_datetime_ord = cpython.PyLong_AsLong( + * infinity_datetime.toordinal()) # <<<<<<<<<<<<<< + * + * cdef int64_t infinity_datetime_ts = 252455615999999999 +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_infinity_datetime); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 39, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_toordinal); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 39, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 39, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":38 + * datetime.MAXYEAR, 12, 31, 23, 59, 59, 999999) + * + * cdef int32_t infinity_datetime_ord = cpython.PyLong_AsLong( # <<<<<<<<<<<<<< + * infinity_datetime.toordinal()) + * +*/ + __pyx_t_9 = PyLong_AsLong(__pyx_t_5); if (unlikely(__pyx_t_9 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 38, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_infinity_datetime_ord = ((int32_t)__pyx_t_9); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":41 + * infinity_datetime.toordinal()) + * + * cdef int64_t infinity_datetime_ts = 252455615999999999 # <<<<<<<<<<<<<< + * + * negative_infinity_datetime = datetime.datetime( +*/ + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_infinity_datetime_ts = 0x380E70B913B7FFF; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":43 + * cdef int64_t infinity_datetime_ts = 252455615999999999 + * + * negative_infinity_datetime = datetime.datetime( # <<<<<<<<<<<<<< + * datetime.MINYEAR, 1, 1, 0, 0, 0, 0) + * +*/ + __pyx_t_2 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":44 + * + * negative_infinity_datetime = datetime.datetime( + * datetime.MINYEAR, 1, 1, 0, 0, 0, 0) # <<<<<<<<<<<<<< + * + * cdef int32_t negative_infinity_datetime_ord = cpython.PyLong_AsLong( +*/ + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 44, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_MINYEAR); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 44, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[8] = {__pyx_t_2, __pyx_t_4, __pyx_mstate_global->__pyx_int_1, __pyx_mstate_global->__pyx_int_1, __pyx_mstate_global->__pyx_int_0, __pyx_mstate_global->__pyx_int_0, __pyx_mstate_global->__pyx_int_0, __pyx_mstate_global->__pyx_int_0}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+__pyx_t_8, (8-__pyx_t_8) | (__pyx_t_8*__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_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 43, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_negative_infinity_datetime, __pyx_t_5) < 0) __PYX_ERR(13, 43, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":47 + * + * cdef int32_t negative_infinity_datetime_ord = cpython.PyLong_AsLong( + * negative_infinity_datetime.toordinal()) # <<<<<<<<<<<<<< + * + * cdef int64_t negative_infinity_datetime_ts = -63082281600000000 +*/ + __pyx_t_10 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_negative_infinity_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_toordinal); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__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_5)) __PYX_ERR(13, 47, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":46 + * datetime.MINYEAR, 1, 1, 0, 0, 0, 0) + * + * cdef int32_t negative_infinity_datetime_ord = cpython.PyLong_AsLong( # <<<<<<<<<<<<<< + * negative_infinity_datetime.toordinal()) + * +*/ + __pyx_t_9 = PyLong_AsLong(__pyx_t_5); if (unlikely(__pyx_t_9 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 46, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_negative_infinity_datetime_ord = ((int32_t)__pyx_t_9); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":49 + * negative_infinity_datetime.toordinal()) + * + * cdef int64_t negative_infinity_datetime_ts = -63082281600000000 # <<<<<<<<<<<<<< + * + * infinity_date = datetime.date(datetime.MAXYEAR, 12, 31) +*/ + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_negative_infinity_datetime_ts = -63082281600000000L; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":51 + * cdef int64_t negative_infinity_datetime_ts = -63082281600000000 + * + * infinity_date = datetime.date(datetime.MAXYEAR, 12, 31) # <<<<<<<<<<<<<< + * + * cdef int32_t infinity_date_ord = cpython.PyLong_AsLong( +*/ + __pyx_t_2 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 51, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_date); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 51, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 51, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_MAXYEAR); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 51, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_t_3, __pyx_mstate_global->__pyx_int_12, __pyx_mstate_global->__pyx_int_31}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_8, (4-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 51, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_infinity_date, __pyx_t_5) < 0) __PYX_ERR(13, 51, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":54 + * + * cdef int32_t infinity_date_ord = cpython.PyLong_AsLong( + * infinity_date.toordinal()) # <<<<<<<<<<<<<< + * + * negative_infinity_date = datetime.date(datetime.MINYEAR, 1, 1) +*/ + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_infinity_date); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_toordinal); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__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_5)) __PYX_ERR(13, 54, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":53 + * infinity_date = datetime.date(datetime.MAXYEAR, 12, 31) + * + * cdef int32_t infinity_date_ord = cpython.PyLong_AsLong( # <<<<<<<<<<<<<< + * infinity_date.toordinal()) + * +*/ + __pyx_t_9 = PyLong_AsLong(__pyx_t_5); if (unlikely(__pyx_t_9 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 53, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_infinity_date_ord = ((int32_t)__pyx_t_9); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":56 + * infinity_date.toordinal()) + * + * negative_infinity_date = datetime.date(datetime.MINYEAR, 1, 1) # <<<<<<<<<<<<<< + * + * cdef int32_t negative_infinity_date_ord = cpython.PyLong_AsLong( +*/ + __pyx_t_2 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_date); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_MINYEAR); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_t_10, __pyx_mstate_global->__pyx_int_1, __pyx_mstate_global->__pyx_int_1}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_8, (4-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 56, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_negative_infinity_date, __pyx_t_5) < 0) __PYX_ERR(13, 56, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":59 + * + * cdef int32_t negative_infinity_date_ord = cpython.PyLong_AsLong( + * negative_infinity_date.toordinal()) # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_3 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_negative_infinity_date); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_toordinal); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __pyx_t_8 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 59, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":58 + * negative_infinity_date = datetime.date(datetime.MINYEAR, 1, 1) + * + * cdef int32_t negative_infinity_date_ord = cpython.PyLong_AsLong( # <<<<<<<<<<<<<< + * negative_infinity_date.toordinal()) + * +*/ + __pyx_t_9 = PyLong_AsLong(__pyx_t_5); if (unlikely(__pyx_t_9 == ((long)-1) && PyErr_Occurred())) __PYX_ERR(13, 58, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_v_13async_gaussdb_12gaussdbproto_12gaussdbproto_negative_infinity_date_ord = ((int32_t)__pyx_t_9); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":11 + * from libc.stdio cimport snprintf + * + * import decimal # <<<<<<<<<<<<<< + * + * # defined in GaussDBsql/src/backend/utils/adt/numeric.c +*/ + __pyx_t_5 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_decimal, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_decimal, __pyx_t_5) < 0) __PYX_ERR(18, 11, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":22 + * DEF NUMERIC_NINF = 0xF000 + * + * _Dec = decimal.Decimal # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_decimal); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Decimal); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 22, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_Dec, __pyx_t_2) < 0) __PYX_ERR(18, 22, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":8 + * + * + * import ipaddress # <<<<<<<<<<<<<< + * + * +*/ + __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_ipaddress, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ipaddress, __pyx_t_2) < 0) __PYX_ERR(23, 8, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":17 + * + * + * _ipaddr = ipaddress.ip_address # <<<<<<<<<<<<<< + * _ipiface = ipaddress.ip_interface + * _ipnet = ipaddress.ip_network +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ipaddress); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ip_address); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ipaddr, __pyx_t_5) < 0) __PYX_ERR(23, 17, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":18 + * + * _ipaddr = ipaddress.ip_address + * _ipiface = ipaddress.ip_interface # <<<<<<<<<<<<<< + * _ipnet = ipaddress.ip_network + * +*/ + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ipaddress); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ip_interface); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 18, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ipiface, __pyx_t_2) < 0) __PYX_ERR(23, 18, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "async_gaussdb/gaussdbproto/codecs/network.pyx":19 + * _ipaddr = ipaddress.ip_address + * _ipiface = ipaddress.ip_interface + * _ipnet = ipaddress.ip_network # <<<<<<<<<<<<<< + * + * +*/ + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ipaddress); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ip_network); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 19, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ipnet, __pyx_t_5) < 0) __PYX_ERR(23, 19, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "(tree fragment)":1 + * def __pyx_unpickle___UUIDReplaceMe(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError + * cdef object __pyx_result +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13async_gaussdb_12gaussdbproto_12gaussdbproto_1__pyx_unpickle___UUIDReplaceMe, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle___UUIDReplaceMe, NULL, __pyx_mstate_global->__pyx_n_u_async_gaussdb_gaussdbproto_gauss, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[12])); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle___UUIDReplaceMe, __pyx_t_5) < 0) __PYX_ERR(3, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "(tree fragment)":11 + * __pyx_unpickle___UUIDReplaceMe__set_state(<__UUIDReplaceMe> __pyx_result, __pyx_state) + * return __pyx_result + * cdef __pyx_unpickle___UUIDReplaceMe__set_state(__UUIDReplaceMe __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[0]) +*/ + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_13async_gaussdb_12gaussdbproto_12gaussdbproto_3__pyx_unpickle_CodecContext, 0, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_CodecContext, NULL, __pyx_mstate_global->__pyx_n_u_async_gaussdb_gaussdbproto_gauss, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[13])); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_CodecContext, __pyx_t_5) < 0) __PYX_ERR(3, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "async_gaussdb/gaussdbproto/gaussdbproto.pyx":1 + * # Copyright (C) 2016-present the asyncpg authors and contributors # <<<<<<<<<<<<<< + * # + * # +*/ + __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_5) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /*--- Wrapped vars code ---*/ + + 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_10); + if (__pyx_m) { + if (__pyx_mstate->__pyx_d && stringtab_initialized) { + __Pyx_AddTraceback("init async_gaussdb.gaussdbproto.gaussdbproto", __pyx_clineno, __pyx_lineno, __pyx_filename); + } + #if !CYTHON_USE_MODULE_STATE + Py_CLEAR(__pyx_m); + #else + Py_DECREF(__pyx_m); + if (pystate_addmodule_run) { + PyObject *tp, *value, *tb; + PyErr_Fetch(&tp, &value, &tb); + PyState_RemoveModule(&__pyx_moduledef); + PyErr_Restore(tp, value, tb); + } + #endif + } else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ImportError, "init async_gaussdb.gaussdbproto.gaussdbproto"); + } + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + #if CYTHON_PEP489_MULTI_PHASE_INIT + return (__pyx_m != NULL) ? 0 : -1; + #else + return __pyx_m; + #endif +} +/* #### Code section: pystring_table ### */ + +typedef struct { + const char *s; +#if 73 <= 65535 + const unsigned short n; +#elif 73 / 2 < INT_MAX + const unsigned int n; +#elif 73 / 2 < LONG_MAX + const unsigned long n; +#else + const Py_ssize_t n; +#endif +#if 1 <= 31 + const unsigned int encoding : 5; +#elif 1 <= 255 + const unsigned char encoding; +#elif 1 <= 65535 + const unsigned short encoding; +#else + const Py_ssize_t encoding; +#endif + const unsigned int is_unicode : 1; + const unsigned int intern : 1; +} __Pyx_StringTabEntry; +static const char * const __pyx_string_tab_encodings[] = { 0 }; +static const __Pyx_StringTabEntry __pyx_string_tab[] = { + {__pyx_k_, sizeof(__pyx_k_), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ */ + {__pyx_k_, sizeof(__pyx_k_), 0, 0, 0}, /* PyObject cname: __pyx_kp_b_ */ + {__pyx_k_, sizeof(__pyx_k_), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_ */ + {__pyx_k_0e, sizeof(__pyx_k_0e), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_0e */ + {__pyx_k_16_bytes_were_expected_got, sizeof(__pyx_k_16_bytes_were_expected_got), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_16_bytes_were_expected_got */ + {__pyx_k_AssertionError, sizeof(__pyx_k_AssertionError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_AssertionError */ + {__pyx_k_BitString, sizeof(__pyx_k_BitString), 0, 1, 1}, /* PyObject cname: __pyx_n_u_BitString */ + {__pyx_k_Box, sizeof(__pyx_k_Box), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Box */ + {__pyx_k_BufferError, sizeof(__pyx_k_BufferError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_BufferError */ + {__pyx_k_Circle, sizeof(__pyx_k_Circle), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Circle */ + {__pyx_k_CodecContext, sizeof(__pyx_k_CodecContext), 0, 1, 1}, /* PyObject cname: __pyx_n_u_CodecContext */ + {__pyx_k_CodecContext___reduce_cython, sizeof(__pyx_k_CodecContext___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_CodecContext___reduce_cython */ + {__pyx_k_CodecContext___setstate_cython, sizeof(__pyx_k_CodecContext___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_CodecContext___setstate_cython */ + {__pyx_k_CodecContext_get_json_decoder, sizeof(__pyx_k_CodecContext_get_json_decoder), 0, 1, 1}, /* PyObject cname: __pyx_n_u_CodecContext_get_json_decoder */ + {__pyx_k_CodecContext_get_json_encoder, sizeof(__pyx_k_CodecContext_get_json_encoder), 0, 1, 1}, /* PyObject cname: __pyx_n_u_CodecContext_get_json_encoder */ + {__pyx_k_CodecContext_get_text_codec, sizeof(__pyx_k_CodecContext_get_text_codec), 0, 1, 1}, /* PyObject cname: __pyx_n_u_CodecContext_get_text_codec */ + {__pyx_k_Deallocating_buffer_with_attache, sizeof(__pyx_k_Deallocating_buffer_with_attache), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Deallocating_buffer_with_attache */ + {__pyx_k_Dec, sizeof(__pyx_k_Dec), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Dec */ + {__pyx_k_Decimal, sizeof(__pyx_k_Decimal), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Decimal */ + {__pyx_k_F, sizeof(__pyx_k_F), 0, 1, 1}, /* PyObject cname: __pyx_n_u_F */ + {__pyx_k_Incompatible_checksums_0x_x_vs_0, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Incompatible_checksums_0x_x_vs_0 */ + {__pyx_k_Infinity, sizeof(__pyx_k_Infinity), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Infinity */ + {__pyx_k_Infinity_2, sizeof(__pyx_k_Infinity_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Infinity_2 */ + {__pyx_k_Line, sizeof(__pyx_k_Line), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Line */ + {__pyx_k_LineSegment, sizeof(__pyx_k_LineSegment), 0, 1, 1}, /* PyObject cname: __pyx_n_u_LineSegment */ + {__pyx_k_MAXYEAR, sizeof(__pyx_k_MAXYEAR), 0, 1, 1}, /* PyObject cname: __pyx_n_u_MAXYEAR */ + {__pyx_k_MINYEAR, sizeof(__pyx_k_MINYEAR), 0, 1, 1}, /* PyObject cname: __pyx_n_u_MINYEAR */ + {__pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_MemoryError */ + {__pyx_k_N, sizeof(__pyx_k_N), 0, 1, 1}, /* PyObject cname: __pyx_n_u_N */ + {__pyx_k_NaN, sizeof(__pyx_k_NaN), 0, 1, 1}, /* PyObject cname: __pyx_n_u_NaN */ + {__pyx_k_NotImplemented, sizeof(__pyx_k_NotImplemented), 0, 1, 1}, /* PyObject cname: __pyx_n_u_NotImplemented */ + {__pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_NotImplementedError */ + {__pyx_k_OverflowError, sizeof(__pyx_k_OverflowError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_OverflowError */ + {__pyx_k_Path, sizeof(__pyx_k_Path), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Path */ + {__pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_PickleError */ + {__pyx_k_Point, sizeof(__pyx_k_Point), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Point */ + {__pyx_k_Polygon, sizeof(__pyx_k_Polygon), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Polygon */ + {__pyx_k_RESERVED_FUTURE, sizeof(__pyx_k_RESERVED_FUTURE), 0, 1, 1}, /* PyObject cname: __pyx_n_u_RESERVED_FUTURE */ + {__pyx_k_RESERVED_MICROSOFT, sizeof(__pyx_k_RESERVED_MICROSOFT), 0, 1, 1}, /* PyObject cname: __pyx_n_u_RESERVED_MICROSOFT */ + {__pyx_k_RESERVED_NCS, sizeof(__pyx_k_RESERVED_NCS), 0, 1, 1}, /* PyObject cname: __pyx_n_u_RESERVED_NCS */ + {__pyx_k_RFC_4122, sizeof(__pyx_k_RFC_4122), 0, 1, 1}, /* PyObject cname: __pyx_n_u_RFC_4122 */ + {__pyx_k_ReadBuffer, sizeof(__pyx_k_ReadBuffer), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ReadBuffer */ + {__pyx_k_ReadBuffer___reduce_cython, sizeof(__pyx_k_ReadBuffer___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ReadBuffer___reduce_cython */ + {__pyx_k_ReadBuffer___setstate_cython, sizeof(__pyx_k_ReadBuffer___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ReadBuffer___setstate_cython */ + {__pyx_k_SafeUUID, sizeof(__pyx_k_SafeUUID), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SafeUUID */ + {__pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_TypeError */ + {__pyx_k_UUID, sizeof(__pyx_k_UUID), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_UUID */ + {__pyx_k_UUIDReplaceMe, sizeof(__pyx_k_UUIDReplaceMe), 0, 1, 1}, /* PyObject cname: __pyx_n_u_UUIDReplaceMe */ + {__pyx_k_UUIDReplaceMe___reduce_cython, sizeof(__pyx_k_UUIDReplaceMe___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_UUIDReplaceMe___reduce_cython */ + {__pyx_k_UUIDReplaceMe___setstate_cytho, sizeof(__pyx_k_UUIDReplaceMe___setstate_cytho), 0, 1, 1}, /* PyObject cname: __pyx_n_u_UUIDReplaceMe___setstate_cytho */ + {__pyx_k_UUID_2, sizeof(__pyx_k_UUID_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_UUID_2 */ + {__pyx_k_UUID___reduce, sizeof(__pyx_k_UUID___reduce), 0, 1, 1}, /* PyObject cname: __pyx_n_u_UUID___reduce */ + {__pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ValueError */ + {__pyx_k_WriteBuffer, sizeof(__pyx_k_WriteBuffer), 0, 1, 1}, /* PyObject cname: __pyx_n_u_WriteBuffer */ + {__pyx_k_WriteBuffer___reduce_cython, sizeof(__pyx_k_WriteBuffer___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_WriteBuffer___reduce_cython */ + {__pyx_k_WriteBuffer___setstate_cython, sizeof(__pyx_k_WriteBuffer___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_WriteBuffer___setstate_cython */ + {__pyx_k__2, sizeof(__pyx_k__2), 0, 0, 0}, /* PyObject cname: __pyx_kp_b__2 */ + {__pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__3 */ + {__pyx_k__4, sizeof(__pyx_k__4), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__4 */ + {__pyx_k__5, sizeof(__pyx_k__5), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__5 */ + {__pyx_k_a_boolean_is_required_got_type, sizeof(__pyx_k_a_boolean_is_required_got_type), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_a_boolean_is_required_got_type */ + {__pyx_k_a_bytes_or_str_object_expected_g, sizeof(__pyx_k_a_bytes_or_str_object_expected_g), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_a_bytes_or_str_object_expected_g */ + {__pyx_k_add, sizeof(__pyx_k_add), 0, 1, 1}, /* PyObject cname: __pyx_n_u_add */ + {__pyx_k_append, sizeof(__pyx_k_append), 0, 1, 1}, /* PyObject cname: __pyx_n_u_append */ + {__pyx_k_as_tuple, sizeof(__pyx_k_as_tuple), 0, 1, 1}, /* PyObject cname: __pyx_n_u_as_tuple */ + {__pyx_k_astimezone, sizeof(__pyx_k_astimezone), 0, 1, 1}, /* PyObject cname: __pyx_n_u_astimezone */ + {__pyx_k_async_gaussdb_gaussdbproto_codec, sizeof(__pyx_k_async_gaussdb_gaussdbproto_codec), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_async_gaussdb_gaussdbproto_codec */ + {__pyx_k_async_gaussdb_gaussdbproto_gauss, sizeof(__pyx_k_async_gaussdb_gaussdbproto_gauss), 0, 1, 1}, /* PyObject cname: __pyx_n_u_async_gaussdb_gaussdbproto_gauss */ + {__pyx_k_async_gaussdb_gaussdbproto_uuid, sizeof(__pyx_k_async_gaussdb_gaussdbproto_uuid), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_async_gaussdb_gaussdbproto_uuid */ + {__pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 1, 1}, /* PyObject cname: __pyx_n_u_asyncio_coroutines */ + {__pyx_k_bases, sizeof(__pyx_k_bases), 0, 1, 1}, /* PyObject cname: __pyx_n_u_bases */ + {__pyx_k_big, sizeof(__pyx_k_big), 0, 1, 1}, /* PyObject cname: __pyx_n_u_big */ + {__pyx_k_bit_value_too_long, sizeof(__pyx_k_bit_value_too_long), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_bit_value_too_long */ + {__pyx_k_buffer_overread, sizeof(__pyx_k_buffer_overread), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_buffer_overread */ + {__pyx_k_bytes, sizeof(__pyx_k_bytes), 0, 1, 1}, /* PyObject cname: __pyx_n_u_bytes */ + {__pyx_k_cannot_decode_UUID_expected_16_b, sizeof(__pyx_k_cannot_decode_UUID_expected_16_b), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_decode_UUID_expected_16_b */ + {__pyx_k_cannot_encode_Decimal_value_into, sizeof(__pyx_k_cannot_encode_Decimal_value_into), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_encode_Decimal_value_into */ + {__pyx_k_cannot_encode_Decimal_value_into_2, sizeof(__pyx_k_cannot_encode_Decimal_value_into_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_encode_Decimal_value_into_2 */ + {__pyx_k_cannot_encode_Decimal_value_into_3, sizeof(__pyx_k_cannot_encode_Decimal_value_into_3), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_encode_Decimal_value_into_3 */ + {__pyx_k_cannot_put_message_no_message_ta, sizeof(__pyx_k_cannot_put_message_no_message_ta), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_put_message_no_message_ta */ + {__pyx_k_cannot_start_message_for_a_non_e, sizeof(__pyx_k_cannot_start_message_for_a_non_e), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_start_message_for_a_non_e */ + {__pyx_k_cidr, sizeof(__pyx_k_cidr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_cidr */ + {__pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 1, 1}, /* PyObject cname: __pyx_n_u_class_getitem */ + {__pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 1, 1}, /* PyObject cname: __pyx_n_u_cline_in_traceback */ + {__pyx_k_clock_seq_hi_variant, sizeof(__pyx_k_clock_seq_hi_variant), 0, 1, 1}, /* PyObject cname: __pyx_n_u_clock_seq_hi_variant */ + {__pyx_k_clock_seq_low, sizeof(__pyx_k_clock_seq_low), 0, 1, 1}, /* PyObject cname: __pyx_n_u_clock_seq_low */ + {__pyx_k_collections, sizeof(__pyx_k_collections), 0, 1, 1}, /* PyObject cname: __pyx_n_u_collections */ + {__pyx_k_consume_full_messages_called_on, sizeof(__pyx_k_consume_full_messages_called_on), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_consume_full_messages_called_on */ + {__pyx_k_consume_full_messages_called_on_2, sizeof(__pyx_k_consume_full_messages_called_on_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_consume_full_messages_called_on_2 */ + {__pyx_k_consume_full_messages_called_wit, sizeof(__pyx_k_consume_full_messages_called_wit), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_consume_full_messages_called_wit */ + {__pyx_k_date, sizeof(__pyx_k_date), 0, 1, 1}, /* PyObject cname: __pyx_n_u_date */ + {__pyx_k_date_from_ordinal, sizeof(__pyx_k_date_from_ordinal), 0, 1, 1}, /* PyObject cname: __pyx_n_u_date_from_ordinal */ + {__pyx_k_date_tuple_encoder_expecting_1_e, sizeof(__pyx_k_date_tuple_encoder_expecting_1_e), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_date_tuple_encoder_expecting_1_e */ + {__pyx_k_datetime, sizeof(__pyx_k_datetime), 0, 1, 1}, /* PyObject cname: __pyx_n_u_datetime */ + {__pyx_k_day, sizeof(__pyx_k_day), 0, 1, 1}, /* PyObject cname: __pyx_n_u_day */ + {__pyx_k_days, sizeof(__pyx_k_days), 0, 1, 1}, /* PyObject cname: __pyx_n_u_days */ + {__pyx_k_debug_first_buffer_of_ReadBuffer, sizeof(__pyx_k_debug_first_buffer_of_ReadBuffer), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_debug_first_buffer_of_ReadBuffer */ + {__pyx_k_debug_second_buffer_of_ReadBuffe, sizeof(__pyx_k_debug_second_buffer_of_ReadBuffe), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_debug_second_buffer_of_ReadBuffe */ + {__pyx_k_decimal, sizeof(__pyx_k_decimal), 0, 1, 1}, /* PyObject cname: __pyx_n_u_decimal */ + {__pyx_k_decode, sizeof(__pyx_k_decode), 0, 1, 1}, /* PyObject cname: __pyx_n_u_decode */ + {__pyx_k_decodes_to_less_than_16_bytes, sizeof(__pyx_k_decodes_to_less_than_16_bytes), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_decodes_to_less_than_16_bytes */ + {__pyx_k_decodes_to_more_than_16_bytes, sizeof(__pyx_k_decodes_to_more_than_16_bytes), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_decodes_to_more_than_16_bytes */ + {__pyx_k_deque, sizeof(__pyx_k_deque), 0, 1, 1}, /* PyObject cname: __pyx_n_u_deque */ + {__pyx_k_dict, sizeof(__pyx_k_dict), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dict */ + {__pyx_k_dict_2, sizeof(__pyx_k_dict_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dict_2 */ + {__pyx_k_digits, sizeof(__pyx_k_digits), 0, 1, 1}, /* PyObject cname: __pyx_n_u_digits */ + {__pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_disable */ + {__pyx_k_discarding_message_r_unread_dat, sizeof(__pyx_k_discarding_message_r_unread_dat), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_discarding_message_r_unread_dat */ + {__pyx_k_doc, sizeof(__pyx_k_doc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_doc */ + {__pyx_k_empty_buffer, sizeof(__pyx_k_empty_buffer), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_empty_buffer */ + {__pyx_k_empty_first_buffer, sizeof(__pyx_k_empty_first_buffer), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_empty_first_buffer */ + {__pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_enable */ + {__pyx_k_encode, sizeof(__pyx_k_encode), 0, 1, 1}, /* PyObject cname: __pyx_n_u_encode */ + {__pyx_k_end_message_buffer_is_too_small, sizeof(__pyx_k_end_message_buffer_is_too_small), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_end_message_buffer_is_too_small */ + {__pyx_k_end_message_can_only_be_called_w, sizeof(__pyx_k_end_message_can_only_be_called_w), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_end_message_can_only_be_called_w */ + {__pyx_k_end_message_message_is_too_large, sizeof(__pyx_k_end_message_message_is_too_large), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_end_message_message_is_too_large */ + {__pyx_k_expected_a_datetime_date_or_date, sizeof(__pyx_k_expected_a_datetime_date_or_date), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_expected_a_datetime_date_or_date */ + {__pyx_k_expected_str_got, sizeof(__pyx_k_expected_str_got), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_expected_str_got */ + {__pyx_k_exponent, sizeof(__pyx_k_exponent), 0, 1, 1}, /* PyObject cname: __pyx_n_u_exponent */ + {__pyx_k_failed_to_read_one_byte_on_a_non, sizeof(__pyx_k_failed_to_read_one_byte_on_a_non), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_failed_to_read_one_byte_on_a_non */ + {__pyx_k_feed_data_a_bytes_or_bytearray_o, sizeof(__pyx_k_feed_data_a_bytes_or_bytearray_o), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_feed_data_a_bytes_or_bytearray_o */ + {__pyx_k_find, sizeof(__pyx_k_find), 0, 1, 1}, /* PyObject cname: __pyx_n_u_find */ + {__pyx_k_format, sizeof(__pyx_k_format), 0, 1, 1}, /* PyObject cname: __pyx_n_u_format */ + {__pyx_k_from_bytes, sizeof(__pyx_k_from_bytes), 0, 1, 1}, /* PyObject cname: __pyx_n_u_from_bytes */ + {__pyx_k_frombytes, sizeof(__pyx_k_frombytes), 0, 1, 1}, /* PyObject cname: __pyx_n_u_frombytes */ + {__pyx_k_fromordinal, sizeof(__pyx_k_fromordinal), 0, 1, 1}, /* PyObject cname: __pyx_n_u_fromordinal */ + {__pyx_k_func, sizeof(__pyx_k_func), 0, 1, 1}, /* PyObject cname: __pyx_n_u_func */ + {__pyx_k_functools, sizeof(__pyx_k_functools), 0, 1, 1}, /* PyObject cname: __pyx_n_u_functools */ + {__pyx_k_gaussdb_epoch_date, sizeof(__pyx_k_gaussdb_epoch_date), 0, 1, 1}, /* PyObject cname: __pyx_n_u_gaussdb_epoch_date */ + {__pyx_k_gaussdb_epoch_datetime, sizeof(__pyx_k_gaussdb_epoch_datetime), 0, 1, 1}, /* PyObject cname: __pyx_n_u_gaussdb_epoch_datetime */ + {__pyx_k_gaussdb_epoch_datetime_utc, sizeof(__pyx_k_gaussdb_epoch_datetime_utc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_gaussdb_epoch_datetime_utc */ + {__pyx_k_gaussdbproto_types, sizeof(__pyx_k_gaussdbproto_types), 0, 1, 1}, /* PyObject cname: __pyx_n_u_gaussdbproto_types */ + {__pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_gc */ + {__pyx_k_get_json_decoder, sizeof(__pyx_k_get_json_decoder), 0, 1, 1}, /* PyObject cname: __pyx_n_u_get_json_decoder */ + {__pyx_k_get_json_encoder, sizeof(__pyx_k_get_json_encoder), 0, 1, 1}, /* PyObject cname: __pyx_n_u_get_json_encoder */ + {__pyx_k_get_text_codec, sizeof(__pyx_k_get_text_codec), 0, 1, 1}, /* PyObject cname: __pyx_n_u_get_text_codec */ + {__pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_getstate */ + {__pyx_k_hour, sizeof(__pyx_k_hour), 0, 1, 1}, /* PyObject cname: __pyx_n_u_hour */ + {__pyx_k_hstore_value_is_too_large, sizeof(__pyx_k_hstore_value_is_too_large), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_hstore_value_is_too_large */ + {__pyx_k_inet, sizeof(__pyx_k_inet), 0, 1, 1}, /* PyObject cname: __pyx_n_u_inet */ + {__pyx_k_infinity_date, sizeof(__pyx_k_infinity_date), 0, 1, 1}, /* PyObject cname: __pyx_n_u_infinity_date */ + {__pyx_k_infinity_datetime, sizeof(__pyx_k_infinity_datetime), 0, 1, 1}, /* PyObject cname: __pyx_n_u_infinity_datetime */ + {__pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 1, 1}, /* PyObject cname: __pyx_n_u_initializing */ + {__pyx_k_inp, sizeof(__pyx_k_inp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_inp */ + {__pyx_k_insufficient_data_in_buffer_requ, sizeof(__pyx_k_insufficient_data_in_buffer_requ), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_insufficient_data_in_buffer_requ */ + {__pyx_k_int, sizeof(__pyx_k_int), 0, 1, 1}, /* PyObject cname: __pyx_n_u_int */ + {__pyx_k_int_2, sizeof(__pyx_k_int_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_int_2 */ + {__pyx_k_interval_tuple_encoder_expecting, sizeof(__pyx_k_interval_tuple_encoder_expecting), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_interval_tuple_encoder_expecting */ + {__pyx_k_invalid_UUID, sizeof(__pyx_k_invalid_UUID), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_UUID */ + {__pyx_k_invalid_UUID_u_r_unexpected_char, sizeof(__pyx_k_invalid_UUID_u_r_unexpected_char), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_UUID_u_r_unexpected_char */ + {__pyx_k_invalid_address_family_in_value, sizeof(__pyx_k_invalid_address_family_in_value), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_address_family_in_value */ + {__pyx_k_invalid_address_length_in_value, sizeof(__pyx_k_invalid_address_length_in_value), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_address_length_in_value */ + {__pyx_k_invalid_network_prefix_length_in, sizeof(__pyx_k_invalid_network_prefix_length_in), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_network_prefix_length_in */ + {__pyx_k_invalid_number_of_elements_in_ti, sizeof(__pyx_k_invalid_number_of_elements_in_ti), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_number_of_elements_in_ti */ + {__pyx_k_invalid_number_of_elements_in_tx, sizeof(__pyx_k_invalid_number_of_elements_in_tx), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_number_of_elements_in_tx */ + {__pyx_k_ip_address, sizeof(__pyx_k_ip_address), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ip_address */ + {__pyx_k_ip_interface, sizeof(__pyx_k_ip_interface), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ip_interface */ + {__pyx_k_ip_network, sizeof(__pyx_k_ip_network), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ip_network */ + {__pyx_k_ipaddr, sizeof(__pyx_k_ipaddr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ipaddr */ + {__pyx_k_ipaddress, sizeof(__pyx_k_ipaddress), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ipaddress */ + {__pyx_k_ipiface, sizeof(__pyx_k_ipiface), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ipiface */ + {__pyx_k_ipnet, sizeof(__pyx_k_ipnet), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ipnet */ + {__pyx_k_is_closed, sizeof(__pyx_k_is_closed), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_closed */ + {__pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_coroutine */ + {__pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_isenabled */ + {__pyx_k_items, sizeof(__pyx_k_items), 0, 1, 1}, /* PyObject cname: __pyx_n_u_items */ + {__pyx_k_len, sizeof(__pyx_k_len), 0, 1, 1}, /* PyObject cname: __pyx_n_u_len */ + {__pyx_k_length_must_be_between_32_36_ch, sizeof(__pyx_k_length_must_be_between_32_36_ch), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_length_must_be_between_32_36_ch */ + {__pyx_k_list_or_tuple_expected_got_type, sizeof(__pyx_k_list_or_tuple_expected_got_type), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_list_or_tuple_expected_got_type */ + {__pyx_k_main, sizeof(__pyx_k_main), 0, 1, 1}, /* PyObject cname: __pyx_n_u_main */ + {__pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 1, 1}, /* PyObject cname: __pyx_n_u_metaclass */ + {__pyx_k_microsecond, sizeof(__pyx_k_microsecond), 0, 1, 1}, /* PyObject cname: __pyx_n_u_microsecond */ + {__pyx_k_microseconds, sizeof(__pyx_k_microseconds), 0, 1, 1}, /* PyObject cname: __pyx_n_u_microseconds */ + {__pyx_k_minute, sizeof(__pyx_k_minute), 0, 1, 1}, /* PyObject cname: __pyx_n_u_minute */ + {__pyx_k_minutes, sizeof(__pyx_k_minutes), 0, 1, 1}, /* PyObject cname: __pyx_n_u_minutes */ + {__pyx_k_module, sizeof(__pyx_k_module), 0, 1, 1}, /* PyObject cname: __pyx_n_u_module */ + {__pyx_k_month, sizeof(__pyx_k_month), 0, 1, 1}, /* PyObject cname: __pyx_n_u_month */ + {__pyx_k_mro, sizeof(__pyx_k_mro), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mro */ + {__pyx_k_mro_entries, sizeof(__pyx_k_mro_entries), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mro_entries */ + {__pyx_k_n, sizeof(__pyx_k_n), 0, 1, 1}, /* PyObject cname: __pyx_n_u_n */ + {__pyx_k_name, sizeof(__pyx_k_name), 0, 1, 1}, /* PyObject cname: __pyx_n_u_name */ + {__pyx_k_negative_infinity_date, sizeof(__pyx_k_negative_infinity_date), 0, 1, 1}, /* PyObject cname: __pyx_n_u_negative_infinity_date */ + {__pyx_k_negative_infinity_datetime, sizeof(__pyx_k_negative_infinity_datetime), 0, 1, 1}, /* PyObject cname: __pyx_n_u_negative_infinity_datetime */ + {__pyx_k_negative_length_for_a_len_prefix, sizeof(__pyx_k_negative_length_for_a_len_prefix), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_negative_length_for_a_len_prefix */ + {__pyx_k_network, sizeof(__pyx_k_network), 0, 1, 1}, /* PyObject cname: __pyx_n_u_network */ + {__pyx_k_network_address, sizeof(__pyx_k_network_address), 0, 1, 1}, /* PyObject cname: __pyx_n_u_network_address */ + {__pyx_k_new, sizeof(__pyx_k_new), 0, 1, 1}, /* PyObject cname: __pyx_n_u_new */ + {__pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_no_default___reduce___due_to_non */ + {__pyx_k_no_message_to_consume, sizeof(__pyx_k_no_message_to_consume), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_no_message_to_consume */ + {__pyx_k_no_message_to_discard, sizeof(__pyx_k_no_message_to_discard), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_no_message_to_discard */ + {__pyx_k_node, sizeof(__pyx_k_node), 0, 1, 1}, /* PyObject cname: __pyx_n_u_node */ + {__pyx_k_not_enough_data_to_read_bytes, sizeof(__pyx_k_not_enough_data_to_read_bytes), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_not_enough_data_to_read_bytes */ + {__pyx_k_not_enough_data_to_read_one_byte, sizeof(__pyx_k_not_enough_data_to_read_one_byte), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_not_enough_data_to_read_one_byte */ + {__pyx_k_now, sizeof(__pyx_k_now), 0, 1, 1}, /* PyObject cname: __pyx_n_u_now */ + {__pyx_k_null_value_not_allowed_in_hstore, sizeof(__pyx_k_null_value_not_allowed_in_hstore), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_null_value_not_allowed_in_hstore */ + {__pyx_k_packed, sizeof(__pyx_k_packed), 0, 1, 1}, /* PyObject cname: __pyx_n_u_packed */ + {__pyx_k_path_value_too_long, sizeof(__pyx_k_path_value_too_long), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_path_value_too_long */ + {__pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pickle */ + {__pyx_k_polygon_value_too_long, sizeof(__pyx_k_polygon_value_too_long), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_polygon_value_too_long */ + {__pyx_k_pop, sizeof(__pyx_k_pop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pop */ + {__pyx_k_popleft, sizeof(__pyx_k_popleft), 0, 1, 1}, /* PyObject cname: __pyx_n_u_popleft */ + {__pyx_k_prefixlen, sizeof(__pyx_k_prefixlen), 0, 1, 1}, /* PyObject cname: __pyx_n_u_prefixlen */ + {__pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 1, 1}, /* PyObject cname: __pyx_n_u_prepare */ + {__pyx_k_print, sizeof(__pyx_k_print), 0, 1, 1}, /* PyObject cname: __pyx_n_u_print */ + {__pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_PickleError */ + {__pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_checksum */ + {__pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_result */ + {__pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_state */ + {__pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_type */ + {__pyx_k_pyx_unpickle_CodecContext, sizeof(__pyx_k_pyx_unpickle_CodecContext), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_unpickle_CodecContext */ + {__pyx_k_pyx_unpickle___UUIDReplaceMe, sizeof(__pyx_k_pyx_unpickle___UUIDReplaceMe), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_unpickle___UUIDReplaceMe */ + {__pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_vtable */ + {__pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 1, 1}, /* PyObject cname: __pyx_n_u_qualname */ + {__pyx_k_range, sizeof(__pyx_k_range), 0, 1, 1}, /* PyObject cname: __pyx_n_u_range */ + {__pyx_k_read_null_str_buffer_overread, sizeof(__pyx_k_read_null_str_buffer_overread), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_read_null_str_buffer_overread */ + {__pyx_k_read_null_str_only_works_when_th, sizeof(__pyx_k_read_null_str_only_works_when_th), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_read_null_str_only_works_when_th */ + {__pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 1, 1}, /* PyObject cname: __pyx_n_u_reduce */ + {__pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_reduce_cython */ + {__pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 1, 1}, /* PyObject cname: __pyx_n_u_reduce_ex */ + {__pyx_k_remaining, sizeof(__pyx_k_remaining), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_remaining */ + {__pyx_k_replace, sizeof(__pyx_k_replace), 0, 1, 1}, /* PyObject cname: __pyx_n_u_replace */ + {__pyx_k_second, sizeof(__pyx_k_second), 0, 1, 1}, /* PyObject cname: __pyx_n_u_second */ + {__pyx_k_seconds, sizeof(__pyx_k_seconds), 0, 1, 1}, /* PyObject cname: __pyx_n_u_seconds */ + {__pyx_k_self, sizeof(__pyx_k_self), 0, 1, 1}, /* PyObject cname: __pyx_n_u_self */ + {__pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 1, 1}, /* PyObject cname: __pyx_n_u_set_name */ + {__pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_setstate */ + {__pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_setstate_cython */ + {__pyx_k_sign, sizeof(__pyx_k_sign), 0, 1, 1}, /* PyObject cname: __pyx_n_u_sign */ + {__pyx_k_spec, sizeof(__pyx_k_spec), 0, 1, 1}, /* PyObject cname: __pyx_n_u_spec */ + {__pyx_k_state, sizeof(__pyx_k_state), 0, 1, 1}, /* PyObject cname: __pyx_n_u_state */ + {__pyx_k_string_is_too_large, sizeof(__pyx_k_string_is_too_large), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_string_is_too_large */ + {__pyx_k_string_too_long, sizeof(__pyx_k_string_too_long), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_string_too_long */ + {__pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_stringsource */ + {__pyx_k_test, sizeof(__pyx_k_test), 0, 1, 1}, /* PyObject cname: __pyx_n_u_test */ + {__pyx_k_the_buffer_is_in_read_only_mode, sizeof(__pyx_k_the_buffer_is_in_read_only_mode), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_the_buffer_is_in_read_only_mode */ + {__pyx_k_time, sizeof(__pyx_k_time), 0, 1, 1}, /* PyObject cname: __pyx_n_u_time */ + {__pyx_k_time_hi_version, sizeof(__pyx_k_time_hi_version), 0, 1, 1}, /* PyObject cname: __pyx_n_u_time_hi_version */ + {__pyx_k_time_low, sizeof(__pyx_k_time_low), 0, 1, 1}, /* PyObject cname: __pyx_n_u_time_low */ + {__pyx_k_time_mid, sizeof(__pyx_k_time_mid), 0, 1, 1}, /* PyObject cname: __pyx_n_u_time_mid */ + {__pyx_k_time_tuple_encoder_expecting_1_e, sizeof(__pyx_k_time_tuple_encoder_expecting_1_e), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_time_tuple_encoder_expecting_1_e */ + {__pyx_k_time_tuple_encoder_expecting_2_e, sizeof(__pyx_k_time_tuple_encoder_expecting_2_e), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_time_tuple_encoder_expecting_2_e */ + {__pyx_k_timedelta, sizeof(__pyx_k_timedelta), 0, 1, 1}, /* PyObject cname: __pyx_n_u_timedelta */ + {__pyx_k_timestamp, sizeof(__pyx_k_timestamp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_timestamp */ + {__pyx_k_timestamp_tuple_encoder_expectin, sizeof(__pyx_k_timestamp_tuple_encoder_expectin), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_timestamp_tuple_encoder_expectin */ + {__pyx_k_timezone, sizeof(__pyx_k_timezone), 0, 1, 1}, /* PyObject cname: __pyx_n_u_timezone */ + {__pyx_k_toordinal, sizeof(__pyx_k_toordinal), 0, 1, 1}, /* PyObject cname: __pyx_n_u_toordinal */ + {__pyx_k_tuple_id_block_value_out_of_uint, sizeof(__pyx_k_tuple_id_block_value_out_of_uint), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_tuple_id_block_value_out_of_uint */ + {__pyx_k_tuple_id_offset_value_out_of_uin, sizeof(__pyx_k_tuple_id_offset_value_out_of_uin), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_tuple_id_offset_value_out_of_uin */ + {__pyx_k_txid_snapshot_value_is_too_long, sizeof(__pyx_k_txid_snapshot_value_is_too_long), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_txid_snapshot_value_is_too_long */ + {__pyx_k_types, sizeof(__pyx_k_types), 0, 1, 1}, /* PyObject cname: __pyx_n_u_types */ + {__pyx_k_tzinfo, sizeof(__pyx_k_tzinfo), 0, 1, 1}, /* PyObject cname: __pyx_n_u_tzinfo */ + {__pyx_k_unexpected_CIDR_flag_set_in_non, sizeof(__pyx_k_unexpected_CIDR_flag_set_in_non), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_unexpected_CIDR_flag_set_in_non */ + {__pyx_k_unexpected_JSONB_format, sizeof(__pyx_k_unexpected_JSONB_format), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_unexpected_JSONB_format */ + {__pyx_k_unexpected_character, sizeof(__pyx_k_unexpected_character), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_unexpected_character */ + {__pyx_k_unexpected_jsonpath_format, sizeof(__pyx_k_unexpected_jsonpath_format), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_unexpected_jsonpath_format */ + {__pyx_k_unknown, sizeof(__pyx_k_unknown), 0, 1, 1}, /* PyObject cname: __pyx_n_u_unknown */ + {__pyx_k_update, sizeof(__pyx_k_update), 0, 1, 1}, /* PyObject cname: __pyx_n_u_update */ + {__pyx_k_urn_uuid, sizeof(__pyx_k_urn_uuid), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_urn_uuid */ + {__pyx_k_use_setstate, sizeof(__pyx_k_use_setstate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_use_setstate */ + {__pyx_k_utc, sizeof(__pyx_k_utc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_utc */ + {__pyx_k_utcoffset, sizeof(__pyx_k_utcoffset), 0, 1, 1}, /* PyObject cname: __pyx_n_u_utcoffset */ + {__pyx_k_uuid, sizeof(__pyx_k_uuid), 0, 1, 1}, /* PyObject cname: __pyx_n_u_uuid */ + {__pyx_k_value_out_of_float32_range, sizeof(__pyx_k_value_out_of_float32_range), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_value_out_of_float32_range */ + {__pyx_k_value_out_of_int16_range, sizeof(__pyx_k_value_out_of_int16_range), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_value_out_of_int16_range */ + {__pyx_k_value_out_of_int32_range, sizeof(__pyx_k_value_out_of_int32_range), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_value_out_of_int32_range */ + {__pyx_k_value_out_of_int64_range, sizeof(__pyx_k_value_out_of_int64_range), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_value_out_of_int64_range */ + {__pyx_k_value_out_of_uint32_range, sizeof(__pyx_k_value_out_of_uint32_range), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_value_out_of_uint32_range */ + {__pyx_k_value_out_of_uint64_range, sizeof(__pyx_k_value_out_of_uint64_range), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_value_out_of_uint64_range */ + {__pyx_k_variant, sizeof(__pyx_k_variant), 0, 1, 1}, /* PyObject cname: __pyx_n_u_variant */ + {__pyx_k_version, sizeof(__pyx_k_version), 0, 1, 1}, /* PyObject cname: __pyx_n_u_version */ + {__pyx_k_year, sizeof(__pyx_k_year), 0, 1, 1}, /* PyObject cname: __pyx_n_u_year */ + {0, 0, 0, 0, 0} +}; +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry const *t, PyObject **target, const char* const* encoding_names); + +/* #### Code section: cached_builtins ### */ + +static int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate) { + CYTHON_UNUSED_VAR(__pyx_mstate); + __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(1, 344, __pyx_L1_error) + __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(2, 74, __pyx_L1_error) + __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(3, 2, __pyx_L1_error) + __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_print); if (!__pyx_builtin_print) __PYX_ERR(2, 795, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(1, 88, __pyx_L1_error) + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_range); if (!__pyx_builtin_range) __PYX_ERR(1, 94, __pyx_L1_error) + __pyx_builtin_NotImplemented = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_NotImplemented); if (!__pyx_builtin_NotImplemented) __PYX_ERR(1, 204, __pyx_L1_error) + __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(4, 11, __pyx_L1_error) + __pyx_builtin_OverflowError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_OverflowError); if (!__pyx_builtin_OverflowError) __PYX_ERR(5, 31, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cached_constants ### */ + +static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { + __Pyx_RefNannyDeclarations + CYTHON_UNUSED_VAR(__pyx_mstate); + __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":257 + * def bytes_le(self): + * bytes = self.bytes + * return (bytes[4-1::-1] + bytes[6-1:4-1:-1] + bytes[8-1:6-1:-1] + # <<<<<<<<<<<<<< + * bytes[8:]) + * +*/ + __pyx_mstate_global->__pyx_slice[0] = PySlice_New(__pyx_mstate_global->__pyx_int_3, Py_None, __pyx_mstate_global->__pyx_int_neg_1); if (unlikely(!__pyx_mstate_global->__pyx_slice[0])) __PYX_ERR(1, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[0]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[0]); + __pyx_mstate_global->__pyx_slice[1] = PySlice_New(__pyx_mstate_global->__pyx_int_5, __pyx_mstate_global->__pyx_int_3, __pyx_mstate_global->__pyx_int_neg_1); if (unlikely(!__pyx_mstate_global->__pyx_slice[1])) __PYX_ERR(1, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[1]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[1]); + __pyx_mstate_global->__pyx_slice[2] = PySlice_New(__pyx_mstate_global->__pyx_int_7, __pyx_mstate_global->__pyx_int_5, __pyx_mstate_global->__pyx_int_neg_1); if (unlikely(!__pyx_mstate_global->__pyx_slice[2])) __PYX_ERR(1, 257, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[2]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[2]); + + /* "async_gaussdb/gaussdbproto/uuid.pyx":258 + * bytes = self.bytes + * return (bytes[4-1::-1] + bytes[6-1:4-1:-1] + bytes[8-1:6-1:-1] + + * bytes[8:]) # <<<<<<<<<<<<<< + * + * @property +*/ + __pyx_mstate_global->__pyx_slice[3] = PySlice_New(__pyx_mstate_global->__pyx_int_8, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[3])) __PYX_ERR(1, 258, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[3]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[3]); + + /* "async_gaussdb/gaussdbproto/codecs/numeric.pyx":110 + * # Pad decimal digits to provide room for correct GaussDB + * # digit alignment in the digit computation loop. + * pydigits = (0,) * DEC_DIGITS + pydigits + (0,) * DEC_DIGITS # <<<<<<<<<<<<<< + * + * if exponent < 0: +*/ + __pyx_mstate_global->__pyx_tuple[0] = PyTuple_New(1 * 4); if (unlikely(!__pyx_mstate_global->__pyx_tuple[0])) __PYX_ERR(18, 110, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[0]); + { Py_ssize_t __pyx_temp; + for (__pyx_temp=0; __pyx_temp < 4; __pyx_temp++) { + __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_0); + if (__Pyx_PyTuple_SET_ITEM(__pyx_mstate_global->__pyx_tuple[0], __pyx_temp, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(18, 110, __pyx_L1_error); + } + } + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[0]); + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0xe3b0c44, 0xda39a3e, 0xd41d8cd): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())" % __pyx_checksum +*/ + __pyx_mstate_global->__pyx_tuple[1] = PyTuple_Pack(3, __pyx_mstate_global->__pyx_int_238750788, __pyx_mstate_global->__pyx_int_228825662, __pyx_mstate_global->__pyx_int_222419149); if (unlikely(!__pyx_mstate_global->__pyx_tuple[1])) __PYX_ERR(3, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[1]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[1]); + + /* "async_gaussdb/gaussdbproto/codecs/datetime.pyx":17 + * timedelta = datetime.timedelta + * + * gaussdb_epoch_datetime = datetime.datetime(2000, 1, 1) # <<<<<<<<<<<<<< + * cdef int32_t gaussdb_epoch_datetime_ts = \ + * cpython.PyLong_AsLong(int(gaussdb_epoch_datetime.timestamp())) +*/ + __pyx_mstate_global->__pyx_tuple[2] = PyTuple_Pack(3, __pyx_mstate_global->__pyx_int_2000, __pyx_mstate_global->__pyx_int_1, __pyx_mstate_global->__pyx_int_1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[2])) __PYX_ERR(13, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[2]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[2]); + __Pyx_RefNannyFinishContext(); + return 0; + __pyx_L1_error:; + __Pyx_RefNannyFinishContext(); + return -1; +} +/* #### Code section: init_constants ### */ + +static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) { + CYTHON_UNUSED_VAR(__pyx_mstate); + __pyx_mstate->__pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type; + __pyx_mstate->__pyx_umethod_PyDict_Type_pop.method_name = &__pyx_mstate->__pyx_n_u_pop; + if (__Pyx_InitStrings(__pyx_string_tab, __pyx_mstate->__pyx_string_tab, __pyx_string_tab_encodings) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_mstate->__pyx_int_0 = PyLong_FromLong(0); if (unlikely(!__pyx_mstate->__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_1 = PyLong_FromLong(1); if (unlikely(!__pyx_mstate->__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_3 = PyLong_FromLong(3); if (unlikely(!__pyx_mstate->__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_5 = PyLong_FromLong(5); if (unlikely(!__pyx_mstate->__pyx_int_5)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_7 = PyLong_FromLong(7); if (unlikely(!__pyx_mstate->__pyx_int_7)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_8 = PyLong_FromLong(8); if (unlikely(!__pyx_mstate->__pyx_int_8)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_10 = PyLong_FromLong(10); if (unlikely(!__pyx_mstate->__pyx_int_10)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_12 = PyLong_FromLong(12); if (unlikely(!__pyx_mstate->__pyx_int_12)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_15 = PyLong_FromLong(15); if (unlikely(!__pyx_mstate->__pyx_int_15)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_20 = PyLong_FromLong(20); if (unlikely(!__pyx_mstate->__pyx_int_20)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_23 = PyLong_FromLong(23); if (unlikely(!__pyx_mstate->__pyx_int_23)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_31 = PyLong_FromLong(31); if (unlikely(!__pyx_mstate->__pyx_int_31)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_32 = PyLong_FromLong(32); if (unlikely(!__pyx_mstate->__pyx_int_32)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_48 = PyLong_FromLong(48); if (unlikely(!__pyx_mstate->__pyx_int_48)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_56 = PyLong_FromLong(56); if (unlikely(!__pyx_mstate->__pyx_int_56)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_59 = PyLong_FromLong(59); if (unlikely(!__pyx_mstate->__pyx_int_59)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_63 = PyLong_FromLong(63); if (unlikely(!__pyx_mstate->__pyx_int_63)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_64 = PyLong_FromLong(64); if (unlikely(!__pyx_mstate->__pyx_int_64)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_76 = PyLong_FromLong(76); if (unlikely(!__pyx_mstate->__pyx_int_76)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_80 = PyLong_FromLong(80); if (unlikely(!__pyx_mstate->__pyx_int_80)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_96 = PyLong_FromLong(96); if (unlikely(!__pyx_mstate->__pyx_int_96)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_100 = PyLong_FromLong(100); if (unlikely(!__pyx_mstate->__pyx_int_100)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_255 = PyLong_FromLong(255); if (unlikely(!__pyx_mstate->__pyx_int_255)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_1000 = PyLong_FromLong(1000); if (unlikely(!__pyx_mstate->__pyx_int_1000)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_2000 = PyLong_FromLong(2000); if (unlikely(!__pyx_mstate->__pyx_int_2000)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_4095 = PyLong_FromLong(4095); if (unlikely(!__pyx_mstate->__pyx_int_4095)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_65535 = PyLong_FromLong(65535L); if (unlikely(!__pyx_mstate->__pyx_int_65535)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_999999 = PyLong_FromLong(999999L); if (unlikely(!__pyx_mstate->__pyx_int_999999)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_222419149 = PyLong_FromLong(222419149L); if (unlikely(!__pyx_mstate->__pyx_int_222419149)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_228825662 = PyLong_FromLong(228825662L); if (unlikely(!__pyx_mstate->__pyx_int_228825662)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_238750788 = PyLong_FromLong(238750788L); if (unlikely(!__pyx_mstate->__pyx_int_238750788)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_0xffffffffffff = PyLong_FromString("0xffffffffffff", 0, 0); if (unlikely(!__pyx_mstate->__pyx_int_0xffffffffffff)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_0x2000000000000000 = PyLong_FromString("0x2000000000000000", 0, 0); if (unlikely(!__pyx_mstate->__pyx_int_0x2000000000000000)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_0x4000000000000000 = PyLong_FromString("0x4000000000000000", 0, 0); if (unlikely(!__pyx_mstate->__pyx_int_0x4000000000000000)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_0x8000000000000000 = PyLong_FromString("0x8000000000000000", 0, 0); if (unlikely(!__pyx_mstate->__pyx_int_0x8000000000000000)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_neg_1 = PyLong_FromLong(-1); if (unlikely(!__pyx_mstate->__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: init_codeobjects ### */ +typedef struct { + unsigned int argcount : 2; + unsigned int num_posonly_args : 1; + unsigned int num_kwonly_args : 1; + unsigned int nlocals : 3; + unsigned int flags : 10; + unsigned int first_line : 8; + unsigned int line_table_length : 11; +} __Pyx_PyCode_New_function_description; +/* NewCodeObj.proto */ +static PyObject* __Pyx_PyCode_New( + const __Pyx_PyCode_New_function_description descr, + PyObject * const *varnames, + PyObject *filename, + PyObject *funcname, + const char *line_table, + PyObject *tuple_dedup_map +); + + +static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) { + PyObject* tuple_dedup_map = PyDict_New(); + if (unlikely(!tuple_dedup_map)) return -1; + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[1] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[1])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[2] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[2])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[3] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[3])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 85}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_state, __pyx_mstate->__pyx_n_u_dict_2, __pyx_mstate->__pyx_n_u_use_setstate}; + __pyx_mstate_global->__pyx_codeobj_tab[4] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_A_G1F_a_vWA_q_q_q_0_AWKwa_0_AWK, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[4])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 16, 11}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[5] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_QfA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[5])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 196, 15}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[6] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_async_gaussdb_gaussdbproto_uuid, __pyx_mstate->__pyx_n_u_reduce, __pyx_k_A_AXT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[6])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 10, 7}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[7] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_async_gaussdb_gaussdbproto_codec, __pyx_mstate->__pyx_n_u_get_text_codec, __pyx_k_A_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[7])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 16, 7}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[8] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_async_gaussdb_gaussdbproto_codec, __pyx_mstate->__pyx_n_u_get_json_decoder, __pyx_k_A_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[8])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 22, 7}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; + __pyx_mstate_global->__pyx_codeobj_tab[9] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_async_gaussdb_gaussdbproto_codec, __pyx_mstate->__pyx_n_u_get_json_encoder, __pyx_k_A_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[9])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 85}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_state, __pyx_mstate->__pyx_n_u_dict_2, __pyx_mstate->__pyx_n_u_use_setstate}; + __pyx_mstate_global->__pyx_codeobj_tab[10] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_A_G1F_a_vWA_q_q_q_T_G1_T_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[10])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 16, 11}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state}; + __pyx_mstate_global->__pyx_codeobj_tab[11] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_6, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[11])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 77}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_pyx_type, __pyx_mstate->__pyx_n_u_pyx_checksum, __pyx_mstate->__pyx_n_u_pyx_state, __pyx_mstate->__pyx_n_u_pyx_PickleError, __pyx_mstate->__pyx_n_u_pyx_result}; + __pyx_mstate_global->__pyx_codeobj_tab[12] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle___UUIDReplaceMe, __pyx_k_hk_A_1_kkmmn_1_7_1_2DNRS_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[12])) goto bad; + } + { + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 75}; + PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_pyx_type, __pyx_mstate->__pyx_n_u_pyx_checksum, __pyx_mstate->__pyx_n_u_pyx_state, __pyx_mstate->__pyx_n_u_pyx_PickleError, __pyx_mstate->__pyx_n_u_pyx_result}; + __pyx_mstate_global->__pyx_codeobj_tab[13] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_pyx_unpickle_CodecContext, __pyx_k_hk_A_1_kkmmn_xq_7_a_nA_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[13])) goto bad; + } + Py_DECREF(tuple_dedup_map); + return 0; + bad: + Py_DECREF(tuple_dedup_map); + return -1; +} +/* #### Code section: init_globals ### */ + +static int __Pyx_InitGlobals(void) { + /* PythonCompatibility.init */ + if (likely(__Pyx_init_co_variables() == 0)); else + +if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + + /* AssertionsEnabled.init */ + if (likely(__Pyx_init_assertions_enabled() == 0)); else + +if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + + /* CachedMethodType.init */ + #if CYTHON_COMPILING_IN_LIMITED_API +{ + PyObject *typesModule=NULL; + typesModule = PyImport_ImportModule("types"); + if (typesModule) { + __pyx_mstate_global->__Pyx_CachedMethodType = PyObject_GetAttrString(typesModule, "MethodType"); + Py_DECREF(typesModule); + } +} // error handling follows +#endif + +if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + + return 0; + __pyx_L1_error:; + return -1; +} +/* #### Code section: cleanup_globals ### */ +/* #### Code section: cleanup_module ### */ +/* #### Code section: main_method ### */ +/* #### Code section: utility_code_pragmas ### */ +#ifdef _MSC_VER +#pragma warning( push ) +/* Warning 4127: conditional expression is constant + * Cython uses constant conditional expressions to allow in inline functions to be optimized at + * compile-time, so this warning is not useful + */ +#pragma warning( disable : 4127 ) +#endif + + + +/* #### Code section: utility_code_def ### */ + +/* --- Runtime support code --- */ +/* Refnanny */ +#if CYTHON_REFNANNY +static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { + PyObject *m = NULL, *p = NULL; + void *r = NULL; + m = PyImport_ImportModule(modname); + if (!m) goto end; + p = PyObject_GetAttrString(m, "RefNannyAPI"); + if (!p) goto end; + r = PyLong_AsVoidPtr(p); +end: + Py_XDECREF(p); + Py_XDECREF(m); + return (__Pyx_RefNannyAPIStruct *)r; +} +#endif + +/* PyErrExceptionMatches */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(tuple); + for (i=0; i= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; +} +#endif + +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + (void) PyObject_GetOptionalAttr(obj, attr_name, &result); + return result; +#else +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { + return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); + } +#endif + result = __Pyx_PyObject_GetAttrStr(obj, attr_name); + if (unlikely(!result)) { + __Pyx_PyObject_GetAttrStr_ClearAttributeError(); + } + return result; +#endif +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_mstate_global->__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, + "name '%U' is not defined", name); + } + return result; +} + +/* ExtTypeTest */ +static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { + __Pyx_TypeName obj_type_name; + __Pyx_TypeName type_name; + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + if (likely(__Pyx_TypeCheck(obj, type))) + return 1; + obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj)); + type_name = __Pyx_PyType_GetFullyQualifiedName(type); + PyErr_Format(PyExc_TypeError, + "Cannot convert " __Pyx_FMT_TYPENAME " to " __Pyx_FMT_TYPENAME, + obj_type_name, type_name); + __Pyx_DECREF_TypeName(obj_type_name); + __Pyx_DECREF_TypeName(type_name); + return 0; +} + +/* CIntToDigits */ +static const char DIGIT_PAIRS_10[2*10*10+1] = { + "00010203040506070809" + "10111213141516171819" + "20212223242526272829" + "30313233343536373839" + "40414243444546474849" + "50515253545556575859" + "60616263646566676869" + "70717273747576777879" + "80818283848586878889" + "90919293949596979899" +}; +static const char DIGIT_PAIRS_8[2*8*8+1] = { + "0001020304050607" + "1011121314151617" + "2021222324252627" + "3031323334353637" + "4041424344454647" + "5051525354555657" + "6061626364656667" + "7071727374757677" +}; +static const char DIGITS_HEX[2*16+1] = { + "0123456789abcdef" + "0123456789ABCDEF" +}; + +/* BuildPyUnicode */ +static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* chars, int clength, + int prepend_sign, char padding_char) { + PyObject *uval; + Py_ssize_t uoffset = ulength - clength; +#if CYTHON_USE_UNICODE_INTERNALS + Py_ssize_t i; + void *udata; + uval = PyUnicode_New(ulength, 127); + if (unlikely(!uval)) return NULL; + udata = PyUnicode_DATA(uval); + if (uoffset > 0) { + i = 0; + if (prepend_sign) { + __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, 0, '-'); + i++; + } + for (; i < uoffset; i++) { + __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, i, padding_char); + } + } + for (i=0; i < clength; i++) { + __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, uoffset+i, chars[i]); + } +#else + { + PyObject *sign = NULL, *padding = NULL; + uval = NULL; + if (uoffset > 0) { + prepend_sign = !!prepend_sign; + if (uoffset > prepend_sign) { + padding = PyUnicode_FromOrdinal(padding_char); + if (likely(padding) && uoffset > prepend_sign + 1) { + PyObject *tmp = PySequence_Repeat(padding, uoffset - prepend_sign); + Py_DECREF(padding); + padding = tmp; + } + if (unlikely(!padding)) goto done_or_error; + } + if (prepend_sign) { + sign = PyUnicode_FromOrdinal('-'); + if (unlikely(!sign)) goto done_or_error; + } + } + uval = PyUnicode_DecodeASCII(chars, clength, NULL); + if (likely(uval) && padding) { + PyObject *tmp = PyUnicode_Concat(padding, uval); + Py_DECREF(uval); + uval = tmp; + } + if (likely(uval) && sign) { + PyObject *tmp = PyUnicode_Concat(sign, uval); + Py_DECREF(uval); + uval = tmp; + } +done_or_error: + Py_XDECREF(padding); + Py_XDECREF(sign); + } +#endif + return uval; +} + +/* COrdinalToPyUnicode */ +static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value) { + return value <= 1114111; +} +static PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t ulength, char padding_char) { + if (likely(ulength <= 250)) { + char chars[256]; + if (value <= 255) { + memset(chars, padding_char, (size_t) (ulength - 1)); + chars[ulength-1] = (char) value; + return PyUnicode_DecodeLatin1(chars, ulength, NULL); + } + char *cpos = chars + sizeof(chars); + if (value < 0x800) { + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0xc0 | (value & 0x1f)); + } else if (value < 0x10000) { + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0xe0 | (value & 0x0f)); + } else { + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0x80 | (value & 0x3f)); + value >>= 6; + *--cpos = (char) (0xf0 | (value & 0x07)); + } + cpos -= ulength; + memset(cpos, padding_char, (size_t) (ulength - 1)); + return PyUnicode_DecodeUTF8(cpos, chars + sizeof(chars) - cpos, NULL); + } + if (value <= 127 && CYTHON_USE_UNICODE_INTERNALS) { + const char chars[1] = {(char) value}; + return __Pyx_PyUnicode_BuildFromAscii(ulength, chars, 1, 0, padding_char); + } + { + PyObject *uchar, *padding_uchar, *padding, *result; + padding_uchar = PyUnicode_FromOrdinal(padding_char); + if (unlikely(!padding_uchar)) return NULL; + padding = PySequence_Repeat(padding_uchar, ulength - 1); + Py_DECREF(padding_uchar); + if (unlikely(!padding)) return NULL; + uchar = PyUnicode_FromOrdinal(value); + if (unlikely(!uchar)) { + Py_DECREF(padding); + return NULL; + } + result = PyUnicode_Concat(padding, uchar); + Py_DECREF(padding); + Py_DECREF(uchar); + return result; + } +} + +/* CIntToPyUnicode */ +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char) { + char digits[sizeof(Py_ssize_t)*3+2]; + char *dpos, *end = digits + sizeof(Py_ssize_t)*3+2; + const char *hex_digits = DIGITS_HEX; + Py_ssize_t length, ulength; + int prepend_sign, last_one_off; + Py_ssize_t remaining; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (format_char == 'c') { + if (unlikely(!(is_unsigned || value == 0 || value > 0) || + !(sizeof(value) <= 2 || value & ~ (Py_ssize_t) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) { + PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)"); + return NULL; + } + if (width <= 1) { + return PyUnicode_FromOrdinal((int) value); + } + return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char); + } + if (format_char == 'X') { + hex_digits += 16; + format_char = 'x'; + } + remaining = value; + last_one_off = 0; + dpos = end; + do { + int digit_pos; + switch (format_char) { + case 'o': + digit_pos = abs((int)(remaining % (8*8))); + remaining = (Py_ssize_t) (remaining / (8*8)); + dpos -= 2; + memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2); + last_one_off = (digit_pos < 8); + break; + case 'd': + digit_pos = abs((int)(remaining % (10*10))); + remaining = (Py_ssize_t) (remaining / (10*10)); + dpos -= 2; + memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2); + last_one_off = (digit_pos < 10); + break; + case 'x': + *(--dpos) = hex_digits[abs((int)(remaining % 16))]; + remaining = (Py_ssize_t) (remaining / 16); + break; + default: + assert(0); + break; + } + } while (unlikely(remaining != 0)); + assert(!last_one_off || *dpos == '0'); + dpos += last_one_off; + length = end - dpos; + ulength = length; + prepend_sign = 0; + if (!is_unsigned && value <= neg_one) { + if (padding_char == ' ' || width <= length + 1) { + *(--dpos) = '-'; + ++length; + } else { + prepend_sign = 1; + } + ++ulength; + } + if (width > ulength) { + ulength = width; + } + if (ulength == 1) { + return PyUnicode_FromOrdinal(*dpos); + } + return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char); +} + +/* JoinPyUnicode */ +static PyObject* __Pyx_PyUnicode_Join(PyObject** values, Py_ssize_t value_count, Py_ssize_t result_ulength, + Py_UCS4 max_char) { +#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + PyObject *result_uval; + int result_ukind, kind_shift; + Py_ssize_t i, char_pos; + void *result_udata; + if (max_char > 1114111) max_char = 1114111; + result_uval = PyUnicode_New(result_ulength, max_char); + if (unlikely(!result_uval)) return NULL; + result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND; + kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1; + result_udata = PyUnicode_DATA(result_uval); + assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0); + if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - result_ulength < 0)) + goto overflow; + char_pos = 0; + for (i=0; i < value_count; i++) { + int ukind; + Py_ssize_t ulength; + void *udata; + PyObject *uval = values[i]; + #if !CYTHON_COMPILING_IN_LIMITED_API + if (__Pyx_PyUnicode_READY(uval) == (-1)) + goto bad; + #endif + ulength = __Pyx_PyUnicode_GET_LENGTH(uval); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(ulength < 0)) goto bad; + #endif + if (unlikely(!ulength)) + continue; + if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos)) + goto overflow; + ukind = __Pyx_PyUnicode_KIND(uval); + udata = __Pyx_PyUnicode_DATA(uval); + if (ukind == result_ukind) { + memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift)); + } else { + #if PY_VERSION_HEX >= 0x030d0000 + if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad; + #elif CYTHON_COMPILING_IN_CPYTHON || defined(_PyUnicode_FastCopyCharacters) + _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength); + #else + Py_ssize_t j; + for (j=0; j < ulength; j++) { + Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j); + __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar); + } + #endif + } + char_pos += ulength; + } + return result_uval; +overflow: + PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string"); +bad: + Py_DECREF(result_uval); + return NULL; +#else + Py_ssize_t i; + PyObject *result = NULL; + PyObject *value_tuple = PyTuple_New(value_count); + if (unlikely(!value_tuple)) return NULL; + CYTHON_UNUSED_VAR(max_char); + CYTHON_UNUSED_VAR(result_ulength); + for (i=0; i__pyx_empty_unicode, value_tuple); +bad: + Py_DECREF(value_tuple); + return result; +#endif +} + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject *const *args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject *const *args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; + PyObject *kwdefs; + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { + return NULL; + } + if ( + co->co_kwonlyargcount == 0 && + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); + kwdefs = PyFunction_GET_KW_DEFAULTS(func); + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif + +/* PyObjectCall */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func); + self = __Pyx_CyOrPyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectFastCall */ +#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API +static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject * const*args, size_t nargs, PyObject *kwargs) { + PyObject *argstuple; + PyObject *result = 0; + size_t i; + argstuple = PyTuple_New((Py_ssize_t)nargs); + if (unlikely(!argstuple)) return NULL; + for (i = 0; i < nargs; i++) { + Py_INCREF(args[i]); + if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) != (0)) goto bad; + } + result = __Pyx_PyObject_Call(func, argstuple, kwargs); + bad: + Py_DECREF(argstuple); + return result; +} +#endif +#if CYTHON_VECTORCALL && !CYTHON_COMPILING_IN_LIMITED_API + #if PY_VERSION_HEX < 0x03090000 + #define __Pyx_PyVectorcall_Function(callable) _PyVectorcall_Function(callable) + #elif CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE vectorcallfunc __Pyx_PyVectorcall_Function(PyObject *callable) { + PyTypeObject *tp = Py_TYPE(callable); + #if defined(__Pyx_CyFunction_USED) + if (__Pyx_CyFunction_CheckExact(callable)) { + return __Pyx_CyFunction_func_vectorcall(callable); + } + #endif + if (!PyType_HasFeature(tp, Py_TPFLAGS_HAVE_VECTORCALL)) { + return NULL; + } + assert(PyCallable_Check(callable)); + Py_ssize_t offset = tp->tp_vectorcall_offset; + assert(offset > 0); + vectorcallfunc ptr; + memcpy(&ptr, (char *) callable + offset, sizeof(ptr)); + return ptr; +} + #else + #define __Pyx_PyVectorcall_Function(callable) PyVectorcall_Function(callable) + #endif +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject *const *args, size_t _nargs, PyObject *kwargs) { + Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs); +#if CYTHON_COMPILING_IN_CPYTHON + if (nargs == 0 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS)) + return __Pyx_PyObject_CallMethO(func, NULL); + } + else if (nargs == 1 && kwargs == NULL) { + if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O)) + return __Pyx_PyObject_CallMethO(func, args[0]); + } +#endif + #if PY_VERSION_HEX < 0x030800B1 + #if CYTHON_FAST_PYCCALL + if (PyCFunction_Check(func)) { + if (kwargs) { + return _PyCFunction_FastCallDict(func, args, nargs, kwargs); + } else { + return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); + } + } + if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { + return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); + } + #endif + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); + } + #endif + #endif + if (kwargs == NULL) { + #if CYTHON_VECTORCALL && !CYTHON_COMPILING_IN_LIMITED_API + vectorcallfunc f = __Pyx_PyVectorcall_Function(func); + if (f) { + return f(func, args, _nargs, NULL); + } + #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL + if (__Pyx_CyFunction_CheckExact(func)) { + __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); + if (f) return f(func, args, _nargs, NULL); + } + #elif CYTHON_COMPILING_IN_LIMITED_API && CYTHON_VECTORCALL + return PyObject_Vectorcall(func, args, _nargs, NULL); + #endif + } + if (nargs == 0) { + return __Pyx_PyObject_Call(func, __pyx_mstate_global->__pyx_empty_tuple, kwargs); + } + #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API + return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs); + #else + return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs); + #endif +} + +/* RaiseException */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { + PyObject* owned_instance = NULL; + if (tb == Py_None) { + tb = 0; + } else if (tb && !PyTraceBack_Check(tb)) { + PyErr_SetString(PyExc_TypeError, + "raise: arg 3 must be a traceback or None"); + goto bad; + } + if (value == Py_None) + value = 0; + if (PyExceptionInstance_Check(type)) { + if (value) { + PyErr_SetString(PyExc_TypeError, + "instance exception may not have a separate value"); + goto bad; + } + value = type; + type = (PyObject*) Py_TYPE(value); + } else if (PyExceptionClass_Check(type)) { + PyObject *instance_class = NULL; + if (value && PyExceptionInstance_Check(value)) { + instance_class = (PyObject*) Py_TYPE(value); + if (instance_class != type) { + int is_subclass = PyObject_IsSubclass(instance_class, type); + if (!is_subclass) { + instance_class = NULL; + } else if (unlikely(is_subclass == -1)) { + goto bad; + } else { + type = instance_class; + } + } + } + if (!instance_class) { + PyObject *args; + if (!value) + args = PyTuple_New(0); + else if (PyTuple_Check(value)) { + Py_INCREF(value); + args = value; + } else + args = PyTuple_Pack(1, value); + if (!args) + goto bad; + owned_instance = PyObject_Call(type, args, NULL); + Py_DECREF(args); + if (!owned_instance) + goto bad; + value = owned_instance; + if (!PyExceptionInstance_Check(value)) { + PyErr_Format(PyExc_TypeError, + "calling %R should have returned an instance of " + "BaseException, not %R", + type, Py_TYPE(value)); + goto bad; + } + } + } else { + PyErr_SetString(PyExc_TypeError, + "raise: exception class must be a subclass of BaseException"); + goto bad; + } + if (cause) { + PyObject *fixed_cause; + if (cause == Py_None) { + fixed_cause = NULL; + } else if (PyExceptionClass_Check(cause)) { + fixed_cause = PyObject_CallObject(cause, NULL); + if (fixed_cause == NULL) + goto bad; + } else if (PyExceptionInstance_Check(cause)) { + fixed_cause = cause; + Py_INCREF(fixed_cause); + } else { + PyErr_SetString(PyExc_TypeError, + "exception causes must derive from " + "BaseException"); + goto bad; + } + PyException_SetCause(value, fixed_cause); + } + PyErr_SetObject(type, value); + if (tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyException_SetTraceback(value, tb); +#elif CYTHON_FAST_THREAD_STATE + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject* tmp_tb = tstate->curexc_traceback; + if (tb != tmp_tb) { + Py_INCREF(tb); + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_tb); + } +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); + Py_INCREF(tb); + PyErr_Restore(tmp_type, tmp_value, tb); + Py_XDECREF(tmp_tb); +#endif + } +bad: + Py_XDECREF(owned_instance); + return; +} + +/* TupleAndListFromArray */ +#if !CYTHON_COMPILING_IN_CPYTHON && CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + Py_ssize_t i; + if (n <= 0) { + return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple); + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + for (i = 0; i < n; i++) { + if (unlikely(__Pyx_PyTuple_SET_ITEM(res, i, src[i]) < 0)) { + Py_DECREF(res); + return NULL; + } + Py_INCREF(src[i]); + } + return res; +} +#elif CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); + } +} +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple); + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); + return res; +} +static CYTHON_INLINE PyObject * +__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return PyList_New(0); + } + res = PyList_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); + return res; +} +#endif + +/* BytesEquals */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL ||\ + !(CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS) + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { + const char *ps1, *ps2; + Py_ssize_t length = PyBytes_GET_SIZE(s1); + if (length != PyBytes_GET_SIZE(s2)) + return (equals == Py_NE); + ps1 = PyBytes_AS_STRING(s1); + ps2 = PyBytes_AS_STRING(s2); + if (ps1[0] != ps2[0]) { + return (equals == Py_NE); + } else if (length == 1) { + return (equals == Py_EQ); + } else { + int result; +#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + return (equals == Py_NE); + } +#endif + result = memcmp(ps1, ps2, (size_t)length); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { + return (equals == Py_NE); + } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { + return (equals == Py_NE); + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +#endif +} + +/* UnicodeEquals */ +static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL + return PyObject_RichCompareBool(s1, s2, equals); +#else + int s1_is_unicode, s2_is_unicode; + if (s1 == s2) { + goto return_eq; + } + s1_is_unicode = PyUnicode_CheckExact(s1); + s2_is_unicode = PyUnicode_CheckExact(s2); + if (s1_is_unicode & s2_is_unicode) { + Py_ssize_t length, length2; + int kind; + void *data1, *data2; + #if !CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) + return -1; + #endif + length = __Pyx_PyUnicode_GET_LENGTH(s1); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(length < 0)) return -1; + #endif + length2 = __Pyx_PyUnicode_GET_LENGTH(s2); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(length2 < 0)) return -1; + #endif + if (length != length2) { + goto return_ne; + } +#if CYTHON_USE_UNICODE_INTERNALS + { + Py_hash_t hash1, hash2; + hash1 = ((PyASCIIObject*)s1)->hash; + hash2 = ((PyASCIIObject*)s2)->hash; + if (hash1 != hash2 && hash1 != -1 && hash2 != -1) { + goto return_ne; + } + } +#endif + kind = __Pyx_PyUnicode_KIND(s1); + if (kind != __Pyx_PyUnicode_KIND(s2)) { + goto return_ne; + } + data1 = __Pyx_PyUnicode_DATA(s1); + data2 = __Pyx_PyUnicode_DATA(s2); + if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { + goto return_ne; + } else if (length == 1) { + goto return_eq; + } else { + int result = memcmp(data1, data2, (size_t)(length * kind)); + return (equals == Py_EQ) ? (result == 0) : (result != 0); + } + } else if ((s1 == Py_None) & s2_is_unicode) { + goto return_ne; + } else if ((s2 == Py_None) & s1_is_unicode) { + goto return_ne; + } else { + int result; + PyObject* py_result = PyObject_RichCompare(s1, s2, equals); + if (!py_result) + return -1; + result = __Pyx_PyObject_IsTrue(py_result); + Py_DECREF(py_result); + return result; + } +return_eq: + return (equals == Py_EQ); +return_ne: + return (equals == Py_NE); +#endif +} + +/* fastcall */ +#if CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s) +{ + Py_ssize_t i, n = __Pyx_PyTuple_GET_SIZE(kwnames); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(n == -1)) return NULL; + #endif + for (i = 0; i < n; i++) + { + PyObject *namei = __Pyx_PyTuple_GET_ITEM(kwnames, i); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely(!namei)) return NULL; + #endif + if (s == namei) return kwvalues[i]; + } + for (i = 0; i < n; i++) + { + PyObject *namei = __Pyx_PyTuple_GET_ITEM(kwnames, i); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely(!namei)) return NULL; + #endif + int eq = __Pyx_PyUnicode_Equals(s, namei, Py_EQ); + if (unlikely(eq != 0)) { + if (unlikely(eq < 0)) return NULL; + return kwvalues[i]; + } + } + return NULL; +} +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API +CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) { + Py_ssize_t i, nkwargs; + PyObject *dict; +#if !CYTHON_ASSUME_SAFE_SIZE + nkwargs = PyTuple_Size(kwnames); + if (unlikely(nkwargs < 0)) return NULL; +#else + nkwargs = PyTuple_GET_SIZE(kwnames); +#endif + dict = PyDict_New(); + if (unlikely(!dict)) + return NULL; + for (i=0; itp_dict; + return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; +} +static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { + PyObject **dictptr = NULL; + Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; + if (offset) { +#if CYTHON_COMPILING_IN_CPYTHON + dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); +#else + dictptr = _PyObject_GetDictPtr(obj); +#endif + } + return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; +} +static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { + PyObject *dict = Py_TYPE(obj)->tp_dict; + if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) + return 0; + return obj_dict_version == __Pyx_get_object_dict_version(obj); +} +#endif + +/* GetModuleGlobalName */ +#if CYTHON_USE_DICT_VERSIONS +static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) +#else +static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) +#endif +{ + PyObject *result; +#if CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(!__pyx_m)) { + if (!PyErr_Occurred()) + PyErr_SetNone(PyExc_NameError); + return NULL; + } + result = PyObject_GetAttr(__pyx_m, name); + if (likely(result)) { + return result; + } + PyErr_Clear(); +#elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + if (unlikely(__Pyx_PyDict_GetItemRef(__pyx_mstate_global->__pyx_d, name, &result) == -1)) PyErr_Clear(); + __PYX_UPDATE_DICT_CACHE(__pyx_mstate_global->__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return result; + } +#else + result = _PyDict_GetItem_KnownHash(__pyx_mstate_global->__pyx_d, name, ((PyASCIIObject *) name)->hash); + __PYX_UPDATE_DICT_CACHE(__pyx_mstate_global->__pyx_d, result, *dict_cached_value, *dict_version) + if (likely(result)) { + return __Pyx_NewRef(result); + } + PyErr_Clear(); +#endif + return __Pyx_GetBuiltinName(name); +} + +/* WriteUnraisableException */ +static void __Pyx_WriteUnraisable(const char *name, int clineno, + int lineno, const char *filename, + int full_traceback, int nogil) { + PyObject *old_exc, *old_val, *old_tb; + PyObject *ctx; + __Pyx_PyThreadState_declare + PyGILState_STATE state; + if (nogil) + state = PyGILState_Ensure(); + else state = (PyGILState_STATE)0; + CYTHON_UNUSED_VAR(clineno); + CYTHON_UNUSED_VAR(lineno); + CYTHON_UNUSED_VAR(filename); + CYTHON_MAYBE_UNUSED_VAR(nogil); + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); + if (full_traceback) { + Py_XINCREF(old_exc); + Py_XINCREF(old_val); + Py_XINCREF(old_tb); + __Pyx_ErrRestore(old_exc, old_val, old_tb); + PyErr_PrintEx(0); + } + ctx = PyUnicode_FromString(name); + __Pyx_ErrRestore(old_exc, old_val, old_tb); + if (!ctx) { + PyErr_WriteUnraisable(Py_None); + } else { + PyErr_WriteUnraisable(ctx); + Py_DECREF(ctx); + } + if (nogil) + PyGILState_Release(state); +} + +/* PyObjectFastCallMethod */ +#if !CYTHON_VECTORCALL || PY_VERSION_HEX < 0x03090000 +static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf) { + PyObject *result; + PyObject *attr = PyObject_GetAttr(args[0], name); + if (unlikely(!attr)) + return NULL; + result = __Pyx_PyObject_FastCall(attr, args+1, nargsf - 1); + Py_DECREF(attr); + return result; +} +#endif + +/* RaiseDoubleKeywords */ +static void __Pyx_RaiseDoubleKeywordsError( + const char* func_name, + PyObject* kw_name) +{ + PyErr_Format(PyExc_TypeError, + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); +} + +/* UnpackUnboundCMethod */ +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000 +static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) { + PyObject *result; + PyObject *selfless_args = PyTuple_GetSlice(args, 1, PyTuple_Size(args)); + if (unlikely(!selfless_args)) return NULL; + result = PyObject_Call(method, selfless_args, kwargs); + Py_DECREF(selfless_args); + return result; +} +#elif CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03090000 +static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject **args, Py_ssize_t nargs, PyObject *kwnames) { + return _PyObject_Vectorcall + (method, args ? args+1 : NULL, nargs ? nargs-1 : 0, kwnames); +} +#else +static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) { + return +#if PY_VERSION_HEX < 0x03090000 + _PyObject_Vectorcall +#else + PyObject_Vectorcall +#endif + (method, args ? args+1 : NULL, nargs ? (size_t) nargs-1 : 0, kwnames); +} +#endif +static PyMethodDef __Pyx_UnboundCMethod_Def = { + "CythonUnboundCMethod", + __PYX_REINTERPRET_FUNCION(PyCFunction, __Pyx_SelflessCall), +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000 + METH_VARARGS | METH_KEYWORDS, +#else + METH_FASTCALL | METH_KEYWORDS, +#endif + NULL +}; +static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { + PyObject *method, *result=NULL; + method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name); + if (unlikely(!method)) + return -1; + result = method; +#if CYTHON_COMPILING_IN_CPYTHON + if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type))) + { + PyMethodDescrObject *descr = (PyMethodDescrObject*) method; + target->func = descr->d_method->ml_meth; + target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS); + } else +#endif +#if CYTHON_COMPILING_IN_PYPY +#else + if (PyCFunction_Check(method)) +#endif + { + PyObject *self; + int self_found; +#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY + self = PyObject_GetAttrString(method, "__self__"); + if (!self) { + PyErr_Clear(); + } +#else + self = PyCFunction_GET_SELF(method); +#endif + self_found = (self && self != Py_None); +#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY + Py_XDECREF(self); +#endif + if (self_found) { + PyObject *unbound_method = PyCFunction_New(&__Pyx_UnboundCMethod_Def, method); + if (unlikely(!unbound_method)) return -1; + Py_DECREF(method); + result = unbound_method; + } + } +#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + if (unlikely(target->method)) { + Py_DECREF(result); + } else +#endif + target->method = result; + return 0; +} + +/* CallUnboundCMethod2 */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) { + int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc); + if (likely(was_initialized == 2 && cfunc->func)) { + PyObject *args[2] = {arg1, arg2}; + if (cfunc->flag == METH_FASTCALL) { + return __Pyx_CallCFunctionFast(cfunc, self, args, 2); + } + if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS)) + return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, 2, NULL); + } +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + else if (unlikely(was_initialized == 1)) { + __Pyx_CachedCFunction tmp_cfunc = { +#ifndef __cplusplus + 0 +#endif + }; + tmp_cfunc.type = cfunc->type; + tmp_cfunc.method_name = cfunc->method_name; + return __Pyx__CallUnboundCMethod2(&tmp_cfunc, self, arg1, arg2); + } +#endif + PyObject *result = __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2); + __Pyx_CachedCFunction_SetFinishedInitializing(cfunc); + return result; +} +#endif +static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){ + if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; +#if CYTHON_COMPILING_IN_CPYTHON + if (cfunc->func && (cfunc->flag & METH_VARARGS)) { + PyObject *result = NULL; + PyObject *args = PyTuple_New(2); + if (unlikely(!args)) return NULL; + Py_INCREF(arg1); + PyTuple_SET_ITEM(args, 0, arg1); + Py_INCREF(arg2); + PyTuple_SET_ITEM(args, 1, arg2); + if (cfunc->flag & METH_KEYWORDS) + result = __Pyx_CallCFunctionWithKeywords(cfunc, self, args, NULL); + else + result = __Pyx_CallCFunction(cfunc, self, args); + Py_DECREF(args); + return result; + } +#endif + { + PyObject *args[4] = {NULL, self, arg1, arg2}; + return __Pyx_PyObject_FastCall(cfunc->method, args+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } +} + +/* ParseKeywords */ +static int __Pyx_ValidateDuplicatePosArgs( + PyObject *kwds, + PyObject ** const argnames[], + PyObject ** const *first_kw_arg, + const char* function_name) +{ + PyObject ** const *name = argnames; + while (name != first_kw_arg) { + PyObject *key = **name; + int found = PyDict_Contains(kwds, key); + if (unlikely(found)) { + if (found == 1) __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; + } + name++; + } + return 0; +bad: + return -1; +} +#if CYTHON_USE_UNICODE_INTERNALS +static CYTHON_INLINE int __Pyx_UnicodeKeywordsEqual(PyObject *s1, PyObject *s2) { + int kind; + Py_ssize_t len = PyUnicode_GET_LENGTH(s1); + if (len != PyUnicode_GET_LENGTH(s2)) return 0; + kind = PyUnicode_KIND(s1); + if (kind != PyUnicode_KIND(s2)) return 0; + const void *data1 = PyUnicode_DATA(s1); + const void *data2 = PyUnicode_DATA(s2); + return (memcmp(data1, data2, (size_t) len * (size_t) kind) == 0); +} +#endif +static int __Pyx_MatchKeywordArg_str( + PyObject *key, + PyObject ** const argnames[], + PyObject ** const *first_kw_arg, + size_t *index_found, + const char *function_name) +{ + PyObject ** const *name; + #if CYTHON_USE_UNICODE_INTERNALS + Py_hash_t key_hash = ((PyASCIIObject*)key)->hash; + if (unlikely(key_hash == -1)) { + key_hash = PyObject_Hash(key); + if (unlikely(key_hash == -1)) + goto bad; + } + #endif + name = first_kw_arg; + while (*name) { + PyObject *name_str = **name; + #if CYTHON_USE_UNICODE_INTERNALS + if (key_hash == ((PyASCIIObject*)name_str)->hash && __Pyx_UnicodeKeywordsEqual(name_str, key)) { + *index_found = (size_t) (name - argnames); + return 1; + } + #else + #if CYTHON_ASSUME_SAFE_SIZE + if (PyUnicode_GET_LENGTH(name_str) == PyUnicode_GET_LENGTH(key)) + #endif + { + int cmp = PyUnicode_Compare(name_str, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) { + *index_found = (size_t) (name - argnames); + return 1; + } + } + #endif + name++; + } + name = argnames; + while (name != first_kw_arg) { + PyObject *name_str = **name; + #if CYTHON_USE_UNICODE_INTERNALS + if (unlikely(key_hash == ((PyASCIIObject*)name_str)->hash)) { + if (__Pyx_UnicodeKeywordsEqual(name_str, key)) + goto arg_passed_twice; + } + #else + #if CYTHON_ASSUME_SAFE_SIZE + if (PyUnicode_GET_LENGTH(name_str) == PyUnicode_GET_LENGTH(key)) + #endif + { + if (unlikely(name_str == key)) goto arg_passed_twice; + int cmp = PyUnicode_Compare(name_str, key); + if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; + if (cmp == 0) goto arg_passed_twice; + } + #endif + name++; + } + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +bad: + return -1; +} +static int __Pyx_MatchKeywordArg_nostr( + PyObject *key, + PyObject ** const argnames[], + PyObject ** const *first_kw_arg, + size_t *index_found, + const char *function_name) +{ + PyObject ** const *name; + if (unlikely(!PyUnicode_Check(key))) goto invalid_keyword_type; + name = first_kw_arg; + while (*name) { + int cmp = PyObject_RichCompareBool(**name, key, Py_EQ); + if (cmp == 1) { + *index_found = (size_t) (name - argnames); + return 1; + } + if (unlikely(cmp == -1)) goto bad; + name++; + } + name = argnames; + while (name != first_kw_arg) { + int cmp = PyObject_RichCompareBool(**name, key, Py_EQ); + if (unlikely(cmp != 0)) { + if (cmp == 1) goto arg_passed_twice; + else goto bad; + } + name++; + } + return 0; +arg_passed_twice: + __Pyx_RaiseDoubleKeywordsError(function_name, key); + goto bad; +invalid_keyword_type: + PyErr_Format(PyExc_TypeError, + "%.200s() keywords must be strings", function_name); + goto bad; +bad: + return -1; +} +static CYTHON_INLINE int __Pyx_MatchKeywordArg( + PyObject *key, + PyObject ** const argnames[], + PyObject ** const *first_kw_arg, + size_t *index_found, + const char *function_name) +{ + return likely(PyUnicode_CheckExact(key)) ? + __Pyx_MatchKeywordArg_str(key, argnames, first_kw_arg, index_found, function_name) : + __Pyx_MatchKeywordArg_nostr(key, argnames, first_kw_arg, index_found, function_name); +} +static void __Pyx_RejectUnknownKeyword( + PyObject *kwds, + PyObject ** const argnames[], + PyObject ** const *first_kw_arg, + const char *function_name) +{ + Py_ssize_t pos = 0; + PyObject *key = NULL; + __Pyx_BEGIN_CRITICAL_SECTION(kwds); + while (PyDict_Next(kwds, &pos, &key, NULL)) { + PyObject** const *name = first_kw_arg; + while (*name && (**name != key)) name++; + if (!*name) { + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); + #endif + size_t index_found = 0; + int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name); + if (cmp != 1) { + if (cmp == 0) { + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(key); + #endif + break; + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(key); + #endif + } + } + __Pyx_END_CRITICAL_SECTION(); + assert(PyErr_Occurred()); +} +static int __Pyx_ParseKeywordDict( + PyObject *kwds, + PyObject ** const argnames[], + PyObject *values[], + Py_ssize_t num_pos_args, + Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs) +{ + PyObject** const *name; + PyObject** const *first_kw_arg = argnames + num_pos_args; + Py_ssize_t extracted = 0; +#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments) + if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return -1; +#endif + name = first_kw_arg; + while (*name && num_kwargs > extracted) { + PyObject * key = **name; + PyObject *value; + int found = 0; + #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + found = PyDict_GetItemRef(kwds, key, &value); + #else + value = PyDict_GetItemWithError(kwds, key); + if (value) { + Py_INCREF(value); + found = 1; + } else { + if (unlikely(PyErr_Occurred())) goto bad; + } + #endif + if (found) { + if (unlikely(found < 0)) goto bad; + values[name-argnames] = value; + extracted++; + } + name++; + } + if (num_kwargs > extracted) { + if (ignore_unknown_kwargs) { + if (unlikely(__Pyx_ValidateDuplicatePosArgs(kwds, argnames, first_kw_arg, function_name) == -1)) + goto bad; + } else { + __Pyx_RejectUnknownKeyword(kwds, argnames, first_kw_arg, function_name); + goto bad; + } + } + return 0; +bad: + return -1; +} +static int __Pyx_ParseKeywordDictToDict( + PyObject *kwds, + PyObject ** const argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name) +{ + PyObject** const *name; + PyObject** const *first_kw_arg = argnames + num_pos_args; + Py_ssize_t len; +#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments) + if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return -1; +#endif + if (PyDict_Update(kwds2, kwds) < 0) goto bad; + name = first_kw_arg; + while (*name) { + PyObject *key = **name; + PyObject *value; +#if !CYTHON_COMPILING_IN_LIMITED_API && (PY_VERSION_HEX >= 0x030d00A2 || defined(PyDict_Pop)) + int found = PyDict_Pop(kwds2, key, &value); + if (found) { + if (unlikely(found < 0)) goto bad; + values[name-argnames] = value; + } +#elif __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + int found = PyDict_GetItemRef(kwds2, key, &value); + if (found) { + if (unlikely(found < 0)) goto bad; + values[name-argnames] = value; + if (unlikely(PyDict_DelItem(kwds2, key) < 0)) goto bad; + } +#else + #if CYTHON_COMPILING_IN_CPYTHON + value = _PyDict_Pop(kwds2, key, kwds2); + #else + value = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_pop, kwds2, key, kwds2); + #endif + if (value == kwds2) { + Py_DECREF(value); + } else { + if (unlikely(!value)) goto bad; + values[name-argnames] = value; + } +#endif + name++; + } + len = PyDict_Size(kwds2); + if (len > 0) { + return __Pyx_ValidateDuplicatePosArgs(kwds, argnames, first_kw_arg, function_name); + } else if (unlikely(len == -1)) { + goto bad; + } + return 0; +bad: + return -1; +} +static int __Pyx_ParseKeywordsTuple( + PyObject *kwds, + PyObject * const *kwvalues, + PyObject ** const argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs) +{ + PyObject *key = NULL; + PyObject** const * name; + PyObject** const *first_kw_arg = argnames + num_pos_args; + for (Py_ssize_t pos = 0; pos < num_kwargs; pos++) { +#if CYTHON_AVOID_BORROWED_REFS + key = __Pyx_PySequence_ITEM(kwds, pos); +#else + key = __Pyx_PyTuple_GET_ITEM(kwds, pos); +#endif +#if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely(!key)) goto bad; +#endif + name = first_kw_arg; + while (*name && (**name != key)) name++; + if (*name) { + PyObject *value = kwvalues[pos]; + values[name-argnames] = __Pyx_NewRef(value); + } else { + size_t index_found = 0; + int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name); + if (cmp == 1) { + PyObject *value = kwvalues[pos]; + values[index_found] = __Pyx_NewRef(value); + } else { + if (unlikely(cmp == -1)) goto bad; + if (kwds2) { + PyObject *value = kwvalues[pos]; + if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; + } else if (!ignore_unknown_kwargs) { + goto invalid_keyword; + } + } + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(key); + key = NULL; + #endif + } + return 0; +invalid_keyword: + PyErr_Format(PyExc_TypeError, + "%s() got an unexpected keyword argument '%U'", + function_name, key); + goto bad; +bad: + #if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(key); + #endif + return -1; +} +static int __Pyx_ParseKeywords( + PyObject *kwds, + PyObject * const *kwvalues, + PyObject ** const argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs) +{ + if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds))) + return __Pyx_ParseKeywordsTuple(kwds, kwvalues, argnames, kwds2, values, num_pos_args, num_kwargs, function_name, ignore_unknown_kwargs); + else if (kwds2) + return __Pyx_ParseKeywordDictToDict(kwds, argnames, kwds2, values, num_pos_args, function_name); + else + return __Pyx_ParseKeywordDict(kwds, argnames, values, num_pos_args, num_kwargs, function_name, ignore_unknown_kwargs); +} + +/* GetItemInt */ +static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (unlikely(!j)) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS && !CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyList_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS + Py_ssize_t wrapped_i = i; + if (wraparound & unlikely(i < 0)) { + wrapped_i += PyTuple_GET_SIZE(o); + } + if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + return __Pyx_PyList_GetItemRef(o, n); + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; + PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; + if (mm && mm->mp_subscript) { + PyObject *r, *key = PyLong_FromSsize_t(i); + if (unlikely(!key)) return NULL; + r = mm->mp_subscript(o, key); + Py_DECREF(key); + return r; + } + if (likely(sm && sm->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { + Py_ssize_t l = sm->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (!PyErr_ExceptionMatches(PyExc_OverflowError)) + return NULL; + PyErr_Clear(); + } + } + return sm->sq_item(o, i); + } + } +#else + if (is_list || !PyMapping_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i)); +} + +/* decode_c_bytes */ +static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes( + const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop, + const char* encoding, const char* errors, + PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) { + if (unlikely((start < 0) | (stop < 0))) { + if (start < 0) { + start += length; + if (start < 0) + start = 0; + } + if (stop < 0) + stop += length; + } + if (stop > length) + stop = length; + if (unlikely(stop <= start)) + return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_unicode); + length = stop - start; + cstring += start; + if (decode_func) { + return decode_func(cstring, length, errors); + } else { + return PyUnicode_Decode(cstring, length, encoding, errors); + } +} + +/* RaiseUnexpectedTypeError */ +static int +__Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj) +{ + __Pyx_TypeName obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, "Expected %s, got " __Pyx_FMT_TYPENAME, + expected, obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return 0; +} + +/* RaiseUnboundLocalError */ +static void __Pyx_RaiseUnboundLocalError(const char *varname) { + PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); +} + +/* PyObjectFormatAndDecref */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f) { + if (unlikely(!s)) return NULL; + if (likely(PyUnicode_CheckExact(s))) return s; + return __Pyx_PyObject_FormatAndDecref(s, f); +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObject* f) { + PyObject *result; + if (unlikely(!s)) return NULL; + result = PyObject_Format(s, f); + Py_DECREF(s); + return result; +} + +/* GetAttr3 */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static PyObject *__Pyx_GetAttr3Default(PyObject *d) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + return NULL; + __Pyx_PyErr_Clear(); + Py_INCREF(d); + return d; +} +#endif +static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) { + PyObject *r; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + int res = PyObject_GetOptionalAttr(o, n, &r); + return (res != 0) ? r : __Pyx_NewRef(d); +#else + #if CYTHON_USE_TYPE_SLOTS + if (likely(PyUnicode_Check(n))) { + r = __Pyx_PyObject_GetAttrStrNoError(o, n); + if (unlikely(!r) && likely(!PyErr_Occurred())) { + r = __Pyx_NewRef(d); + } + return r; + } + #endif + r = PyObject_GetAttr(o, n); + return (likely(r)) ? r : __Pyx_GetAttr3Default(d); +#endif +} + +/* PyObjectCallOneArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *args[2] = {NULL, arg}; + return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* ObjectGetItem */ +#if CYTHON_USE_TYPE_SLOTS +static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) { + PyObject *runerr = NULL; + Py_ssize_t key_value; + key_value = __Pyx_PyIndex_AsSsize_t(index); + if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { + return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); + } + if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { + __Pyx_TypeName index_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(index)); + PyErr_Clear(); + PyErr_Format(PyExc_IndexError, + "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name); + __Pyx_DECREF_TypeName(index_type_name); + } + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) { + __Pyx_TypeName obj_type_name; + if (likely(PyType_Check(obj))) { + PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_mstate_global->__pyx_n_u_class_getitem); + if (!meth) { + PyErr_Clear(); + } else { + PyObject *result = __Pyx_PyObject_CallOneArg(meth, key); + Py_DECREF(meth); + return result; + } + } + obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); + return NULL; +} +static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) { + PyTypeObject *tp = Py_TYPE(obj); + PyMappingMethods *mm = tp->tp_as_mapping; + PySequenceMethods *sm = tp->tp_as_sequence; + if (likely(mm && mm->mp_subscript)) { + return mm->mp_subscript(obj, key); + } + if (likely(sm && sm->sq_item)) { + return __Pyx_PyObject_GetIndex(obj, key); + } + return __Pyx_PyObject_GetItem_Slow(obj, key); +} +#endif + +/* SliceObject */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj, + Py_ssize_t cstart, Py_ssize_t cstop, + PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice, + int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) { + __Pyx_TypeName obj_type_name; +#if CYTHON_USE_TYPE_SLOTS + PyMappingMethods* mp = Py_TYPE(obj)->tp_as_mapping; + if (likely(mp && mp->mp_subscript)) +#endif + { + PyObject* result; + PyObject *py_slice, *py_start, *py_stop; + if (_py_slice) { + py_slice = *_py_slice; + } else { + PyObject* owned_start = NULL; + PyObject* owned_stop = NULL; + if (_py_start) { + py_start = *_py_start; + } else { + if (has_cstart) { + owned_start = py_start = PyLong_FromSsize_t(cstart); + if (unlikely(!py_start)) goto bad; + } else + py_start = Py_None; + } + if (_py_stop) { + py_stop = *_py_stop; + } else { + if (has_cstop) { + owned_stop = py_stop = PyLong_FromSsize_t(cstop); + if (unlikely(!py_stop)) { + Py_XDECREF(owned_start); + goto bad; + } + } else + py_stop = Py_None; + } + py_slice = PySlice_New(py_start, py_stop, Py_None); + Py_XDECREF(owned_start); + Py_XDECREF(owned_stop); + if (unlikely(!py_slice)) goto bad; + } +#if CYTHON_USE_TYPE_SLOTS + result = mp->mp_subscript(obj, py_slice); +#else + result = PyObject_GetItem(obj, py_slice); +#endif + if (!_py_slice) { + Py_DECREF(py_slice); + } + return result; + } + obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj)); + PyErr_Format(PyExc_TypeError, + "'" __Pyx_FMT_TYPENAME "' object is unsliceable", obj_type_name); + __Pyx_DECREF_TypeName(obj_type_name); +bad: + return NULL; +} + +/* PyLongBinop */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_Fallback___Pyx_PyLong_AndObjC(PyObject *op1, PyObject *op2, int inplace) { + return (inplace ? PyNumber_InPlaceAnd : PyNumber_And)(op1, op2); +} +#if CYTHON_USE_PYLONG_INTERNALS +static PyObject* __Pyx_Unpacked___Pyx_PyLong_AndObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + if (unlikely(__Pyx_PyLong_IsZero(op1))) { + return __Pyx_NewRef(op1); + } + if ((intval & PyLong_MASK) == intval) { + long last_digit = (long) __Pyx_PyLong_Digits(op1)[0]; + long result = intval & (likely(__Pyx_PyLong_IsPos(op1)) ? last_digit : (PyLong_MASK - last_digit + 1)); + return PyLong_FromLong(result); + } + if (likely(__Pyx_PyLong_IsCompact(op1))) { + a = __Pyx_PyLong_CompactValue(op1); + } else { + const digit* digits = __Pyx_PyLong_Digits(op1); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_and(op1, op2); + } + } + x = a & b; + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla & llb; + return PyLong_FromLongLong(llx); +#endif + return __Pyx_Fallback___Pyx_PyLong_AndObjC(op1, op2, inplace); + + +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyLong_AndObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_UNUSED_VAR(zerodivision_check); + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + return __Pyx_Unpacked___Pyx_PyLong_AndObjC(op1, op2, intval, inplace, zerodivision_check); + } + #endif + return __Pyx_Fallback___Pyx_PyLong_AndObjC(op1, op2, inplace); +} +#endif + +/* PyLongBinop */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_Fallback___Pyx_PyLong_RshiftObjC(PyObject *op1, PyObject *op2, int inplace) { + return (inplace ? PyNumber_InPlaceRshift : PyNumber_Rshift)(op1, op2); +} +#if CYTHON_USE_PYLONG_INTERNALS +static PyObject* __Pyx_Unpacked___Pyx_PyLong_RshiftObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + if (unlikely(__Pyx_PyLong_IsZero(op1))) { + return __Pyx_NewRef(op1); + } + if (likely(__Pyx_PyLong_IsCompact(op1))) { + a = __Pyx_PyLong_CompactValue(op1); + } else { + const digit* digits = __Pyx_PyLong_Digits(op1); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_rshift(op1, op2); + } + } + x = a >> b; + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla >> llb; + return PyLong_FromLongLong(llx); +#endif + return __Pyx_Fallback___Pyx_PyLong_RshiftObjC(op1, op2, inplace); + + +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyLong_RshiftObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_UNUSED_VAR(zerodivision_check); + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + return __Pyx_Unpacked___Pyx_PyLong_RshiftObjC(op1, op2, intval, inplace, zerodivision_check); + } + #endif + return __Pyx_Fallback___Pyx_PyLong_RshiftObjC(op1, op2, inplace); +} +#endif + +/* PyLongBinop */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_Fallback___Pyx_PyLong_LshiftObjC(PyObject *op1, PyObject *op2, int inplace) { + return (inplace ? PyNumber_InPlaceLshift : PyNumber_Lshift)(op1, op2); +} +#if CYTHON_USE_PYLONG_INTERNALS +static PyObject* __Pyx_Unpacked___Pyx_PyLong_LshiftObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + if (unlikely(__Pyx_PyLong_IsZero(op1))) { + return __Pyx_NewRef(op1); + } + if (likely(__Pyx_PyLong_IsCompact(op1))) { + a = __Pyx_PyLong_CompactValue(op1); + } else { + const digit* digits = __Pyx_PyLong_Digits(op1); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_lshift(op1, op2); + } + } + x = a << b; +#ifdef HAVE_LONG_LONG + if (unlikely(!(b < (long) (sizeof(long)*8) && a == x >> b)) && a) { + lla = a; + goto long_long; + } +#else + if (likely(b < (long) (sizeof(long)*8) && a == x >> b) || !a) +#endif + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla << llb; + if (likely(lla == llx >> llb)) + return PyLong_FromLongLong(llx); +#endif + return __Pyx_Fallback___Pyx_PyLong_LshiftObjC(op1, op2, inplace); + + +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyLong_LshiftObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_UNUSED_VAR(zerodivision_check); + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + return __Pyx_Unpacked___Pyx_PyLong_LshiftObjC(op1, op2, intval, inplace, zerodivision_check); + } + #endif + return __Pyx_Fallback___Pyx_PyLong_LshiftObjC(op1, op2, inplace); +} +#endif + +/* GetException */ +#if CYTHON_FAST_THREAD_STATE +static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) +#else +static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) +#endif +{ + PyObject *local_type = NULL, *local_value, *local_tb = NULL; +#if CYTHON_FAST_THREAD_STATE + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if PY_VERSION_HEX >= 0x030C0000 + local_value = tstate->current_exception; + tstate->current_exception = 0; + #else + local_type = tstate->curexc_type; + local_value = tstate->curexc_value; + local_tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; + #endif +#elif __PYX_LIMITED_VERSION_HEX > 0x030C0000 + local_value = PyErr_GetRaisedException(); +#else + PyErr_Fetch(&local_type, &local_value, &local_tb); +#endif +#if __PYX_LIMITED_VERSION_HEX > 0x030C0000 + if (likely(local_value)) { + local_type = (PyObject*) Py_TYPE(local_value); + Py_INCREF(local_type); + local_tb = PyException_GetTraceback(local_value); + } +#else + PyErr_NormalizeException(&local_type, &local_value, &local_tb); +#if CYTHON_FAST_THREAD_STATE + if (unlikely(tstate->curexc_type)) +#else + if (unlikely(PyErr_Occurred())) +#endif + goto bad; + if (local_tb) { + if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) + goto bad; + } +#endif // __PYX_LIMITED_VERSION_HEX > 0x030C0000 + Py_XINCREF(local_tb); + Py_XINCREF(local_type); + Py_XINCREF(local_value); + *type = local_type; + *value = local_value; + *tb = local_tb; +#if CYTHON_FAST_THREAD_STATE + #if CYTHON_USE_EXC_INFO_STACK + { + _PyErr_StackItem *exc_info = tstate->exc_info; + #if PY_VERSION_HEX >= 0x030B00a4 + tmp_value = exc_info->exc_value; + exc_info->exc_value = local_value; + tmp_type = NULL; + tmp_tb = NULL; + Py_XDECREF(local_type); + Py_XDECREF(local_tb); + #else + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = local_type; + exc_info->exc_value = local_value; + exc_info->exc_traceback = local_tb; + #endif + } + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = local_type; + tstate->exc_value = local_value; + tstate->exc_traceback = local_tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#elif __PYX_LIMITED_VERSION_HEX >= 0x030b0000 + PyErr_SetHandledException(local_value); + Py_XDECREF(local_value); + Py_XDECREF(local_type); + Py_XDECREF(local_tb); +#else + PyErr_SetExcInfo(local_type, local_value, local_tb); +#endif + return 0; +#if __PYX_LIMITED_VERSION_HEX <= 0x030C0000 +bad: + *type = 0; + *value = 0; + *tb = 0; + Py_XDECREF(local_type); + Py_XDECREF(local_value); + Py_XDECREF(local_tb); + return -1; +#endif +} + +/* SwapException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_value = exc_info->exc_value; + exc_info->exc_value = *value; + if (tmp_value == NULL || tmp_value == Py_None) { + Py_XDECREF(tmp_value); + tmp_value = NULL; + tmp_type = NULL; + tmp_tb = NULL; + } else { + tmp_type = (PyObject*) Py_TYPE(tmp_value); + Py_INCREF(tmp_type); + #if CYTHON_COMPILING_IN_CPYTHON + tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback; + Py_XINCREF(tmp_tb); + #else + tmp_tb = PyException_GetTraceback(tmp_value); + #endif + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = *type; + exc_info->exc_value = *value; + exc_info->exc_traceback = *tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = *type; + tstate->exc_value = *value; + tstate->exc_traceback = *tb; + #endif + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#else +static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); + PyErr_SetExcInfo(*type, *value, *tb); + *type = tmp_type; + *value = tmp_value; + *tb = tmp_tb; +} +#endif + +/* GetTopmostException */ +#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE +static _PyErr_StackItem * +__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) +{ + _PyErr_StackItem *exc_info = tstate->exc_info; + while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) && + exc_info->previous_item != NULL) + { + exc_info = exc_info->previous_item; + } + return exc_info; +} +#endif + +/* SaveResetException */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + PyObject *exc_value = exc_info->exc_value; + if (exc_value == NULL || exc_value == Py_None) { + *value = NULL; + *type = NULL; + *tb = NULL; + } else { + *value = exc_value; + Py_INCREF(*value); + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + *tb = PyException_GetTraceback(exc_value); + } + #elif CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); + *type = exc_info->exc_type; + *value = exc_info->exc_value; + *tb = exc_info->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #else + *type = tstate->exc_type; + *value = tstate->exc_value; + *tb = tstate->exc_traceback; + Py_XINCREF(*type); + Py_XINCREF(*value); + Py_XINCREF(*tb); + #endif +} +static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { + #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4 + _PyErr_StackItem *exc_info = tstate->exc_info; + PyObject *tmp_value = exc_info->exc_value; + exc_info->exc_value = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); + #else + PyObject *tmp_type, *tmp_value, *tmp_tb; + #if CYTHON_USE_EXC_INFO_STACK + _PyErr_StackItem *exc_info = tstate->exc_info; + tmp_type = exc_info->exc_type; + tmp_value = exc_info->exc_value; + tmp_tb = exc_info->exc_traceback; + exc_info->exc_type = type; + exc_info->exc_value = value; + exc_info->exc_traceback = tb; + #else + tmp_type = tstate->exc_type; + tmp_value = tstate->exc_value; + tmp_tb = tstate->exc_traceback; + tstate->exc_type = type; + tstate->exc_value = value; + tstate->exc_traceback = tb; + #endif + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); + #endif +} +#endif + +/* DivInt[int64_t] */ +static CYTHON_INLINE int64_t __Pyx_div_int64_t(int64_t a, int64_t b, int b_is_constant) { + int64_t q = a / b; + int64_t r = a - q*b; + int64_t adapt_python = (b_is_constant ? + ((r != 0) & ((r < 0) ^ (b < 0))) : + ((r != 0) & ((r ^ b) < 0)) + ); + return q - adapt_python; +} + +/* ModInt[int64_t] */ +static CYTHON_INLINE int64_t __Pyx_mod_int64_t(int64_t a, int64_t b, int b_is_constant) { + int64_t r = a % b; + int64_t adapt_python = (b_is_constant ? + ((r != 0) & ((r < 0) ^ (b < 0))) : + ((r != 0) & ((r ^ b) < 0)) + ); + return r + adapt_python * b; +} + +/* PyObjectVectorCallKwBuilder */ +#if CYTHON_VECTORCALL +static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) { + (void)__Pyx_PyObject_FastCallDict; + if (__Pyx_PyTuple_SET_ITEM(builder, n, key) != (0)) return -1; + Py_INCREF(key); + args[n] = value; + return 0; +} +CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) { + (void)__Pyx_VectorcallBuilder_AddArgStr; + if (unlikely(!PyUnicode_Check(key))) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + return -1; + } + return __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n); +} +static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n) { + PyObject *pyKey = PyUnicode_FromString(key); + if (!pyKey) return -1; + return __Pyx_VectorcallBuilder_AddArg(pyKey, value, builder, args, n); +} +#else // CYTHON_VECTORCALL +CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, CYTHON_UNUSED PyObject **args, CYTHON_UNUSED int n) { + if (unlikely(!PyUnicode_Check(key))) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + return -1; + } + return PyDict_SetItem(builder, key, value); +} +#endif + +/* PyObjectVectorCallMethodKwBuilder */ +#if !CYTHON_VECTORCALL || PY_VERSION_HEX < 0x03090000 +static PyObject *__Pyx_Object_VectorcallMethod_CallFromBuilder(PyObject *name, PyObject *const *args, size_t nargsf, PyObject *kwnames) { + PyObject *result; + PyObject *obj = PyObject_GetAttr(args[0], name); + if (unlikely(!obj)) + return NULL; + result = __Pyx_Object_Vectorcall_CallFromBuilder(obj, args+1, nargsf-1, kwnames); + Py_DECREF(obj); + return result; +} +#endif + +/* DivInt[long] */ +static CYTHON_INLINE long __Pyx_div_long(long a, long b, int b_is_constant) { + long q = a / b; + long r = a - q*b; + long adapt_python = (b_is_constant ? + ((r != 0) & ((r < 0) ^ (b < 0))) : + ((r != 0) & ((r ^ b) < 0)) + ); + return q - adapt_python; +} + +/* ModInt[long] */ +static CYTHON_INLINE long __Pyx_mod_long(long a, long b, int b_is_constant) { + long r = a % b; + long adapt_python = (b_is_constant ? + ((r != 0) & ((r < 0) ^ (b < 0))) : + ((r != 0) & ((r ^ b) < 0)) + ); + return r + adapt_python * b; +} + +/* HasAttr */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { + PyObject *r; + if (unlikely(!PyUnicode_Check(n))) { + PyErr_SetString(PyExc_TypeError, + "hasattr(): attribute name must be string"); + return -1; + } + r = __Pyx_PyObject_GetAttrStrNoError(o, n); + if (!r) { + return (unlikely(PyErr_Occurred())) ? -1 : 0; + } else { + Py_DECREF(r); + return 1; + } +} +#endif + +/* PyLongBinop */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_Fallback___Pyx_PyLong_MultiplyObjC(PyObject *op1, PyObject *op2, int inplace) { + return (inplace ? PyNumber_InPlaceMultiply : PyNumber_Multiply)(op1, op2); +} +#if CYTHON_USE_PYLONG_INTERNALS +static PyObject* __Pyx_Unpacked___Pyx_PyLong_MultiplyObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + const long b = intval; + long a, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG llb = intval; + PY_LONG_LONG lla, llx; +#endif + if (unlikely(__Pyx_PyLong_IsZero(op1))) { + return __Pyx_NewRef(op1); + } + if (likely(__Pyx_PyLong_IsCompact(op1))) { + a = __Pyx_PyLong_CompactValue(op1); + } else { + const digit* digits = __Pyx_PyLong_Digits(op1); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT+30) { + a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT+30) { + lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT+30) { + a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT+30) { + lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT+30) { + a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT+30) { + lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT+30) { + a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT+30) { + lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT+30) { + a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT+30) { + lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT+30) { + a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT+30) { + lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_multiply(op1, op2); + } + } + CYTHON_UNUSED_VAR(a); + CYTHON_UNUSED_VAR(b); + #ifdef HAVE_LONG_LONG + lla = a; + goto long_long; + #else + return PyLong_Type.tp_as_number->nb_multiply(op1, op2); + #endif + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla * llb; + return PyLong_FromLongLong(llx); +#endif + return __Pyx_Fallback___Pyx_PyLong_MultiplyObjC(op1, op2, inplace); + + +} +#endif +static PyObject* __Pyx_Float___Pyx_PyLong_MultiplyObjC(PyObject *float_val, long intval, int zerodivision_check) { + CYTHON_UNUSED_VAR(zerodivision_check); + const long b = intval; + double a = __Pyx_PyFloat_AS_DOUBLE(float_val); + double result; + + result = ((double)a) * (double)b; + return PyFloat_FromDouble(result); +} +static CYTHON_INLINE PyObject* __Pyx_PyLong_MultiplyObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_UNUSED_VAR(zerodivision_check); + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op1))) { + return __Pyx_Unpacked___Pyx_PyLong_MultiplyObjC(op1, op2, intval, inplace, zerodivision_check); + } + #endif + if (PyFloat_CheckExact(op1)) { + return __Pyx_Float___Pyx_PyLong_MultiplyObjC(op1, intval, zerodivision_check); + } + return __Pyx_Fallback___Pyx_PyLong_MultiplyObjC(op1, op2, inplace); +} +#endif + +/* py_abs */ +#if CYTHON_USE_PYLONG_INTERNALS +static PyObject *__Pyx_PyLong_AbsNeg(PyObject *n) { +#if PY_VERSION_HEX >= 0x030C00A7 + if (likely(__Pyx_PyLong_IsCompact(n))) { + return PyLong_FromSize_t(__Pyx_PyLong_CompactValueUnsigned(n)); + } +#else + if (likely(Py_SIZE(n) == -1)) { + return PyLong_FromUnsignedLong(__Pyx_PyLong_Digits(n)[0]); + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON + { + PyObject *copy = _PyLong_Copy((PyLongObject*)n); + if (likely(copy)) { + #if PY_VERSION_HEX >= 0x030C00A7 + ((PyLongObject*)copy)->long_value.lv_tag = ((PyLongObject*)copy)->long_value.lv_tag & ~_PyLong_SIGN_MASK; + #else + __Pyx_SET_SIZE(copy, -Py_SIZE(copy)); + #endif + } + return copy; + } +#else + return PyNumber_Negative(n); +#endif +} +#endif + +/* RaiseTooManyValuesToUnpack */ +static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + PyErr_Format(PyExc_ValueError, + "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); +} + +/* RaiseNeedMoreValuesToUnpack */ +static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + PyErr_Format(PyExc_ValueError, + "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", + index, (index == 1) ? "" : "s"); +} + +/* IterFinish */ +static CYTHON_INLINE int __Pyx_IterFinish(void) { + PyObject* exc_type; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + exc_type = __Pyx_PyErr_CurrentExceptionType(); + if (unlikely(exc_type)) { + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) + return -1; + __Pyx_PyErr_Clear(); + return 0; + } + return 0; +} + +/* UnpackItemEndCheck */ +static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { + if (unlikely(retval)) { + Py_DECREF(retval); + __Pyx_RaiseTooManyValuesError(expected); + return -1; + } + return __Pyx_IterFinish(); +} + +/* PyLongBinop */ +#if !CYTHON_COMPILING_IN_PYPY +static PyObject* __Pyx_Fallback___Pyx_PyLong_AddCObj(PyObject *op1, PyObject *op2, int inplace) { + return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); +} +#if CYTHON_USE_PYLONG_INTERNALS +static PyObject* __Pyx_Unpacked___Pyx_PyLong_AddCObj(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(inplace); + CYTHON_UNUSED_VAR(zerodivision_check); + const long a = intval; + long b, x; +#ifdef HAVE_LONG_LONG + const PY_LONG_LONG lla = intval; + PY_LONG_LONG llb, llx; +#endif + if (unlikely(__Pyx_PyLong_IsZero(op2))) { + return __Pyx_NewRef(op1); + } + if (likely(__Pyx_PyLong_IsCompact(op2))) { + b = __Pyx_PyLong_CompactValue(op2); + } else { + const digit* digits = __Pyx_PyLong_Digits(op2); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op2); + switch (size) { + case -2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + b = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + llb = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 2: + if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { + b = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { + llb = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + b = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + llb = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 3: + if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { + b = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { + llb = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case -4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + b = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + llb = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + case 4: + if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { + b = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); + break; + #ifdef HAVE_LONG_LONG + } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { + llb = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); + goto long_long; + #endif + } + CYTHON_FALLTHROUGH; + default: return PyLong_Type.tp_as_number->nb_add(op1, op2); + } + } + x = a + b; + return PyLong_FromLong(x); +#ifdef HAVE_LONG_LONG + long_long: + llx = lla + llb; + return PyLong_FromLongLong(llx); +#endif + return __Pyx_Fallback___Pyx_PyLong_AddCObj(op1, op2, inplace); + + +} +#endif +static PyObject* __Pyx_Float___Pyx_PyLong_AddCObj(PyObject *float_val, long intval, int zerodivision_check) { + CYTHON_UNUSED_VAR(zerodivision_check); + const long a = intval; + double b = __Pyx_PyFloat_AS_DOUBLE(float_val); + double result; + + result = ((double)a) + (double)b; + return PyFloat_FromDouble(result); +} +static CYTHON_INLINE PyObject* __Pyx_PyLong_AddCObj(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) { + CYTHON_MAYBE_UNUSED_VAR(intval); + CYTHON_UNUSED_VAR(zerodivision_check); + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(PyLong_CheckExact(op2))) { + return __Pyx_Unpacked___Pyx_PyLong_AddCObj(op1, op2, intval, inplace, zerodivision_check); + } + #endif + if (PyFloat_CheckExact(op2)) { + return __Pyx_Float___Pyx_PyLong_AddCObj(op2, intval, zerodivision_check); + } + return __Pyx_Fallback___Pyx_PyLong_AddCObj(op1, op2, inplace); +} +#endif + +/* Import */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + PyObject *module = 0; + PyObject *empty_dict = 0; + PyObject *empty_list = 0; + empty_dict = PyDict_New(); + if (unlikely(!empty_dict)) + goto bad; + if (level == -1) { + const char* package_sep = strchr(__Pyx_MODULE_NAME, '.'); + if (package_sep != (0)) { + module = PyImport_ImportModuleLevelObject( + name, __pyx_mstate_global->__pyx_d, empty_dict, from_list, 1); + if (unlikely(!module)) { + if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) + goto bad; + PyErr_Clear(); + } + } + level = 0; + } + if (!module) { + module = PyImport_ImportModuleLevelObject( + name, __pyx_mstate_global->__pyx_d, empty_dict, from_list, level); + } +bad: + Py_XDECREF(empty_dict); + Py_XDECREF(empty_list); + return module; +} + +/* ImportFrom */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + const char* module_name_str = 0; + PyObject* module_name = 0; + PyObject* module_dot = 0; + PyObject* full_name = 0; + PyErr_Clear(); + module_name_str = PyModule_GetName(module); + if (unlikely(!module_name_str)) { goto modbad; } + module_name = PyUnicode_FromString(module_name_str); + if (unlikely(!module_name)) { goto modbad; } + module_dot = PyUnicode_Concat(module_name, __pyx_mstate_global->__pyx_kp_u__4); + if (unlikely(!module_dot)) { goto modbad; } + full_name = PyUnicode_Concat(module_dot, name); + if (unlikely(!full_name)) { goto modbad; } + #if (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) ||\ + CYTHON_COMPILING_IN_GRAAL + { + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + goto modbad; + value = PyObject_GetItem(modules, full_name); + } + #else + value = PyImport_GetModule(full_name); + #endif + modbad: + Py_XDECREF(full_name); + Py_XDECREF(module_dot); + Py_XDECREF(module_name); + } + if (unlikely(!value)) { + PyErr_Format(PyExc_ImportError, "cannot import name %S", name); + } + return value; +} + +/* CallTypeTraverse */ +#if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000) +#else +static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg) { + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000 + if (__Pyx_get_runtime_version() < 0x03090000) return 0; + #endif + if (!always_call) { + PyTypeObject *base = __Pyx_PyObject_GetSlot(o, tp_base, PyTypeObject*); + unsigned long flags = PyType_GetFlags(base); + if (flags & Py_TPFLAGS_HEAPTYPE) { + return 0; + } + } + Py_VISIT((PyObject*)Py_TYPE(o)); + return 0; +} +#endif + +/* CallNextTpTraverse */ +static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) { + PyTypeObject* type = Py_TYPE(obj); + traverseproc tp_traverse = NULL; + while (type && __Pyx_PyType_GetSlot(type, tp_traverse, traverseproc) != current_tp_traverse) + type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + while (type && (tp_traverse = __Pyx_PyType_GetSlot(type, tp_traverse, traverseproc)) == current_tp_traverse) + type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + if (type && tp_traverse) + return tp_traverse(obj, v, a); + return 0; +} + +/* LimitedApiGetTypeDict */ +#if CYTHON_COMPILING_IN_LIMITED_API +static Py_ssize_t __Pyx_GetTypeDictOffset(void) { + PyObject *tp_dictoffset_o; + Py_ssize_t tp_dictoffset; + tp_dictoffset_o = PyObject_GetAttrString((PyObject*)(&PyType_Type), "__dictoffset__"); + if (unlikely(!tp_dictoffset_o)) return -1; + tp_dictoffset = PyLong_AsSsize_t(tp_dictoffset_o); + Py_DECREF(tp_dictoffset_o); + if (unlikely(tp_dictoffset == 0)) { + PyErr_SetString( + PyExc_TypeError, + "'type' doesn't have a dictoffset"); + return -1; + } else if (unlikely(tp_dictoffset < 0)) { + PyErr_SetString( + PyExc_TypeError, + "'type' has an unexpected negative dictoffset. " + "Please report this as Cython bug"); + return -1; + } + return tp_dictoffset; +} +static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp) { + static Py_ssize_t tp_dictoffset = 0; + if (unlikely(tp_dictoffset == 0)) { + tp_dictoffset = __Pyx_GetTypeDictOffset(); + if (unlikely(tp_dictoffset == -1 && PyErr_Occurred())) { + tp_dictoffset = 0; // try again next time? + return NULL; + } + } + return *(PyObject**)((char*)tp + tp_dictoffset); +} +#endif + +/* SetItemOnTypeDict */ +static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v) { + int result; + PyObject *tp_dict; +#if CYTHON_COMPILING_IN_LIMITED_API + tp_dict = __Pyx_GetTypeDict(tp); + if (unlikely(!tp_dict)) return -1; +#else + tp_dict = tp->tp_dict; +#endif + result = PyDict_SetItem(tp_dict, k, v); + if (likely(!result)) { + PyType_Modified(tp); + if (unlikely(PyObject_HasAttr(v, __pyx_mstate_global->__pyx_n_u_set_name))) { + PyObject *setNameResult = PyObject_CallMethodObjArgs(v, __pyx_mstate_global->__pyx_n_u_set_name, (PyObject *) tp, k, NULL); + if (!setNameResult) return -1; + Py_DECREF(setNameResult); + } + } + return result; +} + +/* FixUpExtensionType */ +static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { +#if __PYX_LIMITED_VERSION_HEX > 0x030900B1 + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); + CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); +#else + const PyType_Slot *slot = spec->slots; + int changed = 0; +#if !CYTHON_COMPILING_IN_LIMITED_API + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { +#if !CYTHON_COMPILING_IN_CPYTHON + const +#endif // !CYTHON_COMPILING_IN_CPYTHON) + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } +#if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); +#if PY_VERSION_HEX >= 0x030800b4 + type->tp_vectorcall_offset = memb->offset; +#else + type->tp_print = (printfunc) memb->offset; +#endif + changed = 1; + } +#endif // CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr); + Py_DECREF(descr); + if (unlikely(set_item_result < 0)) { + return -1; + } + changed = 1; + } + } + memb++; + } + } +#endif // !CYTHON_COMPILING_IN_LIMITED_API + slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_getset) + slot++; + if (slot && slot->slot == Py_tp_getset) { + PyGetSetDef *getset = (PyGetSetDef*) slot->pfunc; + while (getset && getset->name) { + if (getset->name[0] == '_' && getset->name[1] == '_' && strcmp(getset->name, "__module__") == 0) { + PyObject *descr = PyDescr_NewGetSet(type, getset); + if (unlikely(!descr)) + return -1; + #if CYTHON_COMPILING_IN_LIMITED_API + PyObject *pyname = PyUnicode_FromString(getset->name); + if (unlikely(!pyname)) { + Py_DECREF(descr); + return -1; + } + int set_item_result = __Pyx_SetItemOnTypeDict(type, pyname, descr); + Py_DECREF(pyname); + #else + CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); + int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr); + #endif + Py_DECREF(descr); + if (unlikely(set_item_result < 0)) { + return -1; + } + changed = 1; + } + ++getset; + } + } + if (changed) + PyType_Modified(type); +#endif // PY_VERSION_HEX > 0x030900B1 + return 0; +} + +/* PyObjectCallNoArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { + PyObject *arg[2] = {NULL, NULL}; + return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectGetMethod */ +static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { + PyObject *attr; +#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + __Pyx_TypeName type_name; + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); +#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR + if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) +#else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) + #endif +#endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (likely(descr != NULL)) { + *method = descr; + return 0; + } + type_name = __Pyx_PyType_GetFullyQualifiedName(tp); + PyErr_Format(PyExc_AttributeError, + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, name); + __Pyx_DECREF_TypeName(type_name); + return 0; +#else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; +#endif +try_unpack: +#if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } +#endif + *method = attr; + return 0; +} + +/* PyObjectCallMethod0 */ +static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); +bad: + return result; +} + +/* ValidateBasesTuple */ +#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { + Py_ssize_t i, n; +#if CYTHON_ASSUME_SAFE_SIZE + n = PyTuple_GET_SIZE(bases); +#else + n = PyTuple_Size(bases); + if (unlikely(n < 0)) return -1; +#endif + for (i = 1; i < n; i++) + { + PyTypeObject *b; +#if CYTHON_AVOID_BORROWED_REFS + PyObject *b0 = PySequence_GetItem(bases, i); + if (!b0) return -1; +#elif CYTHON_ASSUME_SAFE_MACROS + PyObject *b0 = PyTuple_GET_ITEM(bases, i); +#else + PyObject *b0 = PyTuple_GetItem(bases, i); + if (!b0) return -1; +#endif + b = (PyTypeObject*) b0; + if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) + { + __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b); + PyErr_Format(PyExc_TypeError, + "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); + __Pyx_DECREF_TypeName(b_name); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + if (dictoffset == 0) + { + Py_ssize_t b_dictoffset = 0; +#if CYTHON_USE_TYPE_SLOTS + b_dictoffset = b->tp_dictoffset; +#else + PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); + if (!py_b_dictoffset) goto dictoffset_return; + b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); + Py_DECREF(py_b_dictoffset); + if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; +#endif + if (b_dictoffset) { + { + __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b); + PyErr_Format(PyExc_TypeError, + "extension type '%.200s' has no __dict__ slot, " + "but base type '" __Pyx_FMT_TYPENAME "' has: " + "either add 'cdef dict __dict__' to the extension type " + "or add '__slots__ = [...]' to the base type", + type_name, b_name); + __Pyx_DECREF_TypeName(b_name); + } +#if !CYTHON_USE_TYPE_SLOTS + dictoffset_return: +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + } +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + } + return 0; +} +#endif + +/* PyType_Ready */ +CYTHON_UNUSED static int __Pyx_PyType_HasMultipleInheritance(PyTypeObject *t) { + while (t) { + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases) { + return 1; + } + t = __Pyx_PyType_GetSlot(t, tp_base, PyTypeObject*); + } + return 0; +} +static int __Pyx_PyType_Ready(PyTypeObject *t) { +#if CYTHON_USE_TYPE_SPECS || !CYTHON_COMPILING_IN_CPYTHON || defined(PYSTON_MAJOR_VERSION) + (void)__Pyx_PyObject_CallMethod0; +#if CYTHON_USE_TYPE_SPECS + (void)__Pyx_validate_bases_tuple; +#endif + return PyType_Ready(t); +#else + int r; + if (!__Pyx_PyType_HasMultipleInheritance(t)) { + return PyType_Ready(t); + } + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) + return -1; +#if !defined(PYSTON_MAJOR_VERSION) + { + int gc_was_enabled; + #if PY_VERSION_HEX >= 0x030A00b1 + gc_was_enabled = PyGC_Disable(); + (void)__Pyx_PyObject_CallMethod0; + #else + PyObject *ret, *py_status; + PyObject *gc = NULL; + #if (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) &&\ + !CYTHON_COMPILING_IN_GRAAL + gc = PyImport_GetModule(__pyx_mstate_global->__pyx_kp_u_gc); + #endif + if (unlikely(!gc)) gc = PyImport_Import(__pyx_mstate_global->__pyx_kp_u_gc); + if (unlikely(!gc)) return -1; + py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_isenabled); + if (unlikely(!py_status)) { + Py_DECREF(gc); + return -1; + } + gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); + Py_DECREF(py_status); + if (gc_was_enabled > 0) { + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_disable); + if (unlikely(!ret)) { + Py_DECREF(gc); + return -1; + } + Py_DECREF(ret); + } else if (unlikely(gc_was_enabled == -1)) { + Py_DECREF(gc); + return -1; + } + #endif + t->tp_flags |= Py_TPFLAGS_HEAPTYPE; +#if PY_VERSION_HEX >= 0x030A0000 + t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; +#endif +#else + (void)__Pyx_PyObject_CallMethod0; +#endif + r = PyType_Ready(t); +#if !defined(PYSTON_MAJOR_VERSION) + t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A00b1 + if (gc_was_enabled) + PyGC_Enable(); + #else + if (gc_was_enabled) { + PyObject *tp, *v, *tb; + PyErr_Fetch(&tp, &v, &tb); + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_enable); + if (likely(ret || r == -1)) { + Py_XDECREF(ret); + PyErr_Restore(tp, v, tb); + } else { + Py_XDECREF(tp); + Py_XDECREF(v); + Py_XDECREF(tb); + r = -1; + } + } + Py_DECREF(gc); + #endif + } +#endif + return r; +#endif +} + +/* SetVTable */ +static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) { + PyObject *ob = PyCapsule_New(vtable, 0, 0); + if (unlikely(!ob)) + goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0)) +#else + if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0)) +#endif + goto bad; + Py_DECREF(ob); + return 0; +bad: + Py_XDECREF(ob); + return -1; +} + +/* GetVTable */ +static void* __Pyx_GetVtable(PyTypeObject *type) { + void* ptr; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_mstate_global->__pyx_n_u_pyx_vtable); +#else + PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable); +#endif + if (!ob) + goto bad; + ptr = PyCapsule_GetPointer(ob, 0); + if (!ptr && !PyErr_Occurred()) + PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); + Py_DECREF(ob); + return ptr; +bad: + Py_XDECREF(ob); + return NULL; +} + +/* MergeVTables */ +static int __Pyx_MergeVtables(PyTypeObject *type) { + int i=0; + Py_ssize_t size; + void** base_vtables; + __Pyx_TypeName tp_base_name = NULL; + __Pyx_TypeName base_name = NULL; + void* unknown = (void*)-1; + PyObject* bases = __Pyx_PyType_GetSlot(type, tp_bases, PyObject*); + int base_depth = 0; + { + PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + while (base) { + base_depth += 1; + base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*); + } + } + base_vtables = (void**) PyMem_Malloc(sizeof(void*) * (size_t)(base_depth + 1)); + base_vtables[0] = unknown; +#if CYTHON_COMPILING_IN_LIMITED_API + size = PyTuple_Size(bases); + if (size < 0) goto other_failure; +#else + size = PyTuple_GET_SIZE(bases); +#endif + for (i = 1; i < size; i++) { + PyObject *basei; + void* base_vtable; +#if CYTHON_AVOID_BORROWED_REFS + basei = PySequence_GetItem(bases, i); + if (unlikely(!basei)) goto other_failure; +#elif !CYTHON_ASSUME_SAFE_MACROS + basei = PyTuple_GetItem(bases, i); + if (unlikely(!basei)) goto other_failure; +#else + basei = PyTuple_GET_ITEM(bases, i); +#endif + base_vtable = __Pyx_GetVtable((PyTypeObject*)basei); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(basei); +#endif + if (base_vtable != NULL) { + int j; + PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + for (j = 0; j < base_depth; j++) { + if (base_vtables[j] == unknown) { + base_vtables[j] = __Pyx_GetVtable(base); + base_vtables[j + 1] = unknown; + } + if (base_vtables[j] == base_vtable) { + break; + } else if (base_vtables[j] == NULL) { + goto bad; + } + base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*); + } + } + } + PyErr_Clear(); + PyMem_Free(base_vtables); + return 0; +bad: + { + PyTypeObject* basei = NULL; + PyTypeObject* tp_base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + tp_base_name = __Pyx_PyType_GetFullyQualifiedName(tp_base); +#if CYTHON_AVOID_BORROWED_REFS + basei = (PyTypeObject*)PySequence_GetItem(bases, i); + if (unlikely(!basei)) goto really_bad; +#elif !CYTHON_ASSUME_SAFE_MACROS + basei = (PyTypeObject*)PyTuple_GetItem(bases, i); + if (unlikely(!basei)) goto really_bad; +#else + basei = (PyTypeObject*)PyTuple_GET_ITEM(bases, i); +#endif + base_name = __Pyx_PyType_GetFullyQualifiedName(basei); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(basei); +#endif + } + PyErr_Format(PyExc_TypeError, + "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name); +#if CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS +really_bad: // bad has failed! +#endif + __Pyx_DECREF_TypeName(tp_base_name); + __Pyx_DECREF_TypeName(base_name); +#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS +other_failure: +#endif + PyMem_Free(base_vtables); + return -1; +} + +/* DelItemOnTypeDict */ +static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k) { + int result; + PyObject *tp_dict; +#if CYTHON_COMPILING_IN_LIMITED_API + tp_dict = __Pyx_GetTypeDict(tp); + if (unlikely(!tp_dict)) return -1; +#else + tp_dict = tp->tp_dict; +#endif + result = PyDict_DelItem(tp_dict, k); + if (likely(!result)) PyType_Modified(tp); + return result; +} + +/* SetupReduce */ +static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { + int ret; + PyObject *name_attr; + name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_mstate_global->__pyx_n_u_name); + if (likely(name_attr)) { + ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); + } else { + ret = -1; + } + if (unlikely(ret < 0)) { + PyErr_Clear(); + ret = 0; + } + Py_XDECREF(name_attr); + return ret; +} +static int __Pyx_setup_reduce(PyObject* type_obj) { + int ret = 0; + PyObject *object_reduce = NULL; + PyObject *object_getstate = NULL; + PyObject *object_reduce_ex = NULL; + PyObject *reduce = NULL; + PyObject *reduce_ex = NULL; + PyObject *reduce_cython = NULL; + PyObject *setstate = NULL; + PyObject *setstate_cython = NULL; + PyObject *getstate = NULL; +#if CYTHON_USE_PYTYPE_LOOKUP + getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_getstate); +#else + getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_getstate); + if (!getstate && PyErr_Occurred()) { + goto __PYX_BAD; + } +#endif + if (getstate) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate); +#else + object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate); + if (!object_getstate && PyErr_Occurred()) { + goto __PYX_BAD; + } +#endif + if (object_getstate != getstate) { + goto __PYX_GOOD; + } + } +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#else + object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#endif + reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; + if (reduce_ex == object_reduce_ex) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD; +#else + object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD; +#endif + reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce); if (unlikely(!reduce)) goto __PYX_BAD; + if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_mstate_global->__pyx_n_u_reduce_cython)) { + reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); + if (likely(reduce_cython)) { + ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (reduce == object_reduce || PyErr_Occurred()) { + goto __PYX_BAD; + } + setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate); + if (!setstate) PyErr_Clear(); + if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_mstate_global->__pyx_n_u_setstate_cython)) { + setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); + if (likely(setstate_cython)) { + ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (!setstate || PyErr_Occurred()) { + goto __PYX_BAD; + } + } + PyType_Modified((PyTypeObject*)type_obj); + } + } + goto __PYX_GOOD; +__PYX_BAD: + if (!PyErr_Occurred()) { + __Pyx_TypeName type_obj_name = + __Pyx_PyType_GetFullyQualifiedName((PyTypeObject*)type_obj); + PyErr_Format(PyExc_RuntimeError, + "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name); + __Pyx_DECREF_TypeName(type_obj_name); + } + ret = -1; +__PYX_GOOD: +#if !CYTHON_USE_PYTYPE_LOOKUP + Py_XDECREF(object_reduce); + Py_XDECREF(object_reduce_ex); + Py_XDECREF(object_getstate); + Py_XDECREF(getstate); +#endif + Py_XDECREF(reduce); + Py_XDECREF(reduce_ex); + Py_XDECREF(reduce_cython); + Py_XDECREF(setstate); + Py_XDECREF(setstate_cython); + return ret; +} + +/* TypeImport */ +#ifndef __PYX_HAVE_RT_ImportType_3_1_2 +#define __PYX_HAVE_RT_ImportType_3_1_2 +static PyTypeObject *__Pyx_ImportType_3_1_2(PyObject *module, const char *module_name, const char *class_name, + size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_1_2 check_size) +{ + PyObject *result = 0; + Py_ssize_t basicsize; + Py_ssize_t itemsize; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + PyObject *py_itemsize; +#endif + result = PyObject_GetAttrString(module, class_name); + if (!result) + goto bad; + if (!PyType_Check(result)) { + PyErr_Format(PyExc_TypeError, + "%.200s.%.200s is not a type object", + module_name, class_name); + goto bad; + } +#if !CYTHON_COMPILING_IN_LIMITED_API + basicsize = ((PyTypeObject *)result)->tp_basicsize; + itemsize = ((PyTypeObject *)result)->tp_itemsize; +#else + if (size == 0) { + return (PyTypeObject *)result; + } + py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); + if (!py_basicsize) + goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; + py_itemsize = PyObject_GetAttrString(result, "__itemsize__"); + if (!py_itemsize) + goto bad; + itemsize = PyLong_AsSsize_t(py_itemsize); + Py_DECREF(py_itemsize); + py_itemsize = 0; + if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; +#endif + if (itemsize) { + if (size % alignment) { + alignment = size % alignment; + } + if (itemsize < (Py_ssize_t)alignment) + itemsize = (Py_ssize_t)alignment; + } + if ((size_t)(basicsize + itemsize) < size) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize+itemsize); + goto bad; + } + if (check_size == __Pyx_ImportType_CheckSize_Error_3_1_2 && + ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd-%zd from PyObject", + module_name, class_name, size, basicsize, basicsize+itemsize); + goto bad; + } + else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_1_2 && (size_t)basicsize > size) { + if (PyErr_WarnFormat(NULL, 0, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize) < 0) { + goto bad; + } + } + return (PyTypeObject *)result; +bad: + Py_XDECREF(result); + return NULL; +} +#endif + +/* ListPack */ +static PyObject *__Pyx_PyList_Pack(Py_ssize_t n, ...) { + va_list va; + PyObject *l = PyList_New(n); + va_start(va, n); + if (unlikely(!l)) goto end; + for (Py_ssize_t i=0; i__pyx_n_u_spec); + if (likely(spec)) { + PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_mstate_global->__pyx_n_u_initializing); + if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) { + Py_DECREF(spec); + spec = NULL; + } + Py_XDECREF(unsafe); + } + if (likely(!spec)) { + PyErr_Clear(); + return module; + } + Py_DECREF(spec); + Py_DECREF(module); + } else if (PyErr_Occurred()) { + PyErr_Clear(); + } +#endif + return __Pyx__ImportDottedModule(name, parts_tuple); +} + +/* Py3UpdateBases */ +static PyObject* +__Pyx_PEP560_update_bases(PyObject *bases) +{ + Py_ssize_t i, j, size_bases; + PyObject *base = NULL, *meth, *new_base, *result, *new_bases = NULL; +#if CYTHON_ASSUME_SAFE_SIZE + size_bases = PyTuple_GET_SIZE(bases); +#else + size_bases = PyTuple_Size(bases); + if (size_bases < 0) return NULL; +#endif + for (i = 0; i < size_bases; i++) { +#if CYTHON_AVOID_BORROWED_REFS + Py_CLEAR(base); +#endif +#if CYTHON_ASSUME_SAFE_MACROS + base = PyTuple_GET_ITEM(bases, i); +#else + base = PyTuple_GetItem(bases, i); + if (!base) goto error; +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(base); +#endif + if (PyType_Check(base)) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + meth = __Pyx_PyObject_GetAttrStrNoError(base, __pyx_mstate_global->__pyx_n_u_mro_entries); + if (!meth && PyErr_Occurred()) { + goto error; + } + if (!meth) { + if (new_bases) { + if (PyList_Append(new_bases, base) < 0) { + goto error; + } + } + continue; + } + new_base = __Pyx_PyObject_CallOneArg(meth, bases); + Py_DECREF(meth); + if (!new_base) { + goto error; + } + if (!PyTuple_Check(new_base)) { + PyErr_SetString(PyExc_TypeError, + "__mro_entries__ must return a tuple"); + Py_DECREF(new_base); + goto error; + } + if (!new_bases) { + if (!(new_bases = PyList_New(i))) { + goto error; + } + for (j = 0; j < i; j++) { + PyObject *base_from_list; +#if CYTHON_ASSUME_SAFE_MACROS + base_from_list = PyTuple_GET_ITEM(bases, j); + PyList_SET_ITEM(new_bases, j, base_from_list); + Py_INCREF(base_from_list); +#else + base_from_list = PyTuple_GetItem(bases, j); + if (!base_from_list) goto error; + Py_INCREF(base_from_list); + if (PyList_SetItem(new_bases, j, base_from_list) < 0) goto error; +#endif + } + } +#if CYTHON_ASSUME_SAFE_SIZE + j = PyList_GET_SIZE(new_bases); +#else + j = PyList_Size(new_bases); + if (j < 0) goto error; +#endif + if (PyList_SetSlice(new_bases, j, j, new_base) < 0) { + goto error; + } + Py_DECREF(new_base); + } + if (!new_bases) { + Py_INCREF(bases); + return bases; + } + result = PyList_AsTuple(new_bases); + Py_DECREF(new_bases); +#if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(base); +#endif + return result; +error: + Py_XDECREF(new_bases); +#if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(base); +#endif + return NULL; +} + +/* CalculateMetaclass */ +static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { + Py_ssize_t i, nbases; +#if CYTHON_ASSUME_SAFE_SIZE + nbases = PyTuple_GET_SIZE(bases); +#else + nbases = PyTuple_Size(bases); + if (nbases < 0) return NULL; +#endif + for (i=0; i < nbases; i++) { + PyTypeObject *tmptype; +#if CYTHON_ASSUME_SAFE_MACROS + PyObject *tmp = PyTuple_GET_ITEM(bases, i); +#else + PyObject *tmp = PyTuple_GetItem(bases, i); + if (!tmp) return NULL; +#endif + tmptype = Py_TYPE(tmp); + if (!metaclass) { + metaclass = tmptype; + continue; + } + if (PyType_IsSubtype(metaclass, tmptype)) + continue; + if (PyType_IsSubtype(tmptype, metaclass)) { + metaclass = tmptype; + continue; + } + PyErr_SetString(PyExc_TypeError, + "metaclass conflict: " + "the metaclass of a derived class " + "must be a (non-strict) subclass " + "of the metaclasses of all its bases"); + return NULL; + } + if (!metaclass) { + metaclass = &PyType_Type; + } + Py_INCREF((PyObject*) metaclass); + return (PyObject*) metaclass; +} + +/* PyObjectCall2Args */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { + PyObject *args[3] = {NULL, arg1, arg2}; + return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectLookupSpecial */ +#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) { + PyObject *res; + PyTypeObject *tp = Py_TYPE(obj); + res = _PyType_Lookup(tp, attr_name); + if (likely(res)) { + descrgetfunc f = Py_TYPE(res)->tp_descr_get; + if (!f) { + Py_INCREF(res); + } else { + res = f(res, obj, (PyObject *)tp); + } + } else if (with_error) { + PyErr_SetObject(PyExc_AttributeError, attr_name); + } + return res; +} +#endif + +/* Py3ClassCreate */ +static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, + PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { + PyObject *ns; + if (metaclass) { + PyObject *prep = __Pyx_PyObject_GetAttrStrNoError(metaclass, __pyx_mstate_global->__pyx_n_u_prepare); + if (prep) { + PyObject *pargs[3] = {NULL, name, bases}; + ns = __Pyx_PyObject_FastCallDict(prep, pargs+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw); + Py_DECREF(prep); + } else { + if (unlikely(PyErr_Occurred())) + return NULL; + ns = PyDict_New(); + } + } else { + ns = PyDict_New(); + } + if (unlikely(!ns)) + return NULL; + if (unlikely(PyObject_SetItem(ns, __pyx_mstate_global->__pyx_n_u_module, modname) < 0)) goto bad; + if (unlikely(PyObject_SetItem(ns, __pyx_mstate_global->__pyx_n_u_qualname, qualname) < 0)) goto bad; + if (unlikely(doc && PyObject_SetItem(ns, __pyx_mstate_global->__pyx_n_u_doc, doc) < 0)) goto bad; + return ns; +bad: + Py_DECREF(ns); + return NULL; +} +static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, + PyObject *dict, PyObject *mkw, + int calculate_metaclass, int allow_py2_metaclass) { + PyObject *result; + PyObject *owned_metaclass = NULL; + PyObject *margs[4] = {NULL, name, bases, dict}; + if (allow_py2_metaclass) { + owned_metaclass = PyObject_GetItem(dict, __pyx_mstate_global->__pyx_n_u_metaclass); + if (owned_metaclass) { + metaclass = owned_metaclass; + } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { + PyErr_Clear(); + } else { + return NULL; + } + } + if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { + metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); + Py_XDECREF(owned_metaclass); + if (unlikely(!metaclass)) + return NULL; + owned_metaclass = metaclass; + } + result = __Pyx_PyObject_FastCallDict(metaclass, margs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw); + Py_XDECREF(owned_metaclass); + return result; +} + +/* FetchSharedCythonModule */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void) { + return __Pyx_PyImport_AddModuleRef(__PYX_ABI_MODULE_NAME); +} + +/* dict_setdefault */ +static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value, + int is_safe_type) { + PyObject* value; + CYTHON_MAYBE_UNUSED_VAR(is_safe_type); +#if CYTHON_COMPILING_IN_LIMITED_API + value = PyObject_CallMethod(d, "setdefault", "OO", key, default_value); +#elif PY_VERSION_HEX >= 0x030d0000 + PyDict_SetDefaultRef(d, key, default_value, &value); +#else + value = PyDict_SetDefault(d, key, default_value); + if (unlikely(!value)) return NULL; + Py_INCREF(value); +#endif + return value; +} + +/* FetchCommonType */ +#if __PYX_LIMITED_VERSION_HEX < 0x030C0000 +static PyObject* __Pyx_PyType_FromMetaclass(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *result = __Pyx_PyType_FromModuleAndSpec(module, spec, bases); + if (result && metaclass) { + PyObject *old_tp = (PyObject*)Py_TYPE(result); + Py_INCREF((PyObject*)metaclass); +#if __PYX_LIMITED_VERSION_HEX >= 0x03090000 + Py_SET_TYPE(result, metaclass); +#else + result->ob_type = metaclass; +#endif + Py_DECREF(old_tp); + } + return result; +} +#else +#define __Pyx_PyType_FromMetaclass(me, mo, s, b) PyType_FromMetaclass(me, mo, s, b) +#endif +static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t expected_basicsize) { + Py_ssize_t basicsize; + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (expected_basicsize == 0) { + return 0; // size is inherited, nothing useful to check + } +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) return -1; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = NULL; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) return -1; +#else + basicsize = ((PyTypeObject*) cached_type)->tp_basicsize; +#endif + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; +} +static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module = NULL, *cached_type = NULL, *abi_module_dict, *new_cached_type, *py_object_name; + int get_item_ref_result; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + py_object_name = PyUnicode_FromString(object_name); + if (!py_object_name) return NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) goto done; + abi_module_dict = PyModule_GetDict(abi_module); + if (!abi_module_dict) goto done; + get_item_ref_result = __Pyx_PyDict_GetItemRef(abi_module_dict, py_object_name, &cached_type); + if (get_item_ref_result == 1) { + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } else if (unlikely(get_item_ref_result == -1)) { + goto bad; + } + CYTHON_UNUSED_VAR(module); + cached_type = __Pyx_PyType_FromMetaclass(metaclass, abi_module, spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + new_cached_type = __Pyx_PyDict_SetDefault(abi_module_dict, py_object_name, cached_type, 1); + if (unlikely(new_cached_type != cached_type)) { + if (unlikely(!new_cached_type)) goto bad; + Py_DECREF(cached_type); + cached_type = new_cached_type; + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } else { + Py_DECREF(new_cached_type); + } +done: + Py_XDECREF(abi_module); + Py_DECREF(py_object_name); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} + +/* CommonTypesMetaclass */ +PyObject* __pyx_CommonTypesMetaclass_get_module(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED void* context) { + return PyUnicode_FromString(__PYX_ABI_MODULE_NAME); +} +static PyGetSetDef __pyx_CommonTypesMetaclass_getset[] = { + {"__module__", __pyx_CommonTypesMetaclass_get_module, NULL, NULL, NULL}, + {0, 0, 0, 0, 0} +}; +static PyType_Slot __pyx_CommonTypesMetaclass_slots[] = { + {Py_tp_getset, (void *)__pyx_CommonTypesMetaclass_getset}, + {0, 0} +}; +static PyType_Spec __pyx_CommonTypesMetaclass_spec = { + __PYX_TYPE_MODULE_PREFIX "_common_types_metatype", + 0, + 0, +#if PY_VERSION_HEX >= 0x030A0000 + Py_TPFLAGS_IMMUTABLETYPE | + Py_TPFLAGS_DISALLOW_INSTANTIATION | +#endif + Py_TPFLAGS_DEFAULT, + __pyx_CommonTypesMetaclass_slots +}; +static int __pyx_CommonTypesMetaclass_init(PyObject *module) { + __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); + PyObject *bases = PyTuple_Pack(1, &PyType_Type); + if (unlikely(!bases)) { + return -1; + } + mstate->__pyx_CommonTypesMetaclassType = __Pyx_FetchCommonTypeFromSpec(NULL, module, &__pyx_CommonTypesMetaclass_spec, bases); + if (unlikely(mstate->__pyx_CommonTypesMetaclassType == NULL)) { + return -1; + } + return 0; +} + +/* PyMethodNew */ +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + PyObject *result; + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + #if __PYX_LIMITED_VERSION_HEX >= 0x030C0000 + { + PyObject *args[] = {func, self}; + result = PyObject_Vectorcall(__pyx_mstate_global->__Pyx_CachedMethodType, args, 2, NULL); + } + #else + result = PyObject_CallFunctionObjArgs(__pyx_mstate_global->__Pyx_CachedMethodType, func, self, NULL); + #endif + return result; +} +#else +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); +} +#endif + +/* PyVectorcallFastCallDict */ +#if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL) +static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i, pos; + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + #if !CYTHON_ASSUME_SAFE_SIZE + Py_ssize_t nkw = PyDict_Size(kw); + if (unlikely(nkw == -1)) return NULL; + #else + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + #endif + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (PyDict_Next(kw, &pos, &key, &value)) { + keys_are_strings &= + #if CYTHON_COMPILING_IN_LIMITED_API + PyType_GetFlags(Py_TYPE(key)); + #else + Py_TYPE(key)->tp_flags; + #endif + Py_INCREF(key); + Py_INCREF(value); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely(PyTuple_SetItem(kwnames, i, key) < 0)) goto cleanup; + #else + PyTuple_SET_ITEM(kwnames, i, key); + #endif + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); +cleanup: + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; +} +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + Py_ssize_t kw_size = + likely(kw == NULL) ? + 0 : +#if !CYTHON_ASSUME_SAFE_SIZE + PyDict_Size(kw); +#else + PyDict_GET_SIZE(kw); +#endif + if (kw_size == 0) { + return vc(func, args, nargs, NULL); + } +#if !CYTHON_ASSUME_SAFE_SIZE + else if (unlikely(kw_size == -1)) { + return NULL; + } +#endif + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); +} +#endif + +/* CythonFunctionShared */ +#if CYTHON_COMPILING_IN_LIMITED_API +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunctionNoMethod(PyObject *func, void (*cfunc)(void)) { + if (__Pyx_CyFunction_Check(func)) { + return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; + } else if (PyCFunction_Check(func)) { + return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; + } + return 0; +} +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) { + if ((PyObject*)Py_TYPE(func) == __pyx_mstate_global->__Pyx_CachedMethodType) { + int result; + PyObject *newFunc = PyObject_GetAttr(func, __pyx_mstate_global->__pyx_n_u_func); + if (unlikely(!newFunc)) { + PyErr_Clear(); // It's only an optimization, so don't throw an error + return 0; + } + result = __Pyx__IsSameCyOrCFunctionNoMethod(newFunc, cfunc); + Py_DECREF(newFunc); + return result; + } + return __Pyx__IsSameCyOrCFunctionNoMethod(func, cfunc); +} +#else +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) { + if (PyMethod_Check(func)) { + func = PyMethod_GET_FUNCTION(func); + } + return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +} +#endif +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#endif +} +static PyObject * +__Pyx_CyFunction_get_doc_locked(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_doc == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); + if (unlikely(!op->func_doc)) return NULL; +#else + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } +#endif + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) { + PyObject *result; + CYTHON_UNUSED_VAR(closure); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_doc_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name_locked(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_name == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_name = PyObject_GetAttrString(op->func, "__name__"); +#else + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) +{ + PyObject *result = NULL; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_name_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL || !PyUnicode_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_name, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + PyObject *result; + __Pyx_BEGIN_CRITICAL_SECTION(op); + Py_INCREF(op->func_qualname); + result = op->func_qualname; + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL || !PyUnicode_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_dict_locked(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + PyObject *result; + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_dict_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_dict, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults_locked(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_tuple; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = NULL; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_defaults_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults_locked(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_kwdict; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_kwdefaults_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations_locked(__pyx_CyFunctionObject *op) { + PyObject* result = op->func_annotations; + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject *result; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_annotations_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine_value(__pyx_CyFunctionObject *op) { + int is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; + if (is_coroutine) { + PyObject *is_coroutine_value, *module, *fromlist, *marker = __pyx_mstate_global->__pyx_n_u_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); +#if CYTHON_ASSUME_SAFE_MACROS + PyList_SET_ITEM(fromlist, 0, marker); +#else + if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { + Py_DECREF(marker); + Py_DECREF(fromlist); + return NULL; + } +#endif + module = PyImport_ImportModuleLevelObject(__pyx_mstate_global->__pyx_n_u_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + is_coroutine_value = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(is_coroutine_value)) { + return is_coroutine_value; + } +ignore: + PyErr_Clear(); + } + return __Pyx_PyBool_FromLong(is_coroutine); +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + PyObject *result; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + result = __Pyx_CyFunction_get_is_coroutine_value(op); + if (unlikely(!result)) + return NULL; + __Pyx_BEGIN_CRITICAL_SECTION(op); + if (op->func_is_coroutine) { + Py_DECREF(result); + result = __Pyx_NewRef(op->func_is_coroutine); + } else { + op->func_is_coroutine = __Pyx_NewRef(result); + } + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static void __Pyx_CyFunction_raise_argument_count_error(__pyx_CyFunctionObject *func, const char* message, Py_ssize_t size) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL); + if (!py_name) return; + PyErr_Format(PyExc_TypeError, + "%.200S() %s (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, message, size); + Py_DECREF(py_name); +#else + const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name; + PyErr_Format(PyExc_TypeError, + "%.200s() %s (%" CYTHON_FORMAT_SSIZE_T "d given)", + name, message, size); +#endif +} +static void __Pyx_CyFunction_raise_type_error(__pyx_CyFunctionObject *func, const char* message) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL); + if (!py_name) return; + PyErr_Format(PyExc_TypeError, + "%.200S() %s", + py_name, message); + Py_DECREF(py_name); +#else + const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name; + PyErr_Format(PyExc_TypeError, + "%.200s() %s", + name, message); +#endif +} +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject * +__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_GetAttrString(op->func, "__module__"); +} +static int +__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_SetAttrString(op->func, "__module__", value); +} +#endif +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {"func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {"__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {"func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {"__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {"__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {"func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {"__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {"func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {"__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {"func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {"__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {"func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {"__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {"func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {"__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {"__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {"__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {"_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { +#if !CYTHON_COMPILING_IN_LIMITED_API + {"__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, +#endif + {"__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, +#if CYTHON_METH_FASTCALL +#if CYTHON_BACKPORT_VECTORCALL || CYTHON_COMPILING_IN_LIMITED_API + {"__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, +#else + {"__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + {"__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, +#else + {"__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, +#endif +#endif + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) +{ + PyObject *result = NULL; + CYTHON_UNUSED_VAR(args); + __Pyx_BEGIN_CRITICAL_SECTION(m); + Py_INCREF(m->func_qualname); + result = m->func_qualname; + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +#if !CYTHON_COMPILING_IN_LIMITED_API + PyCFunctionObject *cf = (PyCFunctionObject*) op; +#endif + if (unlikely(op == NULL)) + return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); + if (unlikely(!op->func)) return NULL; +#endif + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; +#if !CYTHON_COMPILING_IN_LIMITED_API + cf->m_ml = ml; + cf->m_self = (PyObject *) op; +#endif + Py_XINCREF(closure); + op->func_closure = closure; +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_XINCREF(module); + cf->m_module = module; +#endif + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + op->func_classobj = NULL; +#else + ((PyCMethodObject*)op)->mm_class = NULL; +#endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; +#if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } +#endif + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func); +#else + Py_CLEAR(((PyCFunctionObject*)m)->m_module); +#endif + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API +#if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); +#else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } +#endif +#endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + Py_CLEAR(m->defaults); + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + { + int e = __Pyx_call_type_traverse((PyObject*)m, 1, visit, arg); + if (e) return e; + } + Py_VISIT(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func); +#else + Py_VISIT(((PyCFunctionObject*)m)->m_module); +#endif + Py_VISIT(m->func_dict); + __Pyx_VISIT_CONST(m->func_name); + __Pyx_VISIT_CONST(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + __Pyx_VISIT_CONST(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); +#endif + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + Py_VISIT(m->defaults); + return 0; +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ + PyObject *repr; + __Pyx_BEGIN_CRITICAL_SECTION(op); + repr = PyUnicode_FromFormat("", + op->func_qualname, (void *)op); + __Pyx_END_CRITICAL_SECTION(); + return repr; +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *f = ((__pyx_CyFunctionObject*)func)->func; + PyCFunction meth; + int flags; + meth = PyCFunction_GetFunction(f); + if (unlikely(!meth)) return NULL; + flags = PyCFunction_GetFlags(f); + if (unlikely(flags < 0)) return NULL; +#else + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + int flags = f->m_ml->ml_flags; +#endif + Py_ssize_t size; + switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void(*)(void))meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_SIZE + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 0)) + return (*meth)(self, NULL); + __Pyx_CyFunction_raise_argument_count_error( + (__pyx_CyFunctionObject*)func, + "takes no arguments", size); + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_SIZE + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } + __Pyx_CyFunction_raise_argument_count_error( + (__pyx_CyFunctionObject*)func, + "takes exactly one argument", size); + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } + __Pyx_CyFunction_raise_type_error( + (__pyx_CyFunctionObject*)func, "takes no keyword arguments"); + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *self, *result; +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)func)->m_self; +#endif + result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); + return result; +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +#if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL) + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); +#else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); +#endif + } +#endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; +#if CYTHON_ASSUME_SAFE_SIZE + argc = PyTuple_GET_SIZE(args); +#else + argc = PyTuple_Size(args); + if (unlikely(argc < 0)) return NULL; +#endif + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +#if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL) +static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) +{ + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + __Pyx_CyFunction_raise_type_error( + cyfunc, "needs an argument"); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(__Pyx_PyTuple_GET_SIZE(kwnames))) { + __Pyx_CyFunction_raise_type_error( + cyfunc, "takes no keyword arguments"); + return -1; + } + return ret; +} +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + __Pyx_CyFunction_raise_argument_count_error( + cyfunc, "takes no arguments", nargs); + return NULL; + } + return meth(self, NULL); +} +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + __Pyx_CyFunction_raise_argument_count_error( + cyfunc, "takes exactly one argument", nargs); + return NULL; + } + return meth(self, args[0]); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))meth)(self, args, nargs, kwnames); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + return ((__Pyx_PyCMethod)(void(*)(void))meth)(self, cls, args, (size_t)nargs, kwnames); +} +#endif +static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, +}; +static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if CYTHON_METH_FASTCALL +#if defined(Py_TPFLAGS_HAVE_VECTORCALL) + Py_TPFLAGS_HAVE_VECTORCALL | +#elif defined(_Py_TPFLAGS_HAVE_VECTORCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif +#endif // CYTHON_METH_FASTCALL +#if PY_VERSION_HEX >= 0x030A0000 + Py_TPFLAGS_IMMUTABLETYPE | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots +}; +static int __pyx_CyFunction_init(PyObject *module) { + __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); + mstate->__pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec( + mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_CyFunctionType_spec, NULL); + if (unlikely(mstate->__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func, PyTypeObject *defaults_type) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_CallObject((PyObject*)defaults_type, NULL); // _PyObject_New(defaults_type); + if (unlikely(!m->defaults)) + return NULL; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + Py_INCREF(dict); +} + +/* CythonFunction */ +static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_mstate_global->__pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + +/* CLineInTraceback */ +#if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_mstate_global->__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_mstate_global->__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __Pyx_BEGIN_CRITICAL_SECTION(*cython_runtime_dict); + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_mstate_global->__pyx_n_u_cline_in_traceback)) + Py_XINCREF(use_cline); + __Pyx_END_CRITICAL_SECTION(); + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_mstate_global->__pyx_cython_runtime, __pyx_mstate_global->__pyx_n_u_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_INCREF(use_cline); + Py_DECREF(use_cline_obj); + } else { + PyErr_Clear(); + use_cline = NULL; + } + } + if (!use_cline) { + c_line = 0; + (void) PyObject_SetAttr(__pyx_mstate_global->__pyx_cython_runtime, __pyx_mstate_global->__pyx_n_u_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + Py_XDECREF(use_cline); + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ +static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static __Pyx_CachedCodeObjectType *__pyx__find_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line) { + __Pyx_CachedCodeObjectType* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!code_cache->entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line); + if (unlikely(pos >= code_cache->count) || unlikely(code_cache->entries[pos].code_line != code_line)) { + return NULL; + } + code_object = code_cache->entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line) { +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS + (void)__pyx__find_code_object; + return NULL; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just miss. +#else + struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_nonatomic_int_type old_count = __pyx_atomic_incr_acq_rel(&code_cache->accessor_count); + if (old_count < 0) { + __pyx_atomic_decr_acq_rel(&code_cache->accessor_count); + return NULL; + } +#endif + __Pyx_CachedCodeObjectType *result = __pyx__find_code_object(code_cache, code_line); +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_atomic_decr_acq_rel(&code_cache->accessor_count); +#endif + return result; +#endif +} +static void __pyx__insert_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line, __Pyx_CachedCodeObjectType* code_object) +{ + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = code_cache->entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + code_cache->entries = entries; + code_cache->max_count = 64; + code_cache->count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line); + if ((pos < code_cache->count) && unlikely(code_cache->entries[pos].code_line == code_line)) { + __Pyx_CachedCodeObjectType* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_INCREF(code_object); + Py_DECREF(tmp); + return; + } + if (code_cache->count == code_cache->max_count) { + int new_max = code_cache->max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + code_cache->entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + code_cache->entries = entries; + code_cache->max_count = new_max; + } + for (i=code_cache->count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + code_cache->count++; + Py_INCREF(code_object); +} +static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object) { +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS + (void)__pyx__insert_code_object; + return; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just fail. +#else + struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_nonatomic_int_type expected = 0; + if (!__pyx_atomic_int_cmp_exchange(&code_cache->accessor_count, &expected, INT_MIN)) { + return; + } +#endif + __pyx__insert_code_object(code_cache, code_line, code_object); +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_atomic_sub(&code_cache->accessor_count, INT_MIN); +#endif +#endif +} + +/* AddTraceback */ +#include "compile.h" +#include "frameobject.h" +#include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API && !defined(PYPY_VERSION) + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, + PyObject *firstlineno, PyObject *name) { + PyObject *replace = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; + replace = PyObject_GetAttrString(code, "replace"); + if (likely(replace)) { + PyObject *result = PyObject_Call(replace, __pyx_mstate_global->__pyx_empty_tuple, scratch_dict); + Py_DECREF(replace); + return result; + } + PyErr_Clear(); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; + PyObject *replace = NULL, *getframe = NULL, *frame = NULL; + PyObject *exc_type, *exc_value, *exc_traceback; + int success = 0; + if (c_line) { + (void) __pyx_cfilenm; + (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + code_object = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!code_object) { + code_object = Py_CompileString("_getframe()", filename, Py_eval_input); + if (unlikely(!code_object)) goto bad; + py_py_line = PyLong_FromLong(py_line); + if (unlikely(!py_py_line)) goto bad; + py_funcname = PyUnicode_FromString(funcname); + if (unlikely(!py_funcname)) goto bad; + dict = PyDict_New(); + if (unlikely(!dict)) goto bad; + { + PyObject *old_code_object = code_object; + code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); + Py_DECREF(old_code_object); + } + if (unlikely(!code_object)) goto bad; + __pyx_insert_code_object(c_line ? -c_line : py_line, code_object); + } else { + dict = PyDict_New(); + } + getframe = PySys_GetObject("_getframe"); + if (unlikely(!getframe)) goto bad; + if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; + frame = PyEval_EvalCode(code_object, dict, dict); + if (unlikely(!frame) || frame == Py_None) goto bad; + success = 1; + bad: + PyErr_Restore(exc_type, exc_value, exc_traceback); + Py_XDECREF(code_object); + Py_XDECREF(py_py_line); + Py_XDECREF(py_funcname); + Py_XDECREF(dict); + Py_XDECREF(replace); + if (success) { + PyTraceBack_Here( + (struct _frame*)frame); + } + Py_XDECREF(frame); +} +#else +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + if (c_line) { + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + if (!py_funcname) goto bad; + funcname = PyUnicode_AsUTF8(py_funcname); + if (!funcname) goto bad; + } + py_code = PyCode_NewEmpty(filename, funcname, py_line); + Py_XDECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_funcname); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject *ptype, *pvalue, *ptraceback; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); + if (!py_code) { + /* If the code object creation fails, then we should clear the + fetched exception references and propagate the new exception */ + Py_XDECREF(ptype); + Py_XDECREF(pvalue); + Py_XDECREF(ptraceback); + goto bad; + } + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_mstate_global->__pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} +#endif + +/* CIntFromPyVerify */ +#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + +/* CIntFromPy */ +static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + int val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (int) -1; + val = __Pyx_PyLong_As_int(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) { + return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) { + return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) { + return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) { + return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int) -1; + } else { + stepval = v; + } + v = NULL; + val = (int) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int"); + return (int) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int"); + return (int) -1; +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_long(long value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(long) < sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyLong_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(long), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL, *kwds = NULL; + PyObject *py_bytes = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + { + PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str }; + if (!is_unsigned) { + kwds = __Pyx_MakeVectorcallBuilderKwds(1); + if (!kwds) goto limited_bad; + if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad; + } + result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds); + } + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* CIntFromPy */ +static CYTHON_INLINE int64_t __Pyx_PyLong_As_int64_t(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int64_t neg_one = (int64_t) -1, const_zero = (int64_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + int64_t val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (int64_t) -1; + val = __Pyx_PyLong_As_int64_t(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int64_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int64_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int64_t) >= 2 * PyLong_SHIFT)) { + return (int64_t) (((((int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int64_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int64_t) >= 3 * PyLong_SHIFT)) { + return (int64_t) (((((((int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int64_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int64_t) >= 4 * PyLong_SHIFT)) { + return (int64_t) (((((((((int64_t)digits[3]) << PyLong_SHIFT) | (int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int64_t) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int64_t) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int64_t, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int64_t) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int64_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int64_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int64_t) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int64_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int64_t) - 1 > 2 * PyLong_SHIFT)) { + return (int64_t) (((int64_t)-1)*(((((int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int64_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int64_t) - 1 > 2 * PyLong_SHIFT)) { + return (int64_t) ((((((int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int64_t) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int64_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int64_t) - 1 > 3 * PyLong_SHIFT)) { + return (int64_t) (((int64_t)-1)*(((((((int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int64_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int64_t) - 1 > 3 * PyLong_SHIFT)) { + return (int64_t) ((((((((int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int64_t) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int64_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int64_t) - 1 > 4 * PyLong_SHIFT)) { + return (int64_t) (((int64_t)-1)*(((((((((int64_t)digits[3]) << PyLong_SHIFT) | (int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int64_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int64_t) - 1 > 4 * PyLong_SHIFT)) { + return (int64_t) ((((((((((int64_t)digits[3]) << PyLong_SHIFT) | (int64_t)digits[2]) << PyLong_SHIFT) | (int64_t)digits[1]) << PyLong_SHIFT) | (int64_t)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int64_t) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int64_t, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int64_t) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int64_t, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int64_t val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int64_t) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int64_t) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int64_t) -1; + } else { + stepval = v; + } + v = NULL; + val = (int64_t) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int64_t) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int64_t) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int64_t) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int64_t) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int64_t) 1) << (sizeof(int64_t) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int64_t) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int64_t"); + return (int64_t) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int64_t"); + return (int64_t) -1; +} + +/* CIntFromPy */ +static CYTHON_INLINE int32_t __Pyx_PyLong_As_int32_t(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int32_t neg_one = (int32_t) -1, const_zero = (int32_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + int32_t val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (int32_t) -1; + val = __Pyx_PyLong_As_int32_t(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int32_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int32_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int32_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int32_t) >= 2 * PyLong_SHIFT)) { + return (int32_t) (((((int32_t)digits[1]) << PyLong_SHIFT) | (int32_t)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int32_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int32_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int32_t) >= 3 * PyLong_SHIFT)) { + return (int32_t) (((((((int32_t)digits[2]) << PyLong_SHIFT) | (int32_t)digits[1]) << PyLong_SHIFT) | (int32_t)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int32_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int32_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int32_t) >= 4 * PyLong_SHIFT)) { + return (int32_t) (((((((((int32_t)digits[3]) << PyLong_SHIFT) | (int32_t)digits[2]) << PyLong_SHIFT) | (int32_t)digits[1]) << PyLong_SHIFT) | (int32_t)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int32_t) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int32_t) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int32_t, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int32_t) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int32_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int32_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int32_t) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int32_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int32_t) - 1 > 2 * PyLong_SHIFT)) { + return (int32_t) (((int32_t)-1)*(((((int32_t)digits[1]) << PyLong_SHIFT) | (int32_t)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int32_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int32_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int32_t) - 1 > 2 * PyLong_SHIFT)) { + return (int32_t) ((((((int32_t)digits[1]) << PyLong_SHIFT) | (int32_t)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int32_t) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int32_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int32_t) - 1 > 3 * PyLong_SHIFT)) { + return (int32_t) (((int32_t)-1)*(((((((int32_t)digits[2]) << PyLong_SHIFT) | (int32_t)digits[1]) << PyLong_SHIFT) | (int32_t)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int32_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int32_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int32_t) - 1 > 3 * PyLong_SHIFT)) { + return (int32_t) ((((((((int32_t)digits[2]) << PyLong_SHIFT) | (int32_t)digits[1]) << PyLong_SHIFT) | (int32_t)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int32_t) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int32_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int32_t) - 1 > 4 * PyLong_SHIFT)) { + return (int32_t) (((int32_t)-1)*(((((((((int32_t)digits[3]) << PyLong_SHIFT) | (int32_t)digits[2]) << PyLong_SHIFT) | (int32_t)digits[1]) << PyLong_SHIFT) | (int32_t)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int32_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int32_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int32_t) - 1 > 4 * PyLong_SHIFT)) { + return (int32_t) ((((((((((int32_t)digits[3]) << PyLong_SHIFT) | (int32_t)digits[2]) << PyLong_SHIFT) | (int32_t)digits[1]) << PyLong_SHIFT) | (int32_t)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int32_t) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int32_t, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int32_t) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int32_t, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int32_t val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int32_t) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int32_t) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int32_t) -1; + } else { + stepval = v; + } + v = NULL; + val = (int32_t) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int32_t) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int32_t) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int32_t) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int32_t) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int32_t) 1) << (sizeof(int32_t) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int32_t) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int32_t"); + return (int32_t) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int32_t"); + return (int32_t) -1; +} + +/* CIntFromPy */ +static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const long neg_one = (long) -1, const_zero = (long) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + long val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (long) -1; + val = __Pyx_PyLong_As_long(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + long val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (long) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (long) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (long) -1; + } else { + stepval = v; + } + v = NULL; + val = (long) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((long) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (long) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int32_t(int32_t value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int32_t neg_one = (int32_t) -1, const_zero = (int32_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(int32_t) < sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(int32_t) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY + } else if (sizeof(int32_t) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(int32_t) <= sizeof(long)) { + return PyLong_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int32_t) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(int32_t), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL, *kwds = NULL; + PyObject *py_bytes = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int32_t)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + { + PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str }; + if (!is_unsigned) { + kwds = __Pyx_MakeVectorcallBuilderKwds(1); + if (!kwds) goto limited_bad; + if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad; + } + result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds); + } + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int(int value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int neg_one = (int) -1, const_zero = (int) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(int) < sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(int) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY + } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(int) <= sizeof(long)) { + return PyLong_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(int), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL, *kwds = NULL; + PyObject *py_bytes = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + { + PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str }; + if (!is_unsigned) { + kwds = __Pyx_MakeVectorcallBuilderKwds(1); + if (!kwds) goto limited_bad; + if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad; + } + result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds); + } + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* CIntFromPy */ +static CYTHON_INLINE unsigned char __Pyx_PyLong_As_unsigned_char(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const unsigned char neg_one = (unsigned char) -1, const_zero = (unsigned char) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + unsigned char val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (unsigned char) -1; + val = __Pyx_PyLong_As_unsigned_char(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(unsigned char, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(unsigned char) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(unsigned char) >= 2 * PyLong_SHIFT)) { + return (unsigned char) (((((unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(unsigned char) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(unsigned char) >= 3 * PyLong_SHIFT)) { + return (unsigned char) (((((((unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(unsigned char) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(unsigned char) >= 4 * PyLong_SHIFT)) { + return (unsigned char) (((((((((unsigned char)digits[3]) << PyLong_SHIFT) | (unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (unsigned char) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(unsigned char) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(unsigned char, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(unsigned char) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(unsigned char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(unsigned char, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(unsigned char) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(unsigned char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(unsigned char) - 1 > 2 * PyLong_SHIFT)) { + return (unsigned char) (((unsigned char)-1)*(((((unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(unsigned char) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(unsigned char) - 1 > 2 * PyLong_SHIFT)) { + return (unsigned char) ((((((unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(unsigned char) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(unsigned char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(unsigned char) - 1 > 3 * PyLong_SHIFT)) { + return (unsigned char) (((unsigned char)-1)*(((((((unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(unsigned char) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(unsigned char) - 1 > 3 * PyLong_SHIFT)) { + return (unsigned char) ((((((((unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(unsigned char) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(unsigned char, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(unsigned char) - 1 > 4 * PyLong_SHIFT)) { + return (unsigned char) (((unsigned char)-1)*(((((((((unsigned char)digits[3]) << PyLong_SHIFT) | (unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(unsigned char) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(unsigned char) - 1 > 4 * PyLong_SHIFT)) { + return (unsigned char) ((((((((((unsigned char)digits[3]) << PyLong_SHIFT) | (unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(unsigned char) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(unsigned char, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(unsigned char) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(unsigned char, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + unsigned char val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (unsigned char) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (unsigned char) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (unsigned char) -1; + } else { + stepval = v; + } + v = NULL; + val = (unsigned char) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(unsigned char) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((unsigned char) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(unsigned char) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((unsigned char) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((unsigned char) 1) << (sizeof(unsigned char) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (unsigned char) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to unsigned char"); + return (unsigned char) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to unsigned char"); + return (unsigned char) -1; +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint8_t(uint8_t value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const uint8_t neg_one = (uint8_t) -1, const_zero = (uint8_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(uint8_t) < sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(uint8_t) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY + } else if (sizeof(uint8_t) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(uint8_t) <= sizeof(long)) { + return PyLong_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(uint8_t) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(uint8_t), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL, *kwds = NULL; + PyObject *py_bytes = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(uint8_t)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + { + PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str }; + if (!is_unsigned) { + kwds = __Pyx_MakeVectorcallBuilderKwds(1); + if (!kwds) goto limited_bad; + if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad; + } + result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds); + } + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int64_t(int64_t value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int64_t neg_one = (int64_t) -1, const_zero = (int64_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(int64_t) < sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(int64_t) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY + } else if (sizeof(int64_t) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(int64_t) <= sizeof(long)) { + return PyLong_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(int64_t) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(int64_t), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL, *kwds = NULL; + PyObject *py_bytes = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int64_t)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + { + PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str }; + if (!is_unsigned) { + kwds = __Pyx_MakeVectorcallBuilderKwds(1); + if (!kwds) goto limited_bad; + if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad; + } + result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds); + } + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* CIntFromPy */ +static CYTHON_INLINE int16_t __Pyx_PyLong_As_int16_t(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int16_t neg_one = (int16_t) -1, const_zero = (int16_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + int16_t val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (int16_t) -1; + val = __Pyx_PyLong_As_int16_t(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int16_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int16_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int16_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int16_t) >= 2 * PyLong_SHIFT)) { + return (int16_t) (((((int16_t)digits[1]) << PyLong_SHIFT) | (int16_t)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int16_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int16_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int16_t) >= 3 * PyLong_SHIFT)) { + return (int16_t) (((((((int16_t)digits[2]) << PyLong_SHIFT) | (int16_t)digits[1]) << PyLong_SHIFT) | (int16_t)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int16_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int16_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int16_t) >= 4 * PyLong_SHIFT)) { + return (int16_t) (((((((((int16_t)digits[3]) << PyLong_SHIFT) | (int16_t)digits[2]) << PyLong_SHIFT) | (int16_t)digits[1]) << PyLong_SHIFT) | (int16_t)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int16_t) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int16_t) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int16_t, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int16_t) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int16_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int16_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int16_t) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int16_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int16_t) - 1 > 2 * PyLong_SHIFT)) { + return (int16_t) (((int16_t)-1)*(((((int16_t)digits[1]) << PyLong_SHIFT) | (int16_t)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int16_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int16_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int16_t) - 1 > 2 * PyLong_SHIFT)) { + return (int16_t) ((((((int16_t)digits[1]) << PyLong_SHIFT) | (int16_t)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int16_t) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int16_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int16_t) - 1 > 3 * PyLong_SHIFT)) { + return (int16_t) (((int16_t)-1)*(((((((int16_t)digits[2]) << PyLong_SHIFT) | (int16_t)digits[1]) << PyLong_SHIFT) | (int16_t)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int16_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int16_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int16_t) - 1 > 3 * PyLong_SHIFT)) { + return (int16_t) ((((((((int16_t)digits[2]) << PyLong_SHIFT) | (int16_t)digits[1]) << PyLong_SHIFT) | (int16_t)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int16_t) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int16_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int16_t) - 1 > 4 * PyLong_SHIFT)) { + return (int16_t) (((int16_t)-1)*(((((((((int16_t)digits[3]) << PyLong_SHIFT) | (int16_t)digits[2]) << PyLong_SHIFT) | (int16_t)digits[1]) << PyLong_SHIFT) | (int16_t)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int16_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int16_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int16_t) - 1 > 4 * PyLong_SHIFT)) { + return (int16_t) ((((((((((int16_t)digits[3]) << PyLong_SHIFT) | (int16_t)digits[2]) << PyLong_SHIFT) | (int16_t)digits[1]) << PyLong_SHIFT) | (int16_t)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int16_t) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int16_t, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int16_t) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int16_t, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int16_t val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int16_t) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int16_t) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int16_t) -1; + } else { + stepval = v; + } + v = NULL; + val = (int16_t) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int16_t) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int16_t) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int16_t) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int16_t) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int16_t) 1) << (sizeof(int16_t) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int16_t) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int16_t"); + return (int16_t) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int16_t"); + return (int16_t) -1; +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint16_t(uint16_t value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const uint16_t neg_one = (uint16_t) -1, const_zero = (uint16_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(uint16_t) < sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(uint16_t) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY + } else if (sizeof(uint16_t) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(uint16_t) <= sizeof(long)) { + return PyLong_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(uint16_t) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(uint16_t), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL, *kwds = NULL; + PyObject *py_bytes = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(uint16_t)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + { + PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str }; + if (!is_unsigned) { + kwds = __Pyx_MakeVectorcallBuilderKwds(1); + if (!kwds) goto limited_bad; + if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad; + } + result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds); + } + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* CIntFromPy */ +static CYTHON_INLINE char __Pyx_PyLong_As_char(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const char neg_one = (char) -1, const_zero = (char) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + char val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (char) -1; + val = __Pyx_PyLong_As_char(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(char, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(char) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) >= 2 * PyLong_SHIFT)) { + return (char) (((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(char) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) >= 3 * PyLong_SHIFT)) { + return (char) (((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(char) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) >= 4 * PyLong_SHIFT)) { + return (char) (((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (char) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(char) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(char, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(char) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(char, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(char) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { + return (char) (((char)-1)*(((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(char) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { + return (char) ((((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { + return (char) (((char)-1)*(((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(char) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { + return (char) ((((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) - 1 > 4 * PyLong_SHIFT)) { + return (char) (((char)-1)*(((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(char) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) - 1 > 4 * PyLong_SHIFT)) { + return (char) ((((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(char) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(char, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(char) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(char, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + char val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (char) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (char) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (char) -1; + } else { + stepval = v; + } + v = NULL; + val = (char) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(char) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((char) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(char) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((char) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((char) 1) << (sizeof(char) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (char) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to char"); + return (char) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to char"); + return (char) -1; +} + +/* CIntFromPy */ +static CYTHON_INLINE int8_t __Pyx_PyLong_As_int8_t(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const int8_t neg_one = (int8_t) -1, const_zero = (int8_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + int8_t val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (int8_t) -1; + val = __Pyx_PyLong_As_int8_t(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int8_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(int8_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int8_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int8_t) >= 2 * PyLong_SHIFT)) { + return (int8_t) (((((int8_t)digits[1]) << PyLong_SHIFT) | (int8_t)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(int8_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int8_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int8_t) >= 3 * PyLong_SHIFT)) { + return (int8_t) (((((((int8_t)digits[2]) << PyLong_SHIFT) | (int8_t)digits[1]) << PyLong_SHIFT) | (int8_t)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(int8_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int8_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int8_t) >= 4 * PyLong_SHIFT)) { + return (int8_t) (((((((((int8_t)digits[3]) << PyLong_SHIFT) | (int8_t)digits[2]) << PyLong_SHIFT) | (int8_t)digits[1]) << PyLong_SHIFT) | (int8_t)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (int8_t) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(int8_t) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(int8_t, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int8_t) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int8_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(int8_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(int8_t) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int8_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int8_t) - 1 > 2 * PyLong_SHIFT)) { + return (int8_t) (((int8_t)-1)*(((((int8_t)digits[1]) << PyLong_SHIFT) | (int8_t)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(int8_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int8_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int8_t) - 1 > 2 * PyLong_SHIFT)) { + return (int8_t) ((((((int8_t)digits[1]) << PyLong_SHIFT) | (int8_t)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(int8_t) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int8_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int8_t) - 1 > 3 * PyLong_SHIFT)) { + return (int8_t) (((int8_t)-1)*(((((((int8_t)digits[2]) << PyLong_SHIFT) | (int8_t)digits[1]) << PyLong_SHIFT) | (int8_t)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(int8_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int8_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int8_t) - 1 > 3 * PyLong_SHIFT)) { + return (int8_t) ((((((((int8_t)digits[2]) << PyLong_SHIFT) | (int8_t)digits[1]) << PyLong_SHIFT) | (int8_t)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(int8_t) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int8_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int8_t) - 1 > 4 * PyLong_SHIFT)) { + return (int8_t) (((int8_t)-1)*(((((((((int8_t)digits[3]) << PyLong_SHIFT) | (int8_t)digits[2]) << PyLong_SHIFT) | (int8_t)digits[1]) << PyLong_SHIFT) | (int8_t)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(int8_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(int8_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(int8_t) - 1 > 4 * PyLong_SHIFT)) { + return (int8_t) ((((((((((int8_t)digits[3]) << PyLong_SHIFT) | (int8_t)digits[2]) << PyLong_SHIFT) | (int8_t)digits[1]) << PyLong_SHIFT) | (int8_t)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(int8_t) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(int8_t, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(int8_t) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int8_t, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + int8_t val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (int8_t) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (int8_t) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (int8_t) -1; + } else { + stepval = v; + } + v = NULL; + val = (int8_t) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(int8_t) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((int8_t) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(int8_t) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((int8_t) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((int8_t) 1) << (sizeof(int8_t) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (int8_t) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to int8_t"); + return (int8_t) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to int8_t"); + return (int8_t) -1; +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint32_t(uint32_t value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const uint32_t neg_one = (uint32_t) -1, const_zero = (uint32_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(uint32_t) < sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(uint32_t) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY + } else if (sizeof(uint32_t) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(uint32_t) <= sizeof(long)) { + return PyLong_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(uint32_t) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(uint32_t), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL, *kwds = NULL; + PyObject *py_bytes = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(uint32_t)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + { + PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str }; + if (!is_unsigned) { + kwds = __Pyx_MakeVectorcallBuilderKwds(1); + if (!kwds) goto limited_bad; + if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad; + } + result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds); + } + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* CIntFromPy */ +static CYTHON_INLINE uint32_t __Pyx_PyLong_As_uint32_t(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const uint32_t neg_one = (uint32_t) -1, const_zero = (uint32_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + uint32_t val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (uint32_t) -1; + val = __Pyx_PyLong_As_uint32_t(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(uint32_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(uint32_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint32_t) >= 2 * PyLong_SHIFT)) { + return (uint32_t) (((((uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(uint32_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint32_t) >= 3 * PyLong_SHIFT)) { + return (uint32_t) (((((((uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(uint32_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint32_t) >= 4 * PyLong_SHIFT)) { + return (uint32_t) (((((((((uint32_t)digits[3]) << PyLong_SHIFT) | (uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (uint32_t) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(uint32_t) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(uint32_t, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(uint32_t) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(uint32_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(uint32_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(uint32_t) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint32_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint32_t) - 1 > 2 * PyLong_SHIFT)) { + return (uint32_t) (((uint32_t)-1)*(((((uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(uint32_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint32_t) - 1 > 2 * PyLong_SHIFT)) { + return (uint32_t) ((((((uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(uint32_t) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint32_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint32_t) - 1 > 3 * PyLong_SHIFT)) { + return (uint32_t) (((uint32_t)-1)*(((((((uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(uint32_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint32_t) - 1 > 3 * PyLong_SHIFT)) { + return (uint32_t) ((((((((uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(uint32_t) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint32_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint32_t) - 1 > 4 * PyLong_SHIFT)) { + return (uint32_t) (((uint32_t)-1)*(((((((((uint32_t)digits[3]) << PyLong_SHIFT) | (uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(uint32_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint32_t) - 1 > 4 * PyLong_SHIFT)) { + return (uint32_t) ((((((((((uint32_t)digits[3]) << PyLong_SHIFT) | (uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(uint32_t) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(uint32_t, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(uint32_t) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(uint32_t, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + uint32_t val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (uint32_t) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (uint32_t) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (uint32_t) -1; + } else { + stepval = v; + } + v = NULL; + val = (uint32_t) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(uint32_t) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((uint32_t) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(uint32_t) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((uint32_t) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((uint32_t) 1) << (sizeof(uint32_t) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (uint32_t) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to uint32_t"); + return (uint32_t) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to uint32_t"); + return (uint32_t) -1; +} + +/* CIntFromPy */ +static CYTHON_INLINE uint64_t __Pyx_PyLong_As_uint64_t(PyObject *x) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + uint64_t val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (uint64_t) -1; + val = __Pyx_PyLong_As_uint64_t(tmp); + Py_DECREF(tmp); + return val; + } + if (is_unsigned) { +#if CYTHON_USE_PYLONG_INTERNALS + if (unlikely(__Pyx_PyLong_IsNeg(x))) { + goto raise_neg_overflow; + } else if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(uint64_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_DigitCount(x)) { + case 2: + if ((8 * sizeof(uint64_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint64_t) >= 2 * PyLong_SHIFT)) { + return (uint64_t) (((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(uint64_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint64_t) >= 3 * PyLong_SHIFT)) { + return (uint64_t) (((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(uint64_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint64_t) >= 4 * PyLong_SHIFT)) { + return (uint64_t) (((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])); + } + } + break; + } + } +#endif +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7 + if (unlikely(Py_SIZE(x) < 0)) { + goto raise_neg_overflow; + } +#else + { + int result = PyObject_RichCompareBool(x, Py_False, Py_LT); + if (unlikely(result < 0)) + return (uint64_t) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(uint64_t) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(uint64_t, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(uint64_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(uint64_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x)) + } else { + const digit* digits = __Pyx_PyLong_Digits(x); + assert(__Pyx_PyLong_DigitCount(x) > 1); + switch (__Pyx_PyLong_SignedDigitCount(x)) { + case -2: + if ((8 * sizeof(uint64_t) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT)) { + return (uint64_t) (((uint64_t)-1)*(((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(uint64_t) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT)) { + return (uint64_t) ((((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT)) { + return (uint64_t) (((uint64_t)-1)*(((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(uint64_t) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT)) { + return (uint64_t) ((((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint64_t) - 1 > 4 * PyLong_SHIFT)) { + return (uint64_t) (((uint64_t)-1)*(((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(uint64_t) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(uint64_t) - 1 > 4 * PyLong_SHIFT)) { + return (uint64_t) ((((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(uint64_t) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(uint64_t, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(uint64_t) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(uint64_t, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + uint64_t val; + int ret = -1; +#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API + Py_ssize_t bytes_copied = PyLong_AsNativeBytes( + x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0)); + if (unlikely(bytes_copied == -1)) { + } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) { + goto raise_overflow; + } else { + ret = 0; + } +#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray) + int one = 1; int is_little = (int)*(unsigned char *)&one; + unsigned char *bytes = (unsigned char *)&val; + ret = _PyLong_AsByteArray((PyLongObject *)x, + bytes, sizeof(val), + is_little, !is_unsigned); +#else + PyObject *v; + PyObject *stepval = NULL, *mask = NULL, *shift = NULL; + int bits, remaining_bits, is_negative = 0; + int chunk_size = (sizeof(long) < 8) ? 30 : 62; + if (likely(PyLong_CheckExact(x))) { + v = __Pyx_NewRef(x); + } else { + v = PyNumber_Long(x); + if (unlikely(!v)) return (uint64_t) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (uint64_t) -1; + } + is_negative = result == 1; + } + if (is_unsigned && unlikely(is_negative)) { + Py_DECREF(v); + goto raise_neg_overflow; + } else if (is_negative) { + stepval = PyNumber_Invert(v); + Py_DECREF(v); + if (unlikely(!stepval)) + return (uint64_t) -1; + } else { + stepval = v; + } + v = NULL; + val = (uint64_t) 0; + mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done; + shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done; + for (bits = 0; bits < (int) sizeof(uint64_t) * 8 - chunk_size; bits += chunk_size) { + PyObject *tmp, *digit; + long idigit; + digit = PyNumber_And(stepval, mask); + if (unlikely(!digit)) goto done; + idigit = PyLong_AsLong(digit); + Py_DECREF(digit); + if (unlikely(idigit < 0)) goto done; + val |= ((uint64_t) idigit) << bits; + tmp = PyNumber_Rshift(stepval, shift); + if (unlikely(!tmp)) goto done; + Py_DECREF(stepval); stepval = tmp; + } + Py_DECREF(shift); shift = NULL; + Py_DECREF(mask); mask = NULL; + { + long idigit = PyLong_AsLong(stepval); + if (unlikely(idigit < 0)) goto done; + remaining_bits = ((int) sizeof(uint64_t) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((uint64_t) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((uint64_t) 1) << (sizeof(uint64_t) * 8 - 1)))) + goto raise_overflow; + if (is_negative) + val = ~val; + } + ret = 0; + done: + Py_XDECREF(shift); + Py_XDECREF(mask); + Py_XDECREF(stepval); +#endif + if (unlikely(ret)) + return (uint64_t) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to uint64_t"); + return (uint64_t) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to uint64_t"); + return (uint64_t) -1; +} + +/* CIntToPy */ +static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint64_t(uint64_t value) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (is_unsigned) { + if (sizeof(uint64_t) < sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(uint64_t) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY + } else if (sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(uint64_t) <= sizeof(long)) { + return PyLong_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(uint64_t) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); +#endif + } + } + { + unsigned char *bytes = (unsigned char *)&value; +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4 + if (is_unsigned) { + return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1); + } else { + return PyLong_FromNativeBytes(bytes, sizeof(value), -1); + } +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000 + int one = 1; int little = (int)*(unsigned char *)&one; + return _PyLong_FromByteArray(bytes, sizeof(uint64_t), + little, !is_unsigned); +#else + int one = 1; int little = (int)*(unsigned char *)&one; + PyObject *from_bytes, *result = NULL, *kwds = NULL; + PyObject *py_bytes = NULL, *order_str = NULL; + from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes"); + if (!from_bytes) return NULL; + py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(uint64_t)); + if (!py_bytes) goto limited_bad; + order_str = PyUnicode_FromString(little ? "little" : "big"); + if (!order_str) goto limited_bad; + { + PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str }; + if (!is_unsigned) { + kwds = __Pyx_MakeVectorcallBuilderKwds(1); + if (!kwds) goto limited_bad; + if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad; + } + result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds); + } + limited_bad: + Py_XDECREF(kwds); + Py_XDECREF(order_str); + Py_XDECREF(py_bytes); + Py_XDECREF(from_bytes); + return result; +#endif + } +} + +/* FormatTypeName */ +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static __Pyx_TypeName +__Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp) +{ + PyObject *module = NULL, *name = NULL, *result = NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 + name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_mstate_global->__pyx_n_u_qualname); + #else + name = PyType_GetQualName(tp); + #endif + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) goto bad; + module = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_mstate_global->__pyx_n_u_module); + if (unlikely(module == NULL) || unlikely(!PyUnicode_Check(module))) goto bad; + if (PyUnicode_CompareWithASCIIString(module, "builtins") == 0) { + result = name; + name = NULL; + goto done; + } + result = PyUnicode_FromFormat("%U.%U", module, name); + if (unlikely(result == NULL)) goto bad; + done: + Py_XDECREF(name); + Py_XDECREF(module); + return result; + bad: + PyErr_Clear(); + if (name) { + result = name; + name = NULL; + } else { + result = __Pyx_NewRef(__pyx_mstate_global->__pyx_kp_u__5); + } + goto done; +} +#endif + +/* FastTypeChecks */ +#if CYTHON_COMPILING_IN_CPYTHON +static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { + while (a) { + a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*); + if (a == b) + return 1; + } + return b == &PyBaseObject_Type; +} +static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (a == b) return 1; + mro = a->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(a, b); +} +static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) { + PyObject *mro; + if (cls == a || cls == b) return 1; + mro = cls->tp_mro; + if (likely(mro)) { + Py_ssize_t i, n; + n = PyTuple_GET_SIZE(mro); + for (i = 0; i < n; i++) { + PyObject *base = PyTuple_GET_ITEM(mro, i); + if (base == (PyObject *)a || base == (PyObject *)b) + return 1; + } + return 0; + } + return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b); +} +static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { + if (exc_type1) { + return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2); + } else { + return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); + } +} +static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { + Py_ssize_t i, n; + assert(PyExceptionClass_Check(exc_type)); + n = PyTuple_GET_SIZE(tuple); + for (i=0; i= 0x030b0000 + return Py_Version & ~0xFFUL; +#else + static unsigned long __Pyx_cached_runtime_version = 0; + if (__Pyx_cached_runtime_version == 0) { + const char* rt_version = Py_GetVersion(); + unsigned long version = 0; + unsigned long factor = 0x01000000UL; + unsigned int digit = 0; + int i = 0; + while (factor) { + while ('0' <= rt_version[i] && rt_version[i] <= '9') { + digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); + ++i; + } + version += factor * digit; + if (rt_version[i] != '.') + break; + digit = 0; + factor >>= 8; + ++i; + } + __Pyx_cached_runtime_version = version; + } + return __Pyx_cached_runtime_version; +#endif +} + +/* CheckBinaryVersion */ +static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { + const unsigned long MAJOR_MINOR = 0xFFFF0000UL; + if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) + return 0; + if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) + return 1; + { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compile time Python version %d.%d " + "of module '%.100s' " + "%s " + "runtime version %d.%d", + (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), + __Pyx_MODULE_NAME, + (allow_newer) ? "was newer than" : "does not match", + (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) + ); + return PyErr_WarnEx(NULL, message, 1); + } +} + +/* FunctionExport */ +static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { + PyObject *d = 0; + PyObject *cobj = 0; + union { + void (*fp)(void); + void *p; + } tmp; + d = PyObject_GetAttrString(__pyx_m, "__pyx_capi__"); + if (!d) { + PyErr_Clear(); + d = PyDict_New(); + if (!d) + goto bad; + Py_INCREF(d); + if (PyModule_AddObject(__pyx_m, "__pyx_capi__", d) < 0) + goto bad; + } + tmp.fp = f; + cobj = PyCapsule_New(tmp.p, sig, 0); + if (!cobj) + goto bad; + if (PyDict_SetItemString(d, name, cobj) < 0) + goto bad; + Py_DECREF(cobj); + Py_DECREF(d); + return 0; +bad: + Py_XDECREF(cobj); + Py_XDECREF(d); + return -1; +} + +/* NewCodeObj */ +#if CYTHON_COMPILING_IN_LIMITED_API + static PyObject* __Pyx__PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyObject *exception_table = NULL; + PyObject *types_module=NULL, *code_type=NULL, *result=NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 + PyObject *version_info; + PyObject *py_minor_version = NULL; + #endif + long minor_version = 0; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + #if __PYX_LIMITED_VERSION_HEX >= 0x030b0000 + minor_version = 11; + #else + if (!(version_info = PySys_GetObject("version_info"))) goto end; + if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; + minor_version = PyLong_AsLong(py_minor_version); + Py_DECREF(py_minor_version); + if (minor_version == -1 && PyErr_Occurred()) goto end; + #endif + if (!(types_module = PyImport_ImportModule("types"))) goto end; + if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; + if (minor_version <= 7) { + (void)p; + result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOOO", a, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else if (minor_version <= 10) { + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOOO", a,p, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else { + if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOOOO", a,p, k, l, s, f, code, + c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); + } + end: + Py_XDECREF(code_type); + Py_XDECREF(exception_table); + Py_XDECREF(types_module); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; + } +#elif PY_VERSION_HEX >= 0x030B0000 + static PyCodeObject* __Pyx__PyCode_New(int a, int p, int k, int l, int s, int f, + PyObject *code, PyObject *c, PyObject* n, PyObject *v, + PyObject *fv, PyObject *cell, PyObject* fn, + PyObject *name, int fline, PyObject *lnos) { + PyCodeObject *result; + result = + #if PY_VERSION_HEX >= 0x030C0000 + PyUnstable_Code_NewWithPosOnlyArgs + #else + PyCode_NewWithPosOnlyArgs + #endif + (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, __pyx_mstate_global->__pyx_empty_bytes); + return result; + } +#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx__PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx__PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#endif +static PyObject* __Pyx_PyCode_New( + const __Pyx_PyCode_New_function_description descr, + PyObject * const *varnames, + PyObject *filename, + PyObject *funcname, + const char *line_table, + PyObject *tuple_dedup_map +) { + PyObject *code_obj = NULL, *varnames_tuple_dedup = NULL, *code_bytes = NULL, *line_table_bytes = NULL; + Py_ssize_t var_count = (Py_ssize_t) descr.nlocals; + PyObject *varnames_tuple = PyTuple_New(var_count); + if (unlikely(!varnames_tuple)) return NULL; + for (Py_ssize_t i=0; i < var_count; i++) { + Py_INCREF(varnames[i]); + if (__Pyx_PyTuple_SET_ITEM(varnames_tuple, i, varnames[i]) != (0)) goto done; + } + #if CYTHON_COMPILING_IN_LIMITED_API + varnames_tuple_dedup = PyDict_GetItem(tuple_dedup_map, varnames_tuple); + if (!varnames_tuple_dedup) { + if (unlikely(PyDict_SetItem(tuple_dedup_map, varnames_tuple, varnames_tuple) < 0)) goto done; + varnames_tuple_dedup = varnames_tuple; + } + #else + varnames_tuple_dedup = PyDict_SetDefault(tuple_dedup_map, varnames_tuple, varnames_tuple); + if (unlikely(!varnames_tuple_dedup)) goto done; + #endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(varnames_tuple_dedup); + #endif + if (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table != NULL + && !CYTHON_COMPILING_IN_GRAAL) { + line_table_bytes = PyBytes_FromStringAndSize(line_table, descr.line_table_length); + if (unlikely(!line_table_bytes)) goto done; + Py_ssize_t code_len = (descr.line_table_length * 2 + 4) & ~3; + code_bytes = PyBytes_FromStringAndSize(NULL, code_len); + if (unlikely(!code_bytes)) goto done; + char* c_code_bytes = PyBytes_AsString(code_bytes); + if (unlikely(!c_code_bytes)) goto done; + memset(c_code_bytes, 0, (size_t) code_len); + } + code_obj = (PyObject*) __Pyx__PyCode_New( + (int) descr.argcount, + (int) descr.num_posonly_args, + (int) descr.num_kwonly_args, + (int) descr.nlocals, + 0, + (int) descr.flags, + code_bytes ? code_bytes : __pyx_mstate_global->__pyx_empty_bytes, + __pyx_mstate_global->__pyx_empty_tuple, + __pyx_mstate_global->__pyx_empty_tuple, + varnames_tuple_dedup, + __pyx_mstate_global->__pyx_empty_tuple, + __pyx_mstate_global->__pyx_empty_tuple, + filename, + funcname, + (int) descr.first_line, + (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table_bytes) ? line_table_bytes : __pyx_mstate_global->__pyx_empty_bytes + ); +done: + Py_XDECREF(code_bytes); + Py_XDECREF(line_table_bytes); + #if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(varnames_tuple_dedup); + #endif + Py_DECREF(varnames_tuple); + return code_obj; +} + +/* InitStrings */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry const *t, PyObject **target, const char* const* encoding_names) { + while (t->s) { + PyObject *str; + if (t->is_unicode) { + if (t->intern) { + str = PyUnicode_InternFromString(t->s); + } else if (t->encoding) { + str = PyUnicode_Decode(t->s, t->n - 1, encoding_names[t->encoding], NULL); + } else { + str = PyUnicode_FromStringAndSize(t->s, t->n - 1); + } + } else { + str = PyBytes_FromStringAndSize(t->s, t->n - 1); + } + if (!str) + return -1; + *target = str; + if (PyObject_Hash(str) == -1) + return -1; + ++t; + ++target; + } + return 0; +} + +#include +static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { + size_t len = strlen(s); + if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) { + PyErr_SetString(PyExc_OverflowError, "byte string is too long"); + return -1; + } + return (Py_ssize_t) len; +} +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return __Pyx_PyUnicode_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) { + Py_ssize_t len = __Pyx_ssize_strlen(c_str); + if (unlikely(len < 0)) return NULL; + return PyByteArray_FromStringAndSize(c_str, len); +} +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 +static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { + if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + { + const char* result; + Py_ssize_t unicode_length; + CYTHON_MAYBE_UNUSED_VAR(unicode_length); // only for __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + #if __PYX_LIMITED_VERSION_HEX < 0x030A0000 + if (unlikely(PyArg_Parse(o, "s#", &result, length) < 0)) return NULL; + #else + result = PyUnicode_AsUTF8AndSize(o, length); + #endif + #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + unicode_length = PyUnicode_GetLength(o); + if (unlikely(unicode_length < 0)) return NULL; + if (unlikely(unicode_length != *length)) { + PyUnicode_AsASCIIString(o); + return NULL; + } + #endif + return result; + } +#else +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (likely(PyUnicode_IS_ASCII(o))) { + *length = PyUnicode_GET_LENGTH(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else + return PyUnicode_AsUTF8AndSize(o, length); +#endif +#endif +} +#endif +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 + if (PyUnicode_Check(o)) { + return __Pyx_PyUnicode_AsStringAndSize(o, length); + } else +#endif + if (PyByteArray_Check(o)) { +#if (CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS) || (CYTHON_COMPILING_IN_PYPY && (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))) + *length = PyByteArray_GET_SIZE(o); + return PyByteArray_AS_STRING(o); +#else + *length = PyByteArray_Size(o); + if (*length == -1) return NULL; + return PyByteArray_AsString(o); +#endif + } else + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (unlikely(r < 0)) { + return NULL; + } else { + return result; + } + } +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { + int is_true = x == Py_True; + if (is_true | (x == Py_False) | (x == Py_None)) return is_true; + else return PyObject_IsTrue(x); +} +static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { + int retval; + if (unlikely(!x)) return -1; + retval = __Pyx_PyObject_IsTrue(x); + Py_DECREF(x); + return retval; +} +static PyObject* __Pyx_PyNumber_LongWrongResultType(PyObject* result) { + __Pyx_TypeName result_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(result)); + if (PyLong_Check(result)) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME "). " + "The ability to return an instance of a strict subclass of int is deprecated, " + "and may be removed in a future version of Python.", + result_type_name)) { + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; + } + __Pyx_DECREF_TypeName(result_type_name); + return result; + } + PyErr_Format(PyExc_TypeError, + "__int__ returned non-int (type " __Pyx_FMT_TYPENAME ")", + result_type_name); + __Pyx_DECREF_TypeName(result_type_name); + Py_DECREF(result); + return NULL; +} +static CYTHON_INLINE PyObject* __Pyx_PyNumber_Long(PyObject* x) { +#if CYTHON_USE_TYPE_SLOTS + PyNumberMethods *m; +#endif + PyObject *res = NULL; + if (likely(PyLong_Check(x))) + return __Pyx_NewRef(x); +#if CYTHON_USE_TYPE_SLOTS + m = Py_TYPE(x)->tp_as_number; + if (likely(m && m->nb_int)) { + res = m->nb_int(x); + } +#else + if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { + res = PyNumber_Long(x); + } +#endif + if (likely(res)) { + if (unlikely(!PyLong_CheckExact(res))) { + return __Pyx_PyNumber_LongWrongResultType(res); + } + } + else if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + } + return res; +} +static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { + Py_ssize_t ival; + PyObject *x; + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS + if (likely(__Pyx_PyLong_IsCompact(b))) { + return __Pyx_PyLong_CompactValue(b); + } else { + const digit* digits = __Pyx_PyLong_Digits(b); + const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b); + switch (size) { + case 2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -2: + if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -3: + if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case 4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + case -4: + if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { + return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); + } + break; + } + } + #endif + return PyLong_AsSsize_t(b); + } + x = PyNumber_Index(b); + if (!x) return -1; + ival = PyLong_AsSsize_t(x); + Py_DECREF(x); + return ival; +} +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { + if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { + return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); + } else { + Py_ssize_t ival; + PyObject *x; + x = PyNumber_Index(o); + if (!x) return -1; + ival = PyLong_AsLong(x); + Py_DECREF(x); + return ival; + } +} +static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b) { + CYTHON_UNUSED_VAR(b); + return __Pyx_NewRef(Py_None); +} +static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); +} +static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t ival) { + return PyLong_FromSize_t(ival); +} + + +/* MultiPhaseInitModuleState */ +#if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE +#ifndef CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +#if (CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX >= 0x030C0000) + #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 1 +#else + #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 0 +#endif +#endif +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE && !CYTHON_ATOMICS +#error "Module state with PEP489 requires atomics. Currently that's one of\ + C11, C++11, gcc atomic intrinsics or MSVC atomic intrinsics" +#endif +#if !CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +#define __Pyx_ModuleStateLookup_Lock() +#define __Pyx_ModuleStateLookup_Unlock() +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000 +static PyMutex __Pyx_ModuleStateLookup_mutex = {0}; +#define __Pyx_ModuleStateLookup_Lock() PyMutex_Lock(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() PyMutex_Unlock(&__Pyx_ModuleStateLookup_mutex) +#elif defined(__cplusplus) && __cplusplus >= 201103L +#include +static std::mutex __Pyx_ModuleStateLookup_mutex; +#define __Pyx_ModuleStateLookup_Lock() __Pyx_ModuleStateLookup_mutex.lock() +#define __Pyx_ModuleStateLookup_Unlock() __Pyx_ModuleStateLookup_mutex.unlock() +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ > 201112L) && !defined(__STDC_NO_THREADS__) +#include +static mtx_t __Pyx_ModuleStateLookup_mutex; +static once_flag __Pyx_ModuleStateLookup_mutex_once_flag = ONCE_FLAG_INIT; +static void __Pyx_ModuleStateLookup_initialize_mutex(void) { + mtx_init(&__Pyx_ModuleStateLookup_mutex, mtx_plain); +} +#define __Pyx_ModuleStateLookup_Lock()\ + call_once(&__Pyx_ModuleStateLookup_mutex_once_flag, __Pyx_ModuleStateLookup_initialize_mutex);\ + mtx_lock(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() mtx_unlock(&__Pyx_ModuleStateLookup_mutex) +#elif defined(HAVE_PTHREAD_H) +#include +static pthread_mutex_t __Pyx_ModuleStateLookup_mutex = PTHREAD_MUTEX_INITIALIZER; +#define __Pyx_ModuleStateLookup_Lock() pthread_mutex_lock(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() pthread_mutex_unlock(&__Pyx_ModuleStateLookup_mutex) +#elif defined(_WIN32) +#include // synchapi.h on its own doesn't work +static SRWLOCK __Pyx_ModuleStateLookup_mutex = SRWLOCK_INIT; +#define __Pyx_ModuleStateLookup_Lock() AcquireSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() ReleaseSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex) +#else +#error "No suitable lock available for CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE.\ + Requires C standard >= C11, or C++ standard >= C++11,\ + or pthreads, or the Windows 32 API, or Python >= 3.13." +#endif +typedef struct { + int64_t id; + PyObject *module; +} __Pyx_InterpreterIdAndModule; +typedef struct { + char interpreter_id_as_index; + Py_ssize_t count; + Py_ssize_t allocated; + __Pyx_InterpreterIdAndModule table[1]; +} __Pyx_ModuleStateLookupData; +#define __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE 32 +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +static __pyx_atomic_int_type __Pyx_ModuleStateLookup_read_counter = 0; +#endif +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +static __pyx_atomic_ptr_type __Pyx_ModuleStateLookup_data = 0; +#else +static __Pyx_ModuleStateLookupData* __Pyx_ModuleStateLookup_data = NULL; +#endif +static __Pyx_InterpreterIdAndModule* __Pyx_State_FindModuleStateLookupTableLowerBound( + __Pyx_InterpreterIdAndModule* table, + Py_ssize_t count, + int64_t interpreterId) { + __Pyx_InterpreterIdAndModule* begin = table; + __Pyx_InterpreterIdAndModule* end = begin + count; + if (begin->id == interpreterId) { + return begin; + } + while ((end - begin) > __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) { + __Pyx_InterpreterIdAndModule* halfway = begin + (end - begin)/2; + if (halfway->id == interpreterId) { + return halfway; + } + if (halfway->id < interpreterId) { + begin = halfway; + } else { + end = halfway; + } + } + for (; begin < end; ++begin) { + if (begin->id >= interpreterId) return begin; + } + return begin; +} +static PyObject *__Pyx_State_FindModule(CYTHON_UNUSED void* dummy) { + int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); + if (interpreter_id == -1) return NULL; +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __Pyx_ModuleStateLookupData* data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data); + { + __pyx_atomic_incr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); + if (likely(data)) { + __Pyx_ModuleStateLookupData* new_data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_acquire(&__Pyx_ModuleStateLookup_data); + if (likely(data == new_data)) { + goto read_finished; + } + } + __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); + __Pyx_ModuleStateLookup_Lock(); + __pyx_atomic_incr_relaxed(&__Pyx_ModuleStateLookup_read_counter); + data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data); + __Pyx_ModuleStateLookup_Unlock(); + } + read_finished:; +#else + __Pyx_ModuleStateLookupData* data = __Pyx_ModuleStateLookup_data; +#endif + __Pyx_InterpreterIdAndModule* found = NULL; + if (unlikely(!data)) goto end; + if (data->interpreter_id_as_index) { + if (interpreter_id < data->count) { + found = data->table+interpreter_id; + } + } else { + found = __Pyx_State_FindModuleStateLookupTableLowerBound( + data->table, data->count, interpreter_id); + } + end: + { + PyObject *result=NULL; + if (found && found->id == interpreter_id) { + result = found->module; + } +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); +#endif + return result; + } +} +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +static void __Pyx_ModuleStateLookup_wait_until_no_readers(void) { + while (__pyx_atomic_load(&__Pyx_ModuleStateLookup_read_counter) != 0); +} +#else +#define __Pyx_ModuleStateLookup_wait_until_no_readers() +#endif +static int __Pyx_State_AddModuleInterpIdAsIndex(__Pyx_ModuleStateLookupData **old_data, PyObject* module, int64_t interpreter_id) { + Py_ssize_t to_allocate = (*old_data)->allocated; + while (to_allocate <= interpreter_id) { + if (to_allocate == 0) to_allocate = 1; + else to_allocate *= 2; + } + __Pyx_ModuleStateLookupData *new_data = *old_data; + if (to_allocate != (*old_data)->allocated) { + new_data = (__Pyx_ModuleStateLookupData *)realloc( + *old_data, + sizeof(__Pyx_ModuleStateLookupData)+(to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule)); + if (!new_data) { + PyErr_NoMemory(); + return -1; + } + for (Py_ssize_t i = new_data->allocated; i < to_allocate; ++i) { + new_data->table[i].id = i; + new_data->table[i].module = NULL; + } + new_data->allocated = to_allocate; + } + new_data->table[interpreter_id].module = module; + if (new_data->count < interpreter_id+1) { + new_data->count = interpreter_id+1; + } + *old_data = new_data; + return 0; +} +static void __Pyx_State_ConvertFromInterpIdAsIndex(__Pyx_ModuleStateLookupData *data) { + __Pyx_InterpreterIdAndModule *read = data->table; + __Pyx_InterpreterIdAndModule *write = data->table; + __Pyx_InterpreterIdAndModule *end = read + data->count; + for (; readmodule) { + write->id = read->id; + write->module = read->module; + ++write; + } + } + data->count = write - data->table; + for (; writeid = 0; + write->module = NULL; + } + data->interpreter_id_as_index = 0; +} +static int __Pyx_State_AddModule(PyObject* module, CYTHON_UNUSED void* dummy) { + int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); + if (interpreter_id == -1) return -1; + int result = 0; + __Pyx_ModuleStateLookup_Lock(); +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __Pyx_ModuleStateLookupData *old_data = (__Pyx_ModuleStateLookupData *) + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0); +#else + __Pyx_ModuleStateLookupData *old_data = __Pyx_ModuleStateLookup_data; +#endif + __Pyx_ModuleStateLookupData *new_data = old_data; + if (!new_data) { + new_data = (__Pyx_ModuleStateLookupData *)calloc(1, sizeof(__Pyx_ModuleStateLookupData)); + if (!new_data) { + result = -1; + PyErr_NoMemory(); + goto end; + } + new_data->allocated = 1; + new_data->interpreter_id_as_index = 1; + } + __Pyx_ModuleStateLookup_wait_until_no_readers(); + if (new_data->interpreter_id_as_index) { + if (interpreter_id < __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) { + result = __Pyx_State_AddModuleInterpIdAsIndex(&new_data, module, interpreter_id); + goto end; + } + __Pyx_State_ConvertFromInterpIdAsIndex(new_data); + } + { + Py_ssize_t insert_at = 0; + { + __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound( + new_data->table, new_data->count, interpreter_id); + assert(lower_bound); + insert_at = lower_bound - new_data->table; + if (unlikely(insert_at < new_data->count && lower_bound->id == interpreter_id)) { + lower_bound->module = module; + goto end; // already in table, nothing more to do + } + } + if (new_data->count+1 >= new_data->allocated) { + Py_ssize_t to_allocate = (new_data->count+1)*2; + new_data = + (__Pyx_ModuleStateLookupData*)realloc( + new_data, + sizeof(__Pyx_ModuleStateLookupData) + + (to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule)); + if (!new_data) { + result = -1; + new_data = old_data; + PyErr_NoMemory(); + goto end; + } + new_data->allocated = to_allocate; + } + ++new_data->count; + int64_t last_id = interpreter_id; + PyObject *last_module = module; + for (Py_ssize_t i=insert_at; icount; ++i) { + int64_t current_id = new_data->table[i].id; + new_data->table[i].id = last_id; + last_id = current_id; + PyObject *current_module = new_data->table[i].module; + new_data->table[i].module = last_module; + last_module = current_module; + } + } + end: +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, new_data); +#else + __Pyx_ModuleStateLookup_data = new_data; +#endif + __Pyx_ModuleStateLookup_Unlock(); + return result; +} +static int __Pyx_State_RemoveModule(CYTHON_UNUSED void* dummy) { + int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); + if (interpreter_id == -1) return -1; + __Pyx_ModuleStateLookup_Lock(); +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __Pyx_ModuleStateLookupData *data = (__Pyx_ModuleStateLookupData *) + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0); +#else + __Pyx_ModuleStateLookupData *data = __Pyx_ModuleStateLookup_data; +#endif + if (data->interpreter_id_as_index) { + if (interpreter_id < data->count) { + data->table[interpreter_id].module = NULL; + } + goto done; + } + { + __Pyx_ModuleStateLookup_wait_until_no_readers(); + __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound( + data->table, data->count, interpreter_id); + if (!lower_bound) goto done; + if (lower_bound->id != interpreter_id) goto done; + __Pyx_InterpreterIdAndModule *end = data->table+data->count; + for (;lower_boundid = (lower_bound+1)->id; + lower_bound->module = (lower_bound+1)->module; + } + } + --data->count; + if (data->count == 0) { + free(data); + data = NULL; + } + done: +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, data); +#else + __Pyx_ModuleStateLookup_data = data; +#endif + __Pyx_ModuleStateLookup_Unlock(); + return 0; +} +#endif + +/* #### Code section: utility_code_pragmas_end ### */ +#ifdef _MSC_VER +#pragma warning( pop ) +#endif + + + +/* #### Code section: end ### */ +#endif /* Py_PYTHON_H */ diff --git a/async_gaussdb/gaussdbproto/gaussdbproto.pxd b/async_gaussdb/gaussdbproto/gaussdbproto.pxd new file mode 100644 index 00000000..ee9ec458 --- /dev/null +++ b/async_gaussdb/gaussdbproto/gaussdbproto.pxd @@ -0,0 +1,19 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cimport cython +cimport cpython + +from libc.stdint cimport int16_t, int32_t, uint16_t, uint32_t, int64_t, uint64_t + + +include "./consts.pxi" +include "./frb.pxd" +include "./buffer.pxd" + + +include "./codecs/__init__.pxd" diff --git a/async_gaussdb/gaussdbproto/gaussdbproto.pyi b/async_gaussdb/gaussdbproto/gaussdbproto.pyi new file mode 100644 index 00000000..24cc6306 --- /dev/null +++ b/async_gaussdb/gaussdbproto/gaussdbproto.pyi @@ -0,0 +1,13 @@ +import codecs +import typing +import uuid + +class CodecContext: + def get_text_codec(self) -> codecs.CodecInfo: ... + +class ReadBuffer: ... +class WriteBuffer: ... +class BufferError(Exception): ... + +class UUID(uuid.UUID): + def __init__(self, inp: typing.AnyStr) -> None: ... diff --git a/async_gaussdb/gaussdbproto/gaussdbproto.pyx b/async_gaussdb/gaussdbproto/gaussdbproto.pyx new file mode 100644 index 00000000..711b6c1f --- /dev/null +++ b/async_gaussdb/gaussdbproto/gaussdbproto.pyx @@ -0,0 +1,49 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cimport cython +cimport cpython + +from . cimport cpythonx + +from libc.stdint cimport int8_t, uint8_t, int16_t, uint16_t, \ + int32_t, uint32_t, int64_t, uint64_t, \ + INT16_MIN, INT16_MAX, INT32_MIN, INT32_MAX, \ + UINT32_MAX, INT64_MIN, INT64_MAX, UINT64_MAX + + +from . cimport hton +from . cimport tohex + +from .debug cimport GAUSSDB_DEBUG +from . import types as gaussdbproto_types + + +include "./consts.pxi" +include "./frb.pyx" +include "./buffer.pyx" +include "./uuid.pyx" + +include "./codecs/context.pyx" + +include "./codecs/bytea.pyx" +include "./codecs/text.pyx" + +include "./codecs/datetime.pyx" +include "./codecs/float.pyx" +include "./codecs/int.pyx" +include "./codecs/json.pyx" +include "./codecs/jsonpath.pyx" +include "./codecs/uuid.pyx" +include "./codecs/numeric.pyx" +include "./codecs/bits.pyx" +include "./codecs/geometry.pyx" +include "./codecs/hstore.pyx" +include "./codecs/misc.pyx" +include "./codecs/network.pyx" +include "./codecs/tid.pyx" +include "./codecs/gaussdb_snapshot.pyx" diff --git a/async_gaussdb/gaussdbproto/hton.h b/async_gaussdb/gaussdbproto/hton.h new file mode 100644 index 00000000..1dd2994c --- /dev/null +++ b/async_gaussdb/gaussdbproto/hton.h @@ -0,0 +1,241 @@ +#include + +#if defined(__linux__) || defined(__CYGWIN__) || defined(__sun) +#include +#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) \ + || defined(__DragonFly__) +#include +#elif defined(__APPLE__) +#include +#elif defined(_WIN32) || defined(_WIN64) || defined(__WINDOWS__) +/* Assume Windows is always LE. There seems to be no reliable way + to detect endianness there */ +#define __LITTLE_ENDIAN 1234 +#define __BIG_ENDIAN 4321 +#define __BYTE_ORDER __LITTLE_ENDIAN +#endif + +#if defined(_BYTE_ORDER) && !defined(__BYTE_ORDER) +#define __BYTE_ORDER _BYTE_ORDER +#endif + +#if defined(BYTE_ORDER) && !defined(__BYTE_ORDER) +#define __BYTE_ORDER BYTE_ORDER +#endif + +#if defined(_LITTLE_ENDIAN) && !defined(__LITTLE_ENDIAN) +#define __LITTLE_ENDIAN _LITTLE_ENDIAN +#endif + +#if defined(LITTLE_ENDIAN) && !defined(__LITTLE_ENDIAN) +#define __LITTLE_ENDIAN LITTLE_ENDIAN +#endif + +#if defined(_BIG_ENDIAN) && !defined(__BIG_ENDIAN) +#define __BIG_ENDIAN _BIG_ENDIAN +#endif + +#if defined(BIG_ENDIAN) && !defined(__BIG_ENDIAN) +#define __BIG_ENDIAN BIG_ENDIAN +#endif + +#if !defined(__BYTE_ORDER) || !defined(__LITTLE_ENDIAN) \ + || !defined(__BIG_ENDIAN) +#error Cannot determine platform byte order. +#endif + +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + +#define apg_bswap16(x) __builtin_bswap16(x) +#define apg_bswap32(x) __builtin_bswap32(x) +#define apg_bswap64(x) __builtin_bswap64(x) + +#elif defined(_MSC_VER) + +#define apg_bswap16(x) _byteswap_ushort(x) +#define apg_bswap32(x) _byteswap_ulong(x) +#define apg_bswap64(x) _byteswap_uint64(x) + +#else + +static inline uint16_t +apg_bswap16(uint16_t) +{ + return ((x << 8) & 0xff00) | (x >> 8) & 0x00ff)); +} + +static inline uint32_t +apg_bswap32(uint32_t x) +{ + return ( + ((x << 24) & 0xff000000) | ((x << 8) & 0x00ff0000) | + ((x >> 8) & 0x0000ff00) | ((x >> 24) & 0x000000ff) + ); +} + +static inline uint64_t +apg_bswap64(uint64_t x) +{ + return ( + ((x << 56) & 0xff00000000000000ULL) | + ((x << 40) & 0x00ff000000000000ULL) | + ((x << 24) & 0x0000ff0000000000ULL) | + ((x << 8) & 0x000000ff00000000ULL) | + ((x >> 8) & 0x00000000ff000000ULL) | + ((x >> 24) & 0x0000000000ff0000ULL) | + ((x >> 40) & 0x000000000000ff00ULL) | + ((x >> 56) & 0x00000000000000ffULL); + ); +} + +#endif + +#if __BYTE_ORDER == __BIG_ENDIAN + +#define apg_hton16(x) (x) +#define apg_hton32(x) (x) +#define apg_hton64(x) (x) + +#define apg_ntoh16(x) (x) +#define apg_ntoh32(x) (x) +#define apg_ntoh64(x) (x) + +#elif __BYTE_ORDER == __LITTLE_ENDIAN + +#define apg_hton16(x) apg_bswap16(x) +#define apg_hton32(x) apg_bswap32(x) +#define apg_hton64(x) apg_bswap64(x) + +#define apg_ntoh16(x) apg_bswap16(x) +#define apg_ntoh32(x) apg_bswap32(x) +#define apg_ntoh64(x) apg_bswap64(x) + +#else + +#error Unsupported byte order. + +#endif + + +static inline void +pack_int16(char *buf, int16_t x) +{ + uint16_t nx = apg_hton16((uint16_t)x); + /* NOTE: the memcpy below is _important_ to support systems + which disallow unaligned access. On systems, which do + allow unaligned access it will be optimized away by the + compiler + */ + memcpy(buf, &nx, sizeof(uint16_t)); +} + + +static inline void +pack_int32(char *buf, int64_t x) +{ + uint32_t nx = apg_hton32((uint32_t)x); + memcpy(buf, &nx, sizeof(uint32_t)); +} + + +static inline void +pack_int64(char *buf, int64_t x) +{ + uint64_t nx = apg_hton64((uint64_t)x); + memcpy(buf, &nx, sizeof(uint64_t)); +} + + + +static inline uint16_t +unpack_uint16(const char *buf) +{ + uint16_t nx; + memcpy((char *)&nx, buf, sizeof(uint16_t)); + return apg_ntoh16(nx); +} + + +static inline int16_t +unpack_int16(const char *buf) +{ + return (int16_t)unpack_uint16(buf); +} + + +static inline uint32_t +unpack_uint32(const char *buf) +{ + uint32_t nx; + memcpy((char *)&nx, buf, sizeof(uint32_t)); + return apg_ntoh32(nx); +} + + +static inline int32_t +unpack_int32(const char *buf) +{ + return (int32_t)unpack_uint32(buf); +} + +static inline uint64_t +unpack_uint64(const char *buf) +{ + uint64_t nx; + memcpy((char *)&nx, buf, sizeof(uint64_t)); + return apg_ntoh64(nx); +} + +static inline int64_t +unpack_int64(const char *buf) +{ + return (int64_t)unpack_uint64(buf); +} + + +union _apg_floatconv { + uint32_t i; + float f; +}; + + +union _apg_doubleconv { + uint64_t i; + double f; +}; + + +static inline void +pack_float(char *buf, float f) +{ + union _apg_floatconv v; + v.f = f; + pack_int32(buf, (int32_t)v.i); +} + + +static inline void +pack_double(char *buf, double f) +{ + union _apg_doubleconv v; + v.f = f; + pack_int64(buf, (int64_t)v.i); +} + + +static inline float +unpack_float(const char *buf) +{ + union _apg_floatconv v; + v.i = (uint32_t)unpack_int32(buf); + return v.f; +} + + +static inline double +unpack_double(const char *buf) +{ + union _apg_doubleconv v; + v.i = (uint64_t)unpack_int64(buf); + return v.f; +} diff --git a/async_gaussdb/gaussdbproto/hton.pxd b/async_gaussdb/gaussdbproto/hton.pxd new file mode 100644 index 00000000..9b73abc8 --- /dev/null +++ b/async_gaussdb/gaussdbproto/hton.pxd @@ -0,0 +1,24 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +from libc.stdint cimport int16_t, int32_t, uint16_t, uint32_t, int64_t, uint64_t + + +cdef extern from "./hton.h": + cdef void pack_int16(char *buf, int16_t x); + cdef void pack_int32(char *buf, int32_t x); + cdef void pack_int64(char *buf, int64_t x); + cdef void pack_float(char *buf, float f); + cdef void pack_double(char *buf, double f); + cdef int16_t unpack_int16(const char *buf); + cdef uint16_t unpack_uint16(const char *buf); + cdef int32_t unpack_int32(const char *buf); + cdef uint32_t unpack_uint32(const char *buf); + cdef int64_t unpack_int64(const char *buf); + cdef uint64_t unpack_uint64(const char *buf); + cdef float unpack_float(const char *buf); + cdef double unpack_double(const char *buf); diff --git a/async_gaussdb/gaussdbproto/tohex.h b/async_gaussdb/gaussdbproto/tohex.h new file mode 100644 index 00000000..60dd820c --- /dev/null +++ b/async_gaussdb/gaussdbproto/tohex.h @@ -0,0 +1,54 @@ +#define HEX_PRELUDE \ + const char *__hexm = "0123456789abcdef"; + +#define HEX_1_BYTE(buf, dest) \ + { \ + char byte = (buf)[0]; \ + (dest)[0] = __hexm[(byte >> 4) & 0x0F]; \ + (dest)[1] = __hexm[byte & 0x0F]; \ + } + +#define HEX_2_BYTES(buf, dest) \ + { \ + HEX_1_BYTE(buf, dest) \ + HEX_1_BYTE(buf + 1, dest + 2) \ + } + +#define HEX_4_BYTES(buf, dest) \ + { \ + HEX_2_BYTES(buf, dest) \ + HEX_2_BYTES(buf + 2, dest + 4) \ + } + +#define HEX_8_BYTES(buf, dest) \ + { \ + HEX_4_BYTES(buf, dest) \ + HEX_4_BYTES(buf + 4, dest + 8) \ + } + + +static inline void +uuid_to_str(const char *source, char *dest) +{ + HEX_PRELUDE + + HEX_4_BYTES(source, dest) + dest[8] = '-'; + HEX_2_BYTES(source + 4, dest + 9) + dest[13] = '-'; + HEX_2_BYTES(source + 6, dest + 14) + dest[18] = '-'; + HEX_2_BYTES(source + 8, dest + 19) + dest[23] = '-'; + HEX_4_BYTES(source + 10, dest + 24) + HEX_2_BYTES(source + 14, dest + 32) +} + + +static inline void +uuid_to_hex(const char *source, char *dest) +{ + HEX_PRELUDE + HEX_8_BYTES(source, dest) + HEX_8_BYTES(source + 8, dest + 16) +} diff --git a/async_gaussdb/gaussdbproto/tohex.pxd b/async_gaussdb/gaussdbproto/tohex.pxd new file mode 100644 index 00000000..12fda84e --- /dev/null +++ b/async_gaussdb/gaussdbproto/tohex.pxd @@ -0,0 +1,10 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef extern from "./tohex.h": + cdef void uuid_to_str(const char *source, char *dest) + cdef void uuid_to_hex(const char *source, char *dest) diff --git a/async_gaussdb/gaussdbproto/types.py b/async_gaussdb/gaussdbproto/types.py new file mode 100644 index 00000000..9ed0e9be --- /dev/null +++ b/async_gaussdb/gaussdbproto/types.py @@ -0,0 +1,423 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +import builtins +import sys +import typing + +if sys.version_info >= (3, 8): + from typing import Literal, SupportsIndex +else: + from typing_extensions import Literal, SupportsIndex + + +__all__ = ( + 'BitString', 'Point', 'Path', 'Polygon', + 'Box', 'Line', 'LineSegment', 'Circle', +) + +_BitString = typing.TypeVar('_BitString', bound='BitString') +_BitOrderType = Literal['big', 'little'] + + +class BitString: + """Immutable representation of PostgreSQL `bit` and `varbit` types.""" + + __slots__ = '_bytes', '_bitlength' + + def __init__(self, + bitstring: typing.Optional[builtins.bytes] = None) -> None: + if not bitstring: + self._bytes = bytes() + self._bitlength = 0 + else: + bytelen = len(bitstring) // 8 + 1 + bytes_ = bytearray(bytelen) + byte = 0 + byte_pos = 0 + bit_pos = 0 + + for i, bit in enumerate(bitstring): + if bit == ' ': # type: ignore + continue + bit = int(bit) + if bit != 0 and bit != 1: + raise ValueError( + 'invalid bit value at position {}'.format(i)) + + byte |= bit << (8 - bit_pos - 1) + bit_pos += 1 + if bit_pos == 8: + bytes_[byte_pos] = byte + byte = 0 + byte_pos += 1 + bit_pos = 0 + + if bit_pos != 0: + bytes_[byte_pos] = byte + + bitlen = byte_pos * 8 + bit_pos + bytelen = byte_pos + (1 if bit_pos else 0) + + self._bytes = bytes(bytes_[:bytelen]) + self._bitlength = bitlen + + @classmethod + def frombytes(cls: typing.Type[_BitString], + bytes_: typing.Optional[builtins.bytes] = None, + bitlength: typing.Optional[int] = None) -> _BitString: + if bitlength is None: + if bytes_ is None: + bytes_ = bytes() + bitlength = 0 + else: + bitlength = len(bytes_) * 8 + else: + if bytes_ is None: + bytes_ = bytes(bitlength // 8 + 1) + bitlength = bitlength + else: + bytes_len = len(bytes_) * 8 + + if bytes_len == 0 and bitlength != 0: + raise ValueError('invalid bit length specified') + + if bytes_len != 0 and bitlength == 0: + raise ValueError('invalid bit length specified') + + if bitlength < bytes_len - 8: + raise ValueError('invalid bit length specified') + + if bitlength > bytes_len: + raise ValueError('invalid bit length specified') + + result = cls() + result._bytes = bytes_ + result._bitlength = bitlength + + return result + + @property + def bytes(self) -> builtins.bytes: + return self._bytes + + def as_string(self) -> str: + s = '' + + for i in range(self._bitlength): + s += str(self._getitem(i)) + if i % 4 == 3: + s += ' ' + + return s.strip() + + def to_int(self, bitorder: _BitOrderType = 'big', + *, signed: bool = False) -> int: + """Interpret the BitString as a Python int. + Acts similarly to int.from_bytes. + + :param bitorder: + Determines the bit order used to interpret the BitString. By + default, this function uses Postgres conventions for casting bits + to ints. If bitorder is 'big', the most significant bit is at the + start of the string (this is the same as the default). If bitorder + is 'little', the most significant bit is at the end of the string. + + :param bool signed: + Determines whether two's complement is used to interpret the + BitString. If signed is False, the returned value is always + non-negative. + + :return int: An integer representing the BitString. Information about + the BitString's exact length is lost. + + .. versionadded:: 0.18.0 + """ + x = int.from_bytes(self._bytes, byteorder='big') + x >>= -self._bitlength % 8 + if bitorder == 'big': + pass + elif bitorder == 'little': + x = int(bin(x)[:1:-1].ljust(self._bitlength, '0'), 2) + else: + raise ValueError("bitorder must be either 'big' or 'little'") + + if signed and self._bitlength > 0 and x & (1 << (self._bitlength - 1)): + x -= 1 << self._bitlength + return x + + @classmethod + def from_int(cls: typing.Type[_BitString], x: int, length: int, + bitorder: _BitOrderType = 'big', *, signed: bool = False) \ + -> _BitString: + """Represent the Python int x as a BitString. + Acts similarly to int.to_bytes. + + :param int x: + An integer to represent. Negative integers are represented in two's + complement form, unless the argument signed is False, in which case + negative integers raise an OverflowError. + + :param int length: + The length of the resulting BitString. An OverflowError is raised + if the integer is not representable in this many bits. + + :param bitorder: + Determines the bit order used in the BitString representation. By + default, this function uses Postgres conventions for casting ints + to bits. If bitorder is 'big', the most significant bit is at the + start of the string (this is the same as the default). If bitorder + is 'little', the most significant bit is at the end of the string. + + :param bool signed: + Determines whether two's complement is used in the BitString + representation. If signed is False and a negative integer is given, + an OverflowError is raised. + + :return BitString: A BitString representing the input integer, in the + form specified by the other input args. + + .. versionadded:: 0.18.0 + """ + # Exception types are by analogy to int.to_bytes + if length < 0: + raise ValueError("length argument must be non-negative") + elif length < x.bit_length(): + raise OverflowError("int too big to convert") + + if x < 0: + if not signed: + raise OverflowError("can't convert negative int to unsigned") + x &= (1 << length) - 1 + + if bitorder == 'big': + pass + elif bitorder == 'little': + x = int(bin(x)[:1:-1].ljust(length, '0'), 2) + else: + raise ValueError("bitorder must be either 'big' or 'little'") + + x <<= (-length % 8) + bytes_ = x.to_bytes((length + 7) // 8, byteorder='big') + return cls.frombytes(bytes_, length) + + def __repr__(self) -> str: + return ''.format(self.as_string()) + + __str__: typing.Callable[['BitString'], str] = __repr__ + + def __eq__(self, other: object) -> bool: + if not isinstance(other, BitString): + return NotImplemented + + return (self._bytes == other._bytes and + self._bitlength == other._bitlength) + + def __hash__(self) -> int: + return hash((self._bytes, self._bitlength)) + + def _getitem(self, i: int) -> int: + byte = self._bytes[i // 8] + shift = 8 - i % 8 - 1 + return (byte >> shift) & 0x1 + + def __getitem__(self, i: int) -> int: + if isinstance(i, slice): + raise NotImplementedError('BitString does not support slices') + + if i >= self._bitlength: + raise IndexError('index out of range') + + return self._getitem(i) + + def __len__(self) -> int: + return self._bitlength + + +class Point(typing.Tuple[float, float]): + """Immutable representation of PostgreSQL `point` type.""" + + __slots__ = () + + def __new__(cls, + x: typing.Union[typing.SupportsFloat, + SupportsIndex, + typing.Text, + builtins.bytes, + builtins.bytearray], + y: typing.Union[typing.SupportsFloat, + SupportsIndex, + typing.Text, + builtins.bytes, + builtins.bytearray]) -> 'Point': + return super().__new__(cls, + typing.cast(typing.Any, (float(x), float(y)))) + + def __repr__(self) -> str: + return '{}.{}({})'.format( + type(self).__module__, + type(self).__name__, + tuple.__repr__(self) + ) + + @property + def x(self) -> float: + return self[0] + + @property + def y(self) -> float: + return self[1] + + +class Box(typing.Tuple[Point, Point]): + """Immutable representation of PostgreSQL `box` type.""" + + __slots__ = () + + def __new__(cls, high: typing.Sequence[float], + low: typing.Sequence[float]) -> 'Box': + return super().__new__(cls, + typing.cast(typing.Any, (Point(*high), + Point(*low)))) + + def __repr__(self) -> str: + return '{}.{}({})'.format( + type(self).__module__, + type(self).__name__, + tuple.__repr__(self) + ) + + @property + def high(self) -> Point: + return self[0] + + @property + def low(self) -> Point: + return self[1] + + +class Line(typing.Tuple[float, float, float]): + """Immutable representation of PostgreSQL `line` type.""" + + __slots__ = () + + def __new__(cls, A: float, B: float, C: float) -> 'Line': + return super().__new__(cls, typing.cast(typing.Any, (A, B, C))) + + @property + def A(self) -> float: + return self[0] + + @property + def B(self) -> float: + return self[1] + + @property + def C(self) -> float: + return self[2] + + +class LineSegment(typing.Tuple[Point, Point]): + """Immutable representation of PostgreSQL `lseg` type.""" + + __slots__ = () + + def __new__(cls, p1: typing.Sequence[float], + p2: typing.Sequence[float]) -> 'LineSegment': + return super().__new__(cls, + typing.cast(typing.Any, (Point(*p1), + Point(*p2)))) + + def __repr__(self) -> str: + return '{}.{}({})'.format( + type(self).__module__, + type(self).__name__, + tuple.__repr__(self) + ) + + @property + def p1(self) -> Point: + return self[0] + + @property + def p2(self) -> Point: + return self[1] + + +class Path: + """Immutable representation of PostgreSQL `path` type.""" + + __slots__ = '_is_closed', 'points' + + points: typing.Tuple[Point, ...] + + def __init__(self, *points: typing.Sequence[float], + is_closed: bool = False) -> None: + self.points = tuple(Point(*p) for p in points) + self._is_closed = is_closed + + @property + def is_closed(self) -> bool: + return self._is_closed + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Path): + return NotImplemented + + return (self.points == other.points and + self._is_closed == other._is_closed) + + def __hash__(self) -> int: + return hash((self.points, self.is_closed)) + + def __iter__(self) -> typing.Iterator[Point]: + return iter(self.points) + + def __len__(self) -> int: + return len(self.points) + + @typing.overload + def __getitem__(self, i: int) -> Point: + ... + + @typing.overload + def __getitem__(self, i: slice) -> typing.Tuple[Point, ...]: + ... + + def __getitem__(self, i: typing.Union[int, slice]) \ + -> typing.Union[Point, typing.Tuple[Point, ...]]: + return self.points[i] + + def __contains__(self, point: object) -> bool: + return point in self.points + + +class Polygon(Path): + """Immutable representation of PostgreSQL `polygon` type.""" + + __slots__ = () + + def __init__(self, *points: typing.Sequence[float]) -> None: + # polygon is always closed + super().__init__(*points, is_closed=True) + + +class Circle(typing.Tuple[Point, float]): + """Immutable representation of PostgreSQL `circle` type.""" + + __slots__ = () + + def __new__(cls, center: Point, radius: float) -> 'Circle': + return super().__new__(cls, typing.cast(typing.Any, (center, radius))) + + @property + def center(self) -> Point: + return self[0] + + @property + def radius(self) -> float: + return self[1] diff --git a/async_gaussdb/gaussdbproto/uuid.pyx b/async_gaussdb/gaussdbproto/uuid.pyx new file mode 100644 index 00000000..93677c74 --- /dev/null +++ b/async_gaussdb/gaussdbproto/uuid.pyx @@ -0,0 +1,353 @@ +import functools +import uuid + +cimport cython +cimport cpython + +from libc.stdint cimport uint8_t, int8_t +from libc.string cimport memcpy, memcmp + + +cdef extern from "Python.h": + int PyUnicode_1BYTE_KIND + const char* PyUnicode_AsUTF8AndSize( + object unicode, Py_ssize_t *size) except NULL + object PyUnicode_FromKindAndData( + int kind, const void *buffer, Py_ssize_t size) + + +cdef extern from "./tohex.h": + cdef void uuid_to_str(const char *source, char *dest) + cdef void uuid_to_hex(const char *source, char *dest) + + +# A more efficient UUID type implementation +# (6-7x faster than the starndard uuid.UUID): +# +# -= Benchmark results (less is better): =- +# +# std_UUID(bytes): 1.2368 +# c_UUID(bytes): * 0.1645 (7.52x) +# object(): 0.1483 +# +# std_UUID(str): 1.8038 +# c_UUID(str): * 0.2313 (7.80x) +# +# str(std_UUID()): 1.4625 +# str(c_UUID()): * 0.2681 (5.46x) +# str(object()): 0.5975 +# +# std_UUID().bytes: 0.3508 +# c_UUID().bytes: * 0.1068 (3.28x) +# +# std_UUID().int: 0.0871 +# c_UUID().int: * 0.0856 +# +# std_UUID().hex: 0.4871 +# c_UUID().hex: * 0.1405 +# +# hash(std_UUID()): 0.3635 +# hash(c_UUID()): * 0.1564 (2.32x) +# +# dct[std_UUID()]: 0.3319 +# dct[c_UUID()]: * 0.1570 (2.11x) +# +# std_UUID() ==: 0.3478 +# c_UUID() ==: * 0.0915 (3.80x) + + +cdef char _hextable[256] +_hextable[:] = [ + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1, 0,1,2,3,4,5,6,7,8,9,-1,-1,-1,-1,-1,-1,-1,10,11,12,13,14,15,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, + -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +] + + +cdef std_UUID = uuid.UUID + + +cdef gaussdb_uuid_bytes_from_str(str u, char *out): + cdef: + const char *orig_buf + Py_ssize_t size + unsigned char ch + uint8_t acc, part, acc_set + int i, j + + orig_buf = PyUnicode_AsUTF8AndSize(u, &size) + if size > 36 or size < 32: + raise ValueError( + f'invalid UUID {u!r}: ' + f'length must be between 32..36 characters, got {size}') + + acc_set = 0 + j = 0 + for i in range(size): + ch = orig_buf[i] + if ch == b'-': + continue + + part = _hextable[ch] + if part == -1: + if ch >= 0x20 and ch <= 0x7e: + raise ValueError( + f'invalid UUID {u!r}: unexpected character {chr(ch)!r}') + else: + raise ValueError('invalid UUID {u!r}: unexpected character') + + if acc_set: + acc |= part + out[j] = acc + acc_set = 0 + j += 1 + else: + acc = (part << 4) + acc_set = 1 + + if j > 16 or (j == 16 and acc_set): + raise ValueError( + f'invalid UUID {u!r}: decodes to more than 16 bytes') + + if j != 16: + raise ValueError( + f'invalid UUID {u!r}: decodes to less than 16 bytes') + + +cdef class __UUIDReplaceMe: + pass + + +cdef gaussdb_uuid_from_buf(const char *buf): + cdef: + UUID u = UUID.__new__(UUID) + memcpy(u._data, buf, 16) + return u + + +@cython.final +@cython.no_gc_clear +cdef class UUID(__UUIDReplaceMe): + + cdef: + char _data[16] + object _int + object _hash + object __weakref__ + + def __cinit__(self): + self._int = None + self._hash = None + + def __init__(self, inp): + cdef: + char *buf + Py_ssize_t size + + if cpython.PyBytes_Check(inp): + cpython.PyBytes_AsStringAndSize(inp, &buf, &size) + if size != 16: + raise ValueError(f'16 bytes were expected, got {size}') + memcpy(self._data, buf, 16) + + elif cpython.PyUnicode_Check(inp): + gaussdb_uuid_bytes_from_str(inp, self._data) + else: + raise TypeError(f'a bytes or str object expected, got {inp!r}') + + @property + def bytes(self): + return cpython.PyBytes_FromStringAndSize(self._data, 16) + + @property + def int(self): + if self._int is None: + # The cache is important because `self.int` can be + # used multiple times by __hash__ etc. + self._int = int.from_bytes(self.bytes, 'big') + return self._int + + @property + def is_safe(self): + return uuid.SafeUUID.unknown + + def __str__(self): + cdef char out[36] + uuid_to_str(self._data, out) + return PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, out, 36) + + @property + def hex(self): + cdef char out[32] + uuid_to_hex(self._data, out) + return PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, out, 32) + + def __repr__(self): + return f"UUID('{self}')" + + def __reduce__(self): + return (type(self), (self.bytes,)) + + def __eq__(self, other): + if type(other) is UUID: + return memcmp(self._data, (other)._data, 16) == 0 + if isinstance(other, std_UUID): + return self.int == other.int + return NotImplemented + + def __ne__(self, other): + if type(other) is UUID: + return memcmp(self._data, (other)._data, 16) != 0 + if isinstance(other, std_UUID): + return self.int != other.int + return NotImplemented + + def __lt__(self, other): + if type(other) is UUID: + return memcmp(self._data, (other)._data, 16) < 0 + if isinstance(other, std_UUID): + return self.int < other.int + return NotImplemented + + def __gt__(self, other): + if type(other) is UUID: + return memcmp(self._data, (other)._data, 16) > 0 + if isinstance(other, std_UUID): + return self.int > other.int + return NotImplemented + + def __le__(self, other): + if type(other) is UUID: + return memcmp(self._data, (other)._data, 16) <= 0 + if isinstance(other, std_UUID): + return self.int <= other.int + return NotImplemented + + def __ge__(self, other): + if type(other) is UUID: + return memcmp(self._data, (other)._data, 16) >= 0 + if isinstance(other, std_UUID): + return self.int >= other.int + return NotImplemented + + def __hash__(self): + # In EdgeDB every schema object has a uuid and there are + # huge hash-maps of them. We want UUID.__hash__ to be + # as fast as possible. + if self._hash is not None: + return self._hash + + self._hash = hash(self.int) + return self._hash + + def __int__(self): + return self.int + + @property + def bytes_le(self): + bytes = self.bytes + return (bytes[4-1::-1] + bytes[6-1:4-1:-1] + bytes[8-1:6-1:-1] + + bytes[8:]) + + @property + def fields(self): + return (self.time_low, self.time_mid, self.time_hi_version, + self.clock_seq_hi_variant, self.clock_seq_low, self.node) + + @property + def time_low(self): + return self.int >> 96 + + @property + def time_mid(self): + return (self.int >> 80) & 0xffff + + @property + def time_hi_version(self): + return (self.int >> 64) & 0xffff + + @property + def clock_seq_hi_variant(self): + return (self.int >> 56) & 0xff + + @property + def clock_seq_low(self): + return (self.int >> 48) & 0xff + + @property + def time(self): + return (((self.time_hi_version & 0x0fff) << 48) | + (self.time_mid << 32) | self.time_low) + + @property + def clock_seq(self): + return (((self.clock_seq_hi_variant & 0x3f) << 8) | + self.clock_seq_low) + + @property + def node(self): + return self.int & 0xffffffffffff + + @property + def urn(self): + return 'urn:uuid:' + str(self) + + @property + def variant(self): + if not self.int & (0x8000 << 48): + return uuid.RESERVED_NCS + elif not self.int & (0x4000 << 48): + return uuid.RFC_4122 + elif not self.int & (0x2000 << 48): + return uuid.RESERVED_MICROSOFT + else: + return uuid.RESERVED_FUTURE + + @property + def version(self): + # The version bits are only meaningful for RFC 4122 UUIDs. + if self.variant == uuid.RFC_4122: + return int((self.int >> 76) & 0xf) + + +# +# In order for `isinstance(gaussdbproto.UUID, uuid.UUID)` to work, +# patch __bases__ and __mro__ by injecting `uuid.UUID`. +# +# We apply brute-force here because the following pattern stopped +# working with Python 3.8: +# +# cdef class OurUUID: +# ... +# +# class UUID(OurUUID, uuid.UUID): +# ... +# +# With Python 3.8 it now produces +# +# "TypeError: multiple bases have instance lay-out conflict" +# +# error. Maybe it's possible to fix this some other way, but +# the best solution possible would be to just contribute our +# faster UUID to the standard library and not have this problem +# at all. For now this hack is pretty safe and should be +# compatible with future Pythons for long enough. +# +assert UUID.__bases__[0] is __UUIDReplaceMe +assert UUID.__mro__[1] is __UUIDReplaceMe +cpython.Py_INCREF(std_UUID) +cpython.PyTuple_SET_ITEM(UUID.__bases__, 0, std_UUID) +cpython.Py_INCREF(std_UUID) +cpython.PyTuple_SET_ITEM(UUID.__mro__, 1, std_UUID) +# + + +cdef gaussdb_UUID = UUID diff --git a/async_gaussdb/pgproto b/async_gaussdb/pgproto deleted file mode 160000 index 1c3cad14..00000000 --- a/async_gaussdb/pgproto +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1c3cad14d53c8f3088106f4eab8f612b7293569b diff --git a/async_gaussdb/protocol/codecs/array.pyx b/async_gaussdb/protocol/codecs/array.pyx index 8d7219c1..dfc4ca11 100644 --- a/async_gaussdb/protocol/codecs/array.pyx +++ b/async_gaussdb/protocol/codecs/array.pyx @@ -419,7 +419,7 @@ cdef textarray_decode(ConnectionSettings settings, FRBuffer *buf, # Make a copy of array data since we will be mutating it for # the purposes of element decoding. - s = pgproto.text_decode(settings, buf) + s = gaussdbproto.text_decode(settings, buf) array_text = cpythonx.PyUnicode_AsUCS4Copy(s) try: @@ -467,8 +467,8 @@ cdef _textarray_decode(ConnectionSettings settings, object item str item_text FRBuffer item_buf - char *pg_item_str - ssize_t pg_item_len + char *gaussdb_item_str + ssize_t gaussdb_item_len ptr = array_text @@ -648,9 +648,9 @@ cdef _textarray_decode(ConnectionSettings settings, # Prepare the element buffer and call the text decoder # for the element type. - pgproto.as_pg_string_and_size( - settings, item_text, &pg_item_str, &pg_item_len) - frb_init(&item_buf, pg_item_str, pg_item_len) + gaussdbproto.as_gaussdb_string_and_size( + settings, item_text, &gaussdb_item_str, &gaussdb_item_len) + frb_init(&item_buf, gaussdb_item_str, gaussdb_item_len) item = decoder(settings, &item_buf, decoder_arg) # Place the decoded element in the array. @@ -822,12 +822,12 @@ cdef _infer_array_dims(const Py_UCS4 *array_text, cdef uint4_encode_ex(ConnectionSettings settings, WriteBuffer buf, object obj, const void *arg): - return pgproto.uint4_encode(settings, buf, obj) + return gaussdbproto.uint4_encode(settings, buf, obj) cdef uint4_decode_ex(ConnectionSettings settings, FRBuffer *buf, const void *arg): - return pgproto.uint4_decode(settings, buf) + return gaussdbproto.uint4_decode(settings, buf) cdef arrayoid_encode(ConnectionSettings settings, WriteBuffer buf, items): @@ -841,12 +841,12 @@ cdef arrayoid_decode(ConnectionSettings settings, FRBuffer *buf): cdef text_encode_ex(ConnectionSettings settings, WriteBuffer buf, object obj, const void *arg): - return pgproto.text_encode(settings, buf, obj) + return gaussdbproto.text_encode(settings, buf, obj) cdef text_decode_ex(ConnectionSettings settings, FRBuffer *buf, const void *arg): - return pgproto.text_decode(settings, buf) + return gaussdbproto.text_decode(settings, buf) cdef arraytext_encode(ConnectionSettings settings, WriteBuffer buf, items): @@ -865,11 +865,11 @@ cdef init_array_codecs(): register_core_codec(_OIDOID, &arrayoid_encode, &arrayoid_decode, - PG_FORMAT_BINARY) + GAUSSDB_FORMAT_BINARY) register_core_codec(_TEXTOID, &arraytext_encode, &arraytext_decode, - PG_FORMAT_BINARY) + GAUSSDB_FORMAT_BINARY) init_array_codecs() diff --git a/async_gaussdb/protocol/codecs/base.pxd b/async_gaussdb/protocol/codecs/base.pxd index 1cfed833..bb9b0206 100644 --- a/async_gaussdb/protocol/codecs/base.pxd +++ b/async_gaussdb/protocol/codecs/base.pxd @@ -33,14 +33,14 @@ cdef enum CodecType: cdef enum ServerDataFormat: - PG_FORMAT_ANY = -1 - PG_FORMAT_TEXT = 0 - PG_FORMAT_BINARY = 1 + GAUSSDB_FORMAT_ANY = -1 + GAUSSDB_FORMAT_TEXT = 0 + GAUSSDB_FORMAT_BINARY = 1 cdef enum ClientExchangeFormat: - PG_XFORMAT_OBJECT = 1 - PG_XFORMAT_TUPLE = 2 + GAUSSDB_XFORMAT_OBJECT = 1 + GAUSSDB_XFORMAT_TUPLE = 2 cdef class Codec: diff --git a/async_gaussdb/protocol/codecs/base.pyx b/async_gaussdb/protocol/codecs/base.pyx index 44622959..98c12b6f 100644 --- a/async_gaussdb/protocol/codecs/base.pyx +++ b/async_gaussdb/protocol/codecs/base.pyx @@ -76,28 +76,28 @@ cdef class Codec: self.encoder = &self.encode_scalar self.decoder = &self.decode_scalar elif type == CODEC_ARRAY: - if format == PG_FORMAT_BINARY: + if format == GAUSSDB_FORMAT_BINARY: self.encoder = &self.encode_array self.decoder = &self.decode_array else: self.encoder = &self.encode_array_text self.decoder = &self.decode_array_text elif type == CODEC_RANGE: - if format != PG_FORMAT_BINARY: + if format != GAUSSDB_FORMAT_BINARY: raise exceptions.UnsupportedClientFeatureError( 'cannot decode type "{}"."{}": text encoding of ' 'range types is not supported'.format(schema, name)) self.encoder = &self.encode_range self.decoder = &self.decode_range elif type == CODEC_MULTIRANGE: - if format != PG_FORMAT_BINARY: + if format != GAUSSDB_FORMAT_BINARY: raise exceptions.UnsupportedClientFeatureError( 'cannot decode type "{}"."{}": text encoding of ' 'range types is not supported'.format(schema, name)) self.encoder = &self.encode_multirange self.decoder = &self.decode_multirange elif type == CODEC_COMPOSITE: - if format != PG_FORMAT_BINARY: + if format != GAUSSDB_FORMAT_BINARY: raise exceptions.UnsupportedClientFeatureError( 'cannot decode type "{}"."{}": text encoding of ' 'composite types is not supported'.format(schema, name)) @@ -205,15 +205,15 @@ cdef class Codec: cdef encode_in_python(self, ConnectionSettings settings, WriteBuffer buf, object obj): data = self.py_encoder(obj) - if self.xformat == PG_XFORMAT_OBJECT: - if self.format == PG_FORMAT_BINARY: - pgproto.bytea_encode(settings, buf, data) - elif self.format == PG_FORMAT_TEXT: - pgproto.text_encode(settings, buf, data) + if self.xformat == GAUSSDB_XFORMAT_OBJECT: + if self.format == GAUSSDB_FORMAT_BINARY: + gaussdbproto.bytea_encode(settings, buf, data) + elif self.format == GAUSSDB_FORMAT_TEXT: + gaussdbproto.text_encode(settings, buf, data) else: raise exceptions.InternalClientError( 'unexpected data format: {}'.format(self.format)) - elif self.xformat == PG_XFORMAT_TUPLE: + elif self.xformat == GAUSSDB_XFORMAT_TUPLE: if self.base_codec is not None: self.base_codec.encode(settings, buf, data) else: @@ -307,15 +307,15 @@ cdef class Codec: cdef decode_in_python(self, ConnectionSettings settings, FRBuffer *buf): - if self.xformat == PG_XFORMAT_OBJECT: - if self.format == PG_FORMAT_BINARY: - data = pgproto.bytea_decode(settings, buf) - elif self.format == PG_FORMAT_TEXT: - data = pgproto.text_decode(settings, buf) + if self.xformat == GAUSSDB_XFORMAT_OBJECT: + if self.format == GAUSSDB_FORMAT_BINARY: + data = gaussdbproto.bytea_decode(settings, buf) + elif self.format == GAUSSDB_FORMAT_TEXT: + data = gaussdbproto.text_decode(settings, buf) else: raise exceptions.InternalClientError( 'unexpected data format: {}'.format(self.format)) - elif self.xformat == PG_XFORMAT_TUPLE: + elif self.xformat == GAUSSDB_XFORMAT_TUPLE: if self.base_codec is not None: data = self.base_codec.decode(settings, buf) else: @@ -374,7 +374,7 @@ cdef class Codec: return False cdef is_binary(self): - return self.format == PG_FORMAT_BINARY + return self.format == GAUSSDB_FORMAT_BINARY def __repr__(self): return ''.format( @@ -391,7 +391,7 @@ cdef class Codec: cdef Codec codec codec = Codec(oid) codec.init(name, schema, 'array', CODEC_ARRAY, element_codec.format, - PG_XFORMAT_OBJECT, NULL, NULL, None, None, None, + GAUSSDB_XFORMAT_OBJECT, NULL, NULL, None, None, None, element_codec, None, None, None, element_delimiter) return codec @@ -403,7 +403,7 @@ cdef class Codec: cdef Codec codec codec = Codec(oid) codec.init(name, schema, 'range', CODEC_RANGE, element_codec.format, - PG_XFORMAT_OBJECT, NULL, NULL, None, None, None, + GAUSSDB_XFORMAT_OBJECT, NULL, NULL, None, None, None, element_codec, None, None, None, 0) return codec @@ -415,7 +415,7 @@ cdef class Codec: cdef Codec codec codec = Codec(oid) codec.init(name, schema, 'multirange', CODEC_MULTIRANGE, - element_codec.format, PG_XFORMAT_OBJECT, NULL, NULL, None, + element_codec.format, GAUSSDB_XFORMAT_OBJECT, NULL, NULL, None, None, None, element_codec, None, None, None, 0) return codec @@ -430,7 +430,7 @@ cdef class Codec: cdef Codec codec codec = Codec(oid) codec.init(name, schema, 'composite', CODEC_COMPOSITE, - format, PG_XFORMAT_OBJECT, NULL, NULL, None, None, None, + format, GAUSSDB_XFORMAT_OBJECT, NULL, NULL, None, None, None, None, element_type_oids, element_names, element_codecs, 0) return codec @@ -502,7 +502,7 @@ cdef class DataCodecConfig: for ti in types: oid = ti['oid'] - if self.get_codec(oid, PG_FORMAT_ANY) is not None: + if self.get_codec(oid, GAUSSDB_FORMAT_ANY) is not None: continue name = ti['name'] @@ -523,7 +523,7 @@ cdef class DataCodecConfig: name = name[1:] name = '{}[]'.format(name) - elem_codec = self.get_codec(array_element_oid, PG_FORMAT_ANY) + elem_codec = self.get_codec(array_element_oid, GAUSSDB_FORMAT_ANY) if elem_codec is None: elem_codec = self.declare_fallback_codec( array_element_oid, ti['elemtype_name'], schema) @@ -545,11 +545,11 @@ cdef class DataCodecConfig: has_text_elements = False for typoid in comp_type_attrs: - elem_codec = self.get_codec(typoid, PG_FORMAT_ANY) + elem_codec = self.get_codec(typoid, GAUSSDB_FORMAT_ANY) if elem_codec is None: raise exceptions.InternalClientError( f'no codec for composite attribute type {typoid}') - if elem_codec.format is PG_FORMAT_TEXT: + if elem_codec.format is GAUSSDB_FORMAT_TEXT: has_text_elements = True comp_elem_codecs.append(elem_codec) @@ -560,9 +560,9 @@ cdef class DataCodecConfig: # If at least one element is text-encoded, we must # encode the whole composite as text. if has_text_elements: - elem_format = PG_FORMAT_TEXT + elem_format = GAUSSDB_FORMAT_TEXT else: - elem_format = PG_FORMAT_BINARY + elem_format = GAUSSDB_FORMAT_BINARY self._derived_type_codecs[oid, elem_format] = \ Codec.new_composite_codec( @@ -576,7 +576,7 @@ cdef class DataCodecConfig: raise exceptions.InternalClientError( f'type record missing base type for domain {oid}') - elem_codec = self.get_codec(base_type, PG_FORMAT_ANY) + elem_codec = self.get_codec(base_type, GAUSSDB_FORMAT_ANY) if elem_codec is None: elem_codec = self.declare_fallback_codec( base_type, ti['basetype_name'], schema) @@ -590,7 +590,7 @@ cdef class DataCodecConfig: raise exceptions.InternalClientError( f'type record missing base type for range {oid}') - elem_codec = self.get_codec(range_subtype_oid, PG_FORMAT_ANY) + elem_codec = self.get_codec(range_subtype_oid, GAUSSDB_FORMAT_ANY) if elem_codec is None: elem_codec = self.declare_fallback_codec( range_subtype_oid, ti['range_subtype_name'], schema) @@ -605,7 +605,7 @@ cdef class DataCodecConfig: raise exceptions.InternalClientError( f'type record missing base type for multirange {oid}') - elem_codec = self.get_codec(range_subtype_oid, PG_FORMAT_ANY) + elem_codec = self.get_codec(range_subtype_oid, GAUSSDB_FORMAT_ANY) if elem_codec is None: elem_codec = self.declare_fallback_codec( range_subtype_oid, ti['range_subtype_name'], schema) @@ -616,7 +616,7 @@ cdef class DataCodecConfig: elif ti['kind'] == b'e': # Enum types are essentially text self._set_builtin_type_codec(oid, name, schema, 'scalar', - TEXTOID, PG_FORMAT_ANY) + TEXTOID, GAUSSDB_FORMAT_ANY) else: self.declare_fallback_codec(oid, name, schema) @@ -636,13 +636,13 @@ cdef class DataCodecConfig: if typeinfos: self.add_types(typeinfos) - if format == PG_FORMAT_ANY: - formats = (PG_FORMAT_TEXT, PG_FORMAT_BINARY) + if format == GAUSSDB_FORMAT_ANY: + formats = (GAUSSDB_FORMAT_TEXT, GAUSSDB_FORMAT_BINARY) else: formats = (format,) for fmt in formats: - if xformat == PG_XFORMAT_TUPLE: + if xformat == GAUSSDB_XFORMAT_TUPLE: if typekind == "scalar": core_codec = get_core_codec(oid, fmt, xformat) if core_codec is None: @@ -666,12 +666,12 @@ cdef class DataCodecConfig: typename)) def remove_python_codec(self, typeoid, typename, typeschema): - for fmt in (PG_FORMAT_BINARY, PG_FORMAT_TEXT): + for fmt in (GAUSSDB_FORMAT_BINARY, GAUSSDB_FORMAT_TEXT): self._custom_type_codecs.pop((typeoid, fmt), None) self.clear_type_cache() def _set_builtin_type_codec(self, typeoid, typename, typeschema, typekind, - alias_to, format=PG_FORMAT_ANY): + alias_to, format=GAUSSDB_FORMAT_ANY): cdef: Codec codec Codec target_codec @@ -679,8 +679,8 @@ cdef class DataCodecConfig: uint32_t alias_oid = 0 bint codec_set = False - if format == PG_FORMAT_ANY: - formats = (PG_FORMAT_BINARY, PG_FORMAT_TEXT) + if format == GAUSSDB_FORMAT_ANY: + formats = (GAUSSDB_FORMAT_BINARY, GAUSSDB_FORMAT_TEXT) else: formats = (format,) @@ -708,9 +708,9 @@ cdef class DataCodecConfig: codec_set = True if not codec_set: - if format == PG_FORMAT_BINARY: + if format == GAUSSDB_FORMAT_BINARY: codec_str = 'binary' - elif format == PG_FORMAT_TEXT: + elif format == GAUSSDB_FORMAT_TEXT: codec_str = 'text' else: codec_str = 'text or binary' @@ -720,7 +720,7 @@ cdef class DataCodecConfig: f'there is no {codec_str} codec for {alias_to}') def set_builtin_type_codec(self, typeoid, typename, typeschema, typekind, - alias_to, format=PG_FORMAT_ANY): + alias_to, format=GAUSSDB_FORMAT_ANY): self._set_builtin_type_codec(typeoid, typename, typeschema, typekind, alias_to, format) self.clear_type_cache() @@ -747,9 +747,9 @@ cdef class DataCodecConfig: # using Connection.set_type_codec(). # self._set_builtin_type_codec(oid, name, schema, 'scalar', - TEXTOID, PG_FORMAT_TEXT) + TEXTOID, GAUSSDB_FORMAT_TEXT) - codec = self.get_codec(oid, PG_FORMAT_TEXT) + codec = self.get_codec(oid, GAUSSDB_FORMAT_TEXT) return codec @@ -757,16 +757,16 @@ cdef class DataCodecConfig: bint ignore_custom_codec=False): cdef Codec codec - if format == PG_FORMAT_ANY: + if format == GAUSSDB_FORMAT_ANY: codec = self.get_codec( - oid, PG_FORMAT_BINARY, ignore_custom_codec) + oid, GAUSSDB_FORMAT_BINARY, ignore_custom_codec) if codec is None: codec = self.get_codec( - oid, PG_FORMAT_TEXT, ignore_custom_codec) + oid, GAUSSDB_FORMAT_TEXT, ignore_custom_codec) return codec else: if not ignore_custom_codec: - codec = self.get_custom_codec(oid, PG_FORMAT_ANY) + codec = self.get_custom_codec(oid, GAUSSDB_FORMAT_ANY) if codec is not None: if codec.format != format: # The codec for this OID has been overridden by @@ -792,10 +792,10 @@ cdef class DataCodecConfig: ): cdef Codec codec - if format == PG_FORMAT_ANY: - codec = self.get_custom_codec(oid, PG_FORMAT_BINARY) + if format == GAUSSDB_FORMAT_ANY: + codec = self.get_custom_codec(oid, GAUSSDB_FORMAT_BINARY) if codec is None: - codec = self.get_custom_codec(oid, PG_FORMAT_TEXT) + codec = self.get_custom_codec(oid, GAUSSDB_FORMAT_TEXT) else: codec = self._custom_type_codecs.get((oid, format)) @@ -804,15 +804,15 @@ cdef class DataCodecConfig: cdef inline Codec get_core_codec( uint32_t oid, ServerDataFormat format, - ClientExchangeFormat xformat=PG_XFORMAT_OBJECT): + ClientExchangeFormat xformat=GAUSSDB_XFORMAT_OBJECT): cdef: void *ptr = NULL if oid > MAXSUPPORTEDOID: return None - if format == PG_FORMAT_BINARY: + if format == GAUSSDB_FORMAT_BINARY: ptr = binary_codec_map[oid * xformat] - elif format == PG_FORMAT_TEXT: + elif format == GAUSSDB_FORMAT_TEXT: ptr = text_codec_map[oid * xformat] if ptr is NULL: @@ -823,15 +823,15 @@ cdef inline Codec get_core_codec( cdef inline Codec get_any_core_codec( uint32_t oid, ServerDataFormat format, - ClientExchangeFormat xformat=PG_XFORMAT_OBJECT): - """A version of get_core_codec that accepts PG_FORMAT_ANY.""" + ClientExchangeFormat xformat=GAUSSDB_XFORMAT_OBJECT): + """A version of get_core_codec that accepts GAUSSDB_FORMAT_ANY.""" cdef: Codec codec - if format == PG_FORMAT_ANY: - codec = get_core_codec(oid, PG_FORMAT_BINARY, xformat) + if format == GAUSSDB_FORMAT_ANY: + codec = get_core_codec(oid, GAUSSDB_FORMAT_BINARY, xformat) if codec is None: - codec = get_core_codec(oid, PG_FORMAT_TEXT, xformat) + codec = get_core_codec(oid, GAUSSDB_FORMAT_TEXT, xformat) else: codec = get_core_codec(oid, format, xformat) @@ -846,7 +846,7 @@ cdef register_core_codec(uint32_t oid, encode_func encode, decode_func decode, ServerDataFormat format, - ClientExchangeFormat xformat=PG_XFORMAT_OBJECT): + ClientExchangeFormat xformat=GAUSSDB_XFORMAT_OBJECT): if oid > MAXSUPPORTEDOID: raise exceptions.InternalClientError( @@ -866,9 +866,9 @@ cdef register_core_codec(uint32_t oid, encode, decode, None, None, None, None, None, None, None, 0) cpython.Py_INCREF(codec) # immortalize - if format == PG_FORMAT_BINARY: + if format == GAUSSDB_FORMAT_BINARY: binary_codec_map[oid * xformat] = codec - elif format == PG_FORMAT_TEXT: + elif format == GAUSSDB_FORMAT_TEXT: text_codec_map[oid * xformat] = codec else: raise exceptions.InternalClientError( @@ -886,7 +886,7 @@ cdef register_extra_codec(str name, kind = 'scalar' codec = Codec(INVALIDOID) - codec.init(name, None, kind, CODEC_C, format, PG_XFORMAT_OBJECT, + codec.init(name, None, kind, CODEC_C, format, GAUSSDB_XFORMAT_OBJECT, encode, decode, None, None, None, None, None, None, None, 0) EXTRA_CODECS[name, format] = codec diff --git a/async_gaussdb/protocol/codecs/gaussdbproto.pyx b/async_gaussdb/protocol/codecs/gaussdbproto.pyx new file mode 100644 index 00000000..808187b6 --- /dev/null +++ b/async_gaussdb/protocol/codecs/gaussdbproto.pyx @@ -0,0 +1,490 @@ +# Copyright (C) 2016-present the asyncpg authors and contributors +# +# +# This module is part of asyncpg and is released under +# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 + + +cdef init_bits_codecs(): + register_core_codec(BITOID, + gaussdbproto.bits_encode, + gaussdbproto.bits_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(VARBITOID, + gaussdbproto.bits_encode, + gaussdbproto.bits_decode, + GAUSSDB_FORMAT_BINARY) + + +cdef init_bytea_codecs(): + register_core_codec(BYTEAOID, + gaussdbproto.bytea_encode, + gaussdbproto.bytea_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(CHAROID, + gaussdbproto.bytea_encode, + gaussdbproto.bytea_decode, + GAUSSDB_FORMAT_BINARY) + + +cdef init_datetime_codecs(): + register_core_codec(DATEOID, + gaussdbproto.date_encode, + gaussdbproto.date_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(DATEOID, + gaussdbproto.date_encode_tuple, + gaussdbproto.date_decode_tuple, + GAUSSDB_FORMAT_BINARY, + GAUSSDB_XFORMAT_TUPLE) + + register_core_codec(TIMEOID, + gaussdbproto.time_encode, + gaussdbproto.time_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(TIMEOID, + gaussdbproto.time_encode_tuple, + gaussdbproto.time_decode_tuple, + GAUSSDB_FORMAT_BINARY, + GAUSSDB_XFORMAT_TUPLE) + + register_core_codec(TIMETZOID, + gaussdbproto.timetz_encode, + gaussdbproto.timetz_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(TIMETZOID, + gaussdbproto.timetz_encode_tuple, + gaussdbproto.timetz_decode_tuple, + GAUSSDB_FORMAT_BINARY, + GAUSSDB_XFORMAT_TUPLE) + + register_core_codec(TIMESTAMPOID, + gaussdbproto.timestamp_encode, + gaussdbproto.timestamp_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(TIMESTAMPOID, + gaussdbproto.timestamp_encode_tuple, + gaussdbproto.timestamp_decode_tuple, + GAUSSDB_FORMAT_BINARY, + GAUSSDB_XFORMAT_TUPLE) + + register_core_codec(TIMESTAMPTZOID, + gaussdbproto.timestamptz_encode, + gaussdbproto.timestamptz_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(TIMESTAMPTZOID, + gaussdbproto.timestamp_encode_tuple, + gaussdbproto.timestamp_decode_tuple, + GAUSSDB_FORMAT_BINARY, + GAUSSDB_XFORMAT_TUPLE) + + register_core_codec(INTERVALOID, + gaussdbproto.interval_encode, + gaussdbproto.interval_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(INTERVALOID, + gaussdbproto.interval_encode_tuple, + gaussdbproto.interval_decode_tuple, + GAUSSDB_FORMAT_BINARY, + GAUSSDB_XFORMAT_TUPLE) + + # For obsolete abstime/reltime/tinterval, we do not bother to + # interpret the value, and simply return and pass it as text. + # + register_core_codec(ABSTIMEOID, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + register_core_codec(RELTIMEOID, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + register_core_codec(TINTERVALOID, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + +cdef init_float_codecs(): + register_core_codec(FLOAT4OID, + gaussdbproto.float4_encode, + gaussdbproto.float4_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(FLOAT8OID, + gaussdbproto.float8_encode, + gaussdbproto.float8_decode, + GAUSSDB_FORMAT_BINARY) + + +cdef init_geometry_codecs(): + register_core_codec(BOXOID, + gaussdbproto.box_encode, + gaussdbproto.box_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(LINEOID, + gaussdbproto.line_encode, + gaussdbproto.line_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(LSEGOID, + gaussdbproto.lseg_encode, + gaussdbproto.lseg_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(POINTOID, + gaussdbproto.point_encode, + gaussdbproto.point_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(PATHOID, + gaussdbproto.path_encode, + gaussdbproto.path_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(POLYGONOID, + gaussdbproto.poly_encode, + gaussdbproto.poly_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(CIRCLEOID, + gaussdbproto.circle_encode, + gaussdbproto.circle_decode, + GAUSSDB_FORMAT_BINARY) + + +cdef init_hstore_codecs(): + register_extra_codec('pg_contrib.hstore', + gaussdbproto.hstore_encode, + gaussdbproto.hstore_decode, + GAUSSDB_FORMAT_BINARY) + + +cdef init_json_codecs(): + register_core_codec(JSONOID, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_BINARY) + register_core_codec(JSONBOID, + gaussdbproto.jsonb_encode, + gaussdbproto.jsonb_decode, + GAUSSDB_FORMAT_BINARY) + register_core_codec(JSONPATHOID, + gaussdbproto.jsonpath_encode, + gaussdbproto.jsonpath_decode, + GAUSSDB_FORMAT_BINARY) + + +cdef init_int_codecs(): + + register_core_codec(BOOLOID, + gaussdbproto.bool_encode, + gaussdbproto.bool_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(INT2OID, + gaussdbproto.int2_encode, + gaussdbproto.int2_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(INT4OID, + gaussdbproto.int4_encode, + gaussdbproto.int4_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(INT8OID, + gaussdbproto.int8_encode, + gaussdbproto.int8_decode, + GAUSSDB_FORMAT_BINARY) + + +cdef init_pseudo_codecs(): + # Void type is returned by SELECT void_returning_function() + register_core_codec(VOIDOID, + gaussdbproto.void_encode, + gaussdbproto.void_decode, + GAUSSDB_FORMAT_BINARY) + + # Unknown type, always decoded as text + register_core_codec(UNKNOWNOID, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + # OID and friends + oid_types = [ + OIDOID, CIDOID + ] + + for oid_type in oid_types: + register_core_codec(oid_type, + gaussdbproto.uint4_encode, + gaussdbproto.uint4_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(XIDOID, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + # 64-bit OID types + oid8_types = [ + XID8OID, + ] + + for oid_type in oid8_types: + register_core_codec(oid_type, + gaussdbproto.uint8_encode, + gaussdbproto.uint8_decode, + GAUSSDB_FORMAT_BINARY) + + # reg* types -- these are really system catalog OIDs, but + # allow the catalog object name as an input. We could just + # decode these as OIDs, but handling them as text seems more + # useful. + # + reg_types = [ + REGPROCOID, REGPROCEDUREOID, REGOPEROID, REGOPERATOROID, + REGCLASSOID, REGTYPEOID, REGCONFIGOID, REGDICTIONARYOID, + REGNAMESPACEOID, REGROLEOID, REFCURSOROID, REGCOLLATIONOID, + ] + + for reg_type in reg_types: + register_core_codec(reg_type, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + # cstring type is used by GaussDB' I/O functions + register_core_codec(CSTRINGOID, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_BINARY) + + # various system pseudotypes with no I/O + no_io_types = [ + ANYOID, TRIGGEROID, EVENT_TRIGGEROID, LANGUAGE_HANDLEROID, + FDW_HANDLEROID, TSM_HANDLEROID, INTERNALOID, OPAQUEOID, + ANYELEMENTOID, ANYNONARRAYOID, ANYCOMPATIBLEOID, + ANYCOMPATIBLEARRAYOID, ANYCOMPATIBLENONARRAYOID, + ANYCOMPATIBLERANGEOID, ANYCOMPATIBLEMULTIRANGEOID, + ANYRANGEOID, ANYMULTIRANGEOID, ANYARRAYOID, + GAUSSDB_DDL_COMMANDOID, INDEX_AM_HANDLEROID, TABLE_AM_HANDLEROID, + ] + + register_core_codec(ANYENUMOID, + NULL, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + for no_io_type in no_io_types: + register_core_codec(no_io_type, + NULL, + NULL, + GAUSSDB_FORMAT_BINARY) + + # ACL specification string + register_core_codec(ACLITEMOID, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + # GaussDB' serialized expression tree type + register_core_codec(GAUSSDB_NODE_TREEOID, + NULL, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + # pg_lsn type -- a pointer to a location in the XLOG. + register_core_codec(GAUSSDB_LSNOID, + gaussdbproto.int8_encode, + gaussdbproto.int8_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(SMGROID, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + # pg_dependencies and pg_ndistinct are special types + # used in pg_statistic_ext columns. + register_core_codec(GAUSSDB_DEPENDENCIESOID, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + register_core_codec(GAUSSDB_NDISTINCTOID, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + # pg_mcv_list is a special type used in pg_statistic_ext_data + # system catalog + register_core_codec(GAUSSDB_MCV_LISTOID, + gaussdbproto.bytea_encode, + gaussdbproto.bytea_decode, + GAUSSDB_FORMAT_BINARY) + + # These two are internal to BRIN index support and are unlikely + # to be sent, but since I/O functions for these exist, add decoders + # nonetheless. + register_core_codec(GAUSSDB_BRIN_BLOOM_SUMMARYOID, + NULL, + gaussdbproto.bytea_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(GAUSSDB_BRIN_MINMAX_MULTI_SUMMARYOID, + NULL, + gaussdbproto.bytea_decode, + GAUSSDB_FORMAT_BINARY) + + +cdef init_text_codecs(): + textoids = [ + NAMEOID, + BPCHAROID, + VARCHAROID, + TEXTOID, + XMLOID + ] + + for oid in textoids: + register_core_codec(oid, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(oid, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + +cdef init_tid_codecs(): + register_core_codec(TIDOID, + gaussdbproto.tid_encode, + gaussdbproto.tid_decode, + GAUSSDB_FORMAT_BINARY) + + +cdef init_txid_codecs(): + + register_core_codec(TXID_SNAPSHOTOID, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + register_core_codec(GAUSSDB_SNAPSHOTOID, + gaussdbproto.gaussdb_snapshot_encode, + gaussdbproto.gaussdb_snapshot_decode, + GAUSSDB_FORMAT_BINARY) + + +cdef init_tsearch_codecs(): + ts_oids = [ + TSQUERYOID, + TSVECTOROID, + ] + + for oid in ts_oids: + register_core_codec(oid, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + register_core_codec(GTSVECTOROID, + NULL, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + +cdef init_uuid_codecs(): + register_core_codec(UUIDOID, + gaussdbproto.uuid_encode, + gaussdbproto.uuid_decode, + GAUSSDB_FORMAT_BINARY) + + +cdef init_numeric_codecs(): + register_core_codec(NUMERICOID, + gaussdbproto.numeric_encode_text, + gaussdbproto.numeric_decode_text, + GAUSSDB_FORMAT_TEXT) + + register_core_codec(NUMERICOID, + gaussdbproto.numeric_encode_binary, + gaussdbproto.numeric_decode_binary, + GAUSSDB_FORMAT_BINARY) + + +cdef init_network_codecs(): + register_core_codec(CIDROID, + gaussdbproto.cidr_encode, + gaussdbproto.cidr_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(INETOID, + gaussdbproto.inet_encode, + gaussdbproto.inet_decode, + GAUSSDB_FORMAT_BINARY) + + register_core_codec(MACADDROID, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + register_core_codec(MACADDR8OID, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + +cdef init_monetary_codecs(): + moneyoids = [ + MONEYOID, + ] + + for oid in moneyoids: + register_core_codec(oid, + gaussdbproto.text_encode, + gaussdbproto.text_decode, + GAUSSDB_FORMAT_TEXT) + + +cdef init_all_gaussdbproto_codecs(): + # Builtin types, in lexicographical order. + init_bits_codecs() + init_bytea_codecs() + init_datetime_codecs() + init_float_codecs() + init_geometry_codecs() + init_int_codecs() + init_json_codecs() + init_monetary_codecs() + init_network_codecs() + init_numeric_codecs() + init_text_codecs() + init_tid_codecs() + init_tsearch_codecs() + init_txid_codecs() + init_uuid_codecs() + + # Various pseudotypes and system types + init_pseudo_codecs() + + # contrib + init_hstore_codecs() + + +init_all_gaussdbproto_codecs() diff --git a/async_gaussdb/protocol/codecs/pgproto.pyx b/async_gaussdb/protocol/codecs/pgproto.pyx deleted file mode 100644 index 0dedc989..00000000 --- a/async_gaussdb/protocol/codecs/pgproto.pyx +++ /dev/null @@ -1,490 +0,0 @@ -# Copyright (C) 2016-present the asyncpg authors and contributors -# -# -# This module is part of asyncpg and is released under -# the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 - - -cdef init_bits_codecs(): - register_core_codec(BITOID, - pgproto.bits_encode, - pgproto.bits_decode, - PG_FORMAT_BINARY) - - register_core_codec(VARBITOID, - pgproto.bits_encode, - pgproto.bits_decode, - PG_FORMAT_BINARY) - - -cdef init_bytea_codecs(): - register_core_codec(BYTEAOID, - pgproto.bytea_encode, - pgproto.bytea_decode, - PG_FORMAT_BINARY) - - register_core_codec(CHAROID, - pgproto.bytea_encode, - pgproto.bytea_decode, - PG_FORMAT_BINARY) - - -cdef init_datetime_codecs(): - register_core_codec(DATEOID, - pgproto.date_encode, - pgproto.date_decode, - PG_FORMAT_BINARY) - - register_core_codec(DATEOID, - pgproto.date_encode_tuple, - pgproto.date_decode_tuple, - PG_FORMAT_BINARY, - PG_XFORMAT_TUPLE) - - register_core_codec(TIMEOID, - pgproto.time_encode, - pgproto.time_decode, - PG_FORMAT_BINARY) - - register_core_codec(TIMEOID, - pgproto.time_encode_tuple, - pgproto.time_decode_tuple, - PG_FORMAT_BINARY, - PG_XFORMAT_TUPLE) - - register_core_codec(TIMETZOID, - pgproto.timetz_encode, - pgproto.timetz_decode, - PG_FORMAT_BINARY) - - register_core_codec(TIMETZOID, - pgproto.timetz_encode_tuple, - pgproto.timetz_decode_tuple, - PG_FORMAT_BINARY, - PG_XFORMAT_TUPLE) - - register_core_codec(TIMESTAMPOID, - pgproto.timestamp_encode, - pgproto.timestamp_decode, - PG_FORMAT_BINARY) - - register_core_codec(TIMESTAMPOID, - pgproto.timestamp_encode_tuple, - pgproto.timestamp_decode_tuple, - PG_FORMAT_BINARY, - PG_XFORMAT_TUPLE) - - register_core_codec(TIMESTAMPTZOID, - pgproto.timestamptz_encode, - pgproto.timestamptz_decode, - PG_FORMAT_BINARY) - - register_core_codec(TIMESTAMPTZOID, - pgproto.timestamp_encode_tuple, - pgproto.timestamp_decode_tuple, - PG_FORMAT_BINARY, - PG_XFORMAT_TUPLE) - - register_core_codec(INTERVALOID, - pgproto.interval_encode, - pgproto.interval_decode, - PG_FORMAT_BINARY) - - register_core_codec(INTERVALOID, - pgproto.interval_encode_tuple, - pgproto.interval_decode_tuple, - PG_FORMAT_BINARY, - PG_XFORMAT_TUPLE) - - # For obsolete abstime/reltime/tinterval, we do not bother to - # interpret the value, and simply return and pass it as text. - # - register_core_codec(ABSTIMEOID, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - register_core_codec(RELTIMEOID, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - register_core_codec(TINTERVALOID, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - -cdef init_float_codecs(): - register_core_codec(FLOAT4OID, - pgproto.float4_encode, - pgproto.float4_decode, - PG_FORMAT_BINARY) - - register_core_codec(FLOAT8OID, - pgproto.float8_encode, - pgproto.float8_decode, - PG_FORMAT_BINARY) - - -cdef init_geometry_codecs(): - register_core_codec(BOXOID, - pgproto.box_encode, - pgproto.box_decode, - PG_FORMAT_BINARY) - - register_core_codec(LINEOID, - pgproto.line_encode, - pgproto.line_decode, - PG_FORMAT_BINARY) - - register_core_codec(LSEGOID, - pgproto.lseg_encode, - pgproto.lseg_decode, - PG_FORMAT_BINARY) - - register_core_codec(POINTOID, - pgproto.point_encode, - pgproto.point_decode, - PG_FORMAT_BINARY) - - register_core_codec(PATHOID, - pgproto.path_encode, - pgproto.path_decode, - PG_FORMAT_BINARY) - - register_core_codec(POLYGONOID, - pgproto.poly_encode, - pgproto.poly_decode, - PG_FORMAT_BINARY) - - register_core_codec(CIRCLEOID, - pgproto.circle_encode, - pgproto.circle_decode, - PG_FORMAT_BINARY) - - -cdef init_hstore_codecs(): - register_extra_codec('pg_contrib.hstore', - pgproto.hstore_encode, - pgproto.hstore_decode, - PG_FORMAT_BINARY) - - -cdef init_json_codecs(): - register_core_codec(JSONOID, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_BINARY) - register_core_codec(JSONBOID, - pgproto.jsonb_encode, - pgproto.jsonb_decode, - PG_FORMAT_BINARY) - register_core_codec(JSONPATHOID, - pgproto.jsonpath_encode, - pgproto.jsonpath_decode, - PG_FORMAT_BINARY) - - -cdef init_int_codecs(): - - register_core_codec(BOOLOID, - pgproto.bool_encode, - pgproto.bool_decode, - PG_FORMAT_BINARY) - - register_core_codec(INT2OID, - pgproto.int2_encode, - pgproto.int2_decode, - PG_FORMAT_BINARY) - - register_core_codec(INT4OID, - pgproto.int4_encode, - pgproto.int4_decode, - PG_FORMAT_BINARY) - - register_core_codec(INT8OID, - pgproto.int8_encode, - pgproto.int8_decode, - PG_FORMAT_BINARY) - - -cdef init_pseudo_codecs(): - # Void type is returned by SELECT void_returning_function() - register_core_codec(VOIDOID, - pgproto.void_encode, - pgproto.void_decode, - PG_FORMAT_BINARY) - - # Unknown type, always decoded as text - register_core_codec(UNKNOWNOID, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - # OID and friends - oid_types = [ - OIDOID, CIDOID - ] - - for oid_type in oid_types: - register_core_codec(oid_type, - pgproto.uint4_encode, - pgproto.uint4_decode, - PG_FORMAT_BINARY) - - register_core_codec(XIDOID, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - # 64-bit OID types - oid8_types = [ - XID8OID, - ] - - for oid_type in oid8_types: - register_core_codec(oid_type, - pgproto.uint8_encode, - pgproto.uint8_decode, - PG_FORMAT_BINARY) - - # reg* types -- these are really system catalog OIDs, but - # allow the catalog object name as an input. We could just - # decode these as OIDs, but handling them as text seems more - # useful. - # - reg_types = [ - REGPROCOID, REGPROCEDUREOID, REGOPEROID, REGOPERATOROID, - REGCLASSOID, REGTYPEOID, REGCONFIGOID, REGDICTIONARYOID, - REGNAMESPACEOID, REGROLEOID, REFCURSOROID, REGCOLLATIONOID, - ] - - for reg_type in reg_types: - register_core_codec(reg_type, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - # cstring type is used by GaussDB' I/O functions - register_core_codec(CSTRINGOID, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_BINARY) - - # various system pseudotypes with no I/O - no_io_types = [ - ANYOID, TRIGGEROID, EVENT_TRIGGEROID, LANGUAGE_HANDLEROID, - FDW_HANDLEROID, TSM_HANDLEROID, INTERNALOID, OPAQUEOID, - ANYELEMENTOID, ANYNONARRAYOID, ANYCOMPATIBLEOID, - ANYCOMPATIBLEARRAYOID, ANYCOMPATIBLENONARRAYOID, - ANYCOMPATIBLERANGEOID, ANYCOMPATIBLEMULTIRANGEOID, - ANYRANGEOID, ANYMULTIRANGEOID, ANYARRAYOID, - PG_DDL_COMMANDOID, INDEX_AM_HANDLEROID, TABLE_AM_HANDLEROID, - ] - - register_core_codec(ANYENUMOID, - NULL, - pgproto.text_decode, - PG_FORMAT_TEXT) - - for no_io_type in no_io_types: - register_core_codec(no_io_type, - NULL, - NULL, - PG_FORMAT_BINARY) - - # ACL specification string - register_core_codec(ACLITEMOID, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - # GaussDB' serialized expression tree type - register_core_codec(PG_NODE_TREEOID, - NULL, - pgproto.text_decode, - PG_FORMAT_TEXT) - - # pg_lsn type -- a pointer to a location in the XLOG. - register_core_codec(PG_LSNOID, - pgproto.int8_encode, - pgproto.int8_decode, - PG_FORMAT_BINARY) - - register_core_codec(SMGROID, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - # pg_dependencies and pg_ndistinct are special types - # used in pg_statistic_ext columns. - register_core_codec(PG_DEPENDENCIESOID, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - register_core_codec(PG_NDISTINCTOID, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - # pg_mcv_list is a special type used in pg_statistic_ext_data - # system catalog - register_core_codec(PG_MCV_LISTOID, - pgproto.bytea_encode, - pgproto.bytea_decode, - PG_FORMAT_BINARY) - - # These two are internal to BRIN index support and are unlikely - # to be sent, but since I/O functions for these exist, add decoders - # nonetheless. - register_core_codec(PG_BRIN_BLOOM_SUMMARYOID, - NULL, - pgproto.bytea_decode, - PG_FORMAT_BINARY) - - register_core_codec(PG_BRIN_MINMAX_MULTI_SUMMARYOID, - NULL, - pgproto.bytea_decode, - PG_FORMAT_BINARY) - - -cdef init_text_codecs(): - textoids = [ - NAMEOID, - BPCHAROID, - VARCHAROID, - TEXTOID, - XMLOID - ] - - for oid in textoids: - register_core_codec(oid, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_BINARY) - - register_core_codec(oid, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - -cdef init_tid_codecs(): - register_core_codec(TIDOID, - pgproto.tid_encode, - pgproto.tid_decode, - PG_FORMAT_BINARY) - - -cdef init_txid_codecs(): - - register_core_codec(TXID_SNAPSHOTOID, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - register_core_codec(PG_SNAPSHOTOID, - pgproto.pg_snapshot_encode, - pgproto.pg_snapshot_decode, - PG_FORMAT_BINARY) - - -cdef init_tsearch_codecs(): - ts_oids = [ - TSQUERYOID, - TSVECTOROID, - ] - - for oid in ts_oids: - register_core_codec(oid, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - register_core_codec(GTSVECTOROID, - NULL, - pgproto.text_decode, - PG_FORMAT_TEXT) - - -cdef init_uuid_codecs(): - register_core_codec(UUIDOID, - pgproto.uuid_encode, - pgproto.uuid_decode, - PG_FORMAT_BINARY) - - -cdef init_numeric_codecs(): - register_core_codec(NUMERICOID, - pgproto.numeric_encode_text, - pgproto.numeric_decode_text, - PG_FORMAT_TEXT) - - register_core_codec(NUMERICOID, - pgproto.numeric_encode_binary, - pgproto.numeric_decode_binary, - PG_FORMAT_BINARY) - - -cdef init_network_codecs(): - register_core_codec(CIDROID, - pgproto.cidr_encode, - pgproto.cidr_decode, - PG_FORMAT_BINARY) - - register_core_codec(INETOID, - pgproto.inet_encode, - pgproto.inet_decode, - PG_FORMAT_BINARY) - - register_core_codec(MACADDROID, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - register_core_codec(MACADDR8OID, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - -cdef init_monetary_codecs(): - moneyoids = [ - MONEYOID, - ] - - for oid in moneyoids: - register_core_codec(oid, - pgproto.text_encode, - pgproto.text_decode, - PG_FORMAT_TEXT) - - -cdef init_all_pgproto_codecs(): - # Builtin types, in lexicographical order. - init_bits_codecs() - init_bytea_codecs() - init_datetime_codecs() - init_float_codecs() - init_geometry_codecs() - init_int_codecs() - init_json_codecs() - init_monetary_codecs() - init_network_codecs() - init_numeric_codecs() - init_text_codecs() - init_tid_codecs() - init_tsearch_codecs() - init_txid_codecs() - init_uuid_codecs() - - # Various pseudotypes and system types - init_pseudo_codecs() - - # contrib - init_hstore_codecs() - - -init_all_pgproto_codecs() diff --git a/async_gaussdb/protocol/codecs/record.pyx b/async_gaussdb/protocol/codecs/record.pyx index 2ba7b17a..651590cd 100644 --- a/async_gaussdb/protocol/codecs/record.pyx +++ b/async_gaussdb/protocol/codecs/record.pyx @@ -66,6 +66,6 @@ cdef init_record_codecs(): register_core_codec(RECORDOID, anonymous_record_encode, anonymous_record_decode, - PG_FORMAT_BINARY) + GAUSSDB_FORMAT_BINARY) init_record_codecs() diff --git a/async_gaussdb/protocol/coreproto.pyx b/async_gaussdb/protocol/coreproto.pyx index 9d64c9f2..6919de17 100644 --- a/async_gaussdb/protocol/coreproto.pyx +++ b/async_gaussdb/protocol/coreproto.pyx @@ -56,10 +56,10 @@ cdef class CoreProtocol: cdef: char mtype ProtocolState state - pgproto.take_message_method take_message = \ - self.buffer.take_message - pgproto.get_message_type_method get_message_type= \ - self.buffer.get_message_type + gaussdbproto.take_message_method take_message = \ + self.buffer.take_message + gaussdbproto.get_message_type_method get_message_type= \ + self.buffer.get_message_type while take_message(self.buffer) == 1: mtype = get_message_type(self.buffer) @@ -503,17 +503,17 @@ cdef class CoreProtocol: list rows decode_row_method decoder = self._decode_row - pgproto.try_consume_message_method try_consume_message = \ - buf.try_consume_message - pgproto.take_message_type_method take_message_type = \ - buf.take_message_type + gaussdbproto.try_consume_message_method try_consume_message = \ + buf.try_consume_message + gaussdbproto.take_message_type_method take_message_type = \ + buf.take_message_type const char* cbuf ssize_t cbuf_len object row bytes mem - if PG_DEBUG: + if GAUSSDB_DEBUG: if buf.get_message_type() != b'D': raise apg_exc.InternalClientError( '_parse_data_msgs: first message is not "D"') @@ -523,7 +523,7 @@ cdef class CoreProtocol: buf.discard_message() return - if PG_DEBUG: + if GAUSSDB_DEBUG: if type(self.result) is not list: raise apg_exc.InternalClientError( '_parse_data_msgs: result is not a list, but {!r}'. diff --git a/async_gaussdb/protocol/encodings.pyx b/async_gaussdb/protocol/encodings.pyx index a0bd8534..16532bef 100644 --- a/async_gaussdb/protocol/encodings.pyx +++ b/async_gaussdb/protocol/encodings.pyx @@ -58,5 +58,5 @@ cdef dict ENCODINGS_MAP = { } -cdef get_python_encoding(pg_encoding): - return ENCODINGS_MAP.get(pg_encoding.lower(), pg_encoding.lower()) +cdef get_python_encoding(gaussdb_encoding): + return ENCODINGS_MAP.get(gaussdb_encoding.lower(), gaussdb_encoding.lower()) diff --git a/async_gaussdb/protocol/pgtypes.pxi b/async_gaussdb/protocol/gaussdbtypes.pxi similarity index 89% rename from async_gaussdb/protocol/pgtypes.pxi rename to async_gaussdb/protocol/gaussdbtypes.pxi index e9bb782f..32e353a8 100644 --- a/async_gaussdb/protocol/pgtypes.pxi +++ b/async_gaussdb/protocol/gaussdbtypes.pxi @@ -25,10 +25,10 @@ DEF OIDOID = 26 DEF TIDOID = 27 DEF XIDOID = 28 DEF CIDOID = 29 -DEF PG_DDL_COMMANDOID = 32 +DEF GAUSSDB_DDL_COMMANDOID = 32 DEF JSONOID = 114 DEF XMLOID = 142 -DEF PG_NODE_TREEOID = 194 +DEF GAUSSDB_NODE_TREEOID = 194 DEF SMGROID = 210 DEF TABLE_AM_HANDLEROID = 269 DEF INDEX_AM_HANDLEROID = 325 @@ -84,10 +84,10 @@ DEF ANYNONARRAYOID = 2776 DEF UUIDOID = 2950 DEF TXID_SNAPSHOTOID = 2970 DEF FDW_HANDLEROID = 3115 -DEF PG_LSNOID = 3220 +DEF GAUSSDB_LSNOID = 3220 DEF TSM_HANDLEROID = 3310 -DEF PG_NDISTINCTOID = 3361 -DEF PG_DEPENDENCIESOID = 3402 +DEF GAUSSDB_NDISTINCTOID = 3361 +DEF GAUSSDB_DEPENDENCIESOID = 3402 DEF ANYENUMOID = 3500 DEF TSVECTOROID = 3614 DEF TSQUERYOID = 3615 @@ -103,10 +103,10 @@ DEF REGROLEOID = 4096 DEF REGCOLLATIONOID = 4191 DEF ANYMULTIRANGEOID = 4537 DEF ANYCOMPATIBLEMULTIRANGEOID = 4538 -DEF PG_BRIN_BLOOM_SUMMARYOID = 4600 -DEF PG_BRIN_MINMAX_MULTI_SUMMARYOID = 4601 -DEF PG_MCV_LISTOID = 5017 -DEF PG_SNAPSHOTOID = 5038 +DEF GAUSSDB_BRIN_BLOOM_SUMMARYOID = 4600 +DEF GAUSSDB_BRIN_MINMAX_MULTI_SUMMARYOID = 4601 +DEF GAUSSDB_MCV_LISTOID = 5017 +DEF GAUSSDB_SNAPSHOTOID = 5038 DEF XID8OID = 5069 DEF ANYCOMPATIBLEOID = 5077 DEF ANYCOMPATIBLEARRAYOID = 5078 @@ -167,15 +167,15 @@ BUILTIN_TYPE_OID_MAP = { OIDOID: 'oid', OPAQUEOID: 'opaque', PATHOID: 'path', - PG_BRIN_BLOOM_SUMMARYOID: 'pg_brin_bloom_summary', - PG_BRIN_MINMAX_MULTI_SUMMARYOID: 'pg_brin_minmax_multi_summary', - PG_DDL_COMMANDOID: 'pg_ddl_command', - PG_DEPENDENCIESOID: 'pg_dependencies', - PG_LSNOID: 'pg_lsn', - PG_MCV_LISTOID: 'pg_mcv_list', - PG_NDISTINCTOID: 'pg_ndistinct', - PG_NODE_TREEOID: 'pg_node_tree', - PG_SNAPSHOTOID: 'pg_snapshot', + GAUSSDB_BRIN_BLOOM_SUMMARYOID: 'gaussdb_brin_bloom_summary', + GAUSSDB_BRIN_MINMAX_MULTI_SUMMARYOID: 'gaussdb_brin_minmax_multi_summary', + GAUSSDB_DDL_COMMANDOID: 'gaussdb_ddl_command', + GAUSSDB_DEPENDENCIESOID: 'gaussdb_dependencies', + GAUSSDB_LSNOID: 'gaussdb_lsn', + GAUSSDB_MCV_LISTOID: 'gaussdb_mcv_list', + GAUSSDB_NDISTINCTOID: 'gaussdb_ndistinct', + GAUSSDB_NODE_TREEOID: 'gaussdb_node_tree', + GAUSSDB_SNAPSHOTOID: 'gaussdb_snapshot', POINTOID: 'point', POLYGONOID: 'polygon', RECORDOID: 'record', diff --git a/async_gaussdb/protocol/protocol.pxd b/async_gaussdb/protocol/protocol.pxd index 76865e0e..9c803804 100644 --- a/async_gaussdb/protocol/protocol.pxd +++ b/async_gaussdb/protocol/protocol.pxd @@ -8,18 +8,18 @@ from libc.stdint cimport int16_t, int32_t, uint16_t, \ uint32_t, int64_t, uint64_t -from async_gaussdb.pgproto.debug cimport PG_DEBUG +from async_gaussdb.gaussdbproto.debug cimport GAUSSDB_DEBUG -from async_gaussdb.pgproto.pgproto cimport ( +from async_gaussdb.gaussdbproto.gaussdbproto cimport ( WriteBuffer, ReadBuffer, FRBuffer, ) -from async_gaussdb.pgproto cimport pgproto +from async_gaussdb.gaussdbproto cimport gaussdbproto include "consts.pxi" -include "pgtypes.pxi" +include "gaussdbtypes.pxi" include "codecs/base.pxd" include "settings.pxd" diff --git a/async_gaussdb/protocol/protocol.pyi b/async_gaussdb/protocol/protocol.pyi index 016b91f3..0777d5c3 100644 --- a/async_gaussdb/protocol/protocol.pyi +++ b/async_gaussdb/protocol/protocol.pyi @@ -17,10 +17,10 @@ from typing import ( ) from typing_extensions import TypeAlias -import async_gaussdb.pgproto.pgproto +import async_gaussdb.gaussdbproto.gaussdbproto from ..connect_utils import _ConnectionParameters -from ..pgproto.pgproto import WriteBuffer +from ..gaussdbproto.gaussdbproto import WriteBuffer from ..types import Attribute, Type _T = TypeVar('_T') @@ -40,7 +40,7 @@ NO_TIMEOUT: Final[_NoTimeoutType] hashlib_md5 = md5 @final -class ConnectionSettings(async_gaussdb.pgproto.pgproto.CodecContext): +class ConnectionSettings(async_gaussdb.gaussdbproto.gaussdbproto.CodecContext): __pyx_vtable__: Any def __init__(self, conn_key: object) -> None: ... def add_python_codec( diff --git a/async_gaussdb/protocol/protocol.pyx b/async_gaussdb/protocol/protocol.pyx index ccb5b0e1..783f3215 100644 --- a/async_gaussdb/protocol/protocol.pyx +++ b/async_gaussdb/protocol/protocol.pyx @@ -18,7 +18,7 @@ import socket import time import weakref -from async_gaussdb.pgproto.pgproto cimport ( +from async_gaussdb.gaussdbproto.gaussdbproto cimport ( WriteBuffer, ReadBuffer, @@ -32,7 +32,7 @@ from async_gaussdb.pgproto.pgproto cimport ( frb_get_len, ) -from async_gaussdb.pgproto cimport pgproto +from async_gaussdb.gaussdbproto cimport gaussdbproto from async_gaussdb.protocol cimport cpythonx from async_gaussdb.protocol cimport record @@ -45,11 +45,11 @@ from async_gaussdb import compat from async_gaussdb import types as apg_types from async_gaussdb import exceptions as apg_exc -from async_gaussdb.pgproto cimport hton +from async_gaussdb.gaussdbproto cimport hton include "consts.pxi" -include "pgtypes.pxi" +include "gaussdbtypes.pxi" include "encodings.pyx" include "settings.pyx" @@ -57,8 +57,8 @@ include "settings.pyx" include "codecs/base.pyx" include "codecs/textutils.pyx" -# register codecs provided by pgproto -include "codecs/pgproto.pyx" +# register codecs provided by gaussdbproto +include "codecs/gaussdbproto.pyx" # nonscalar include "codecs/array.pyx" @@ -476,7 +476,7 @@ cdef class BaseProtocol(CoreProtocol): for codec in codecs: if (not codec.has_encoder() or - codec.format != PG_FORMAT_BINARY): + codec.format != GAUSSDB_FORMAT_BINARY): raise apg_exc.InternalClientError( 'no binary format encoder for ' 'type {} (OID {})'.format(codec.name, codec.oid)) @@ -804,7 +804,7 @@ cdef class BaseProtocol(CoreProtocol): waiter.set_result(True) cdef _on_result__prepare(self, object waiter): - if PG_DEBUG: + if GAUSSDB_DEBUG: if self.statement is None: raise apg_exc.InternalClientError( '_on_result__prepare: statement is None') @@ -851,7 +851,7 @@ cdef class BaseProtocol(CoreProtocol): waiter.set_result(status_msg) cdef _decode_row(self, const char* buf, ssize_t buf_len): - if PG_DEBUG: + if GAUSSDB_DEBUG: if self.statement is None: raise apg_exc.InternalClientError( '_decode_row: statement is None') @@ -863,7 +863,7 @@ cdef class BaseProtocol(CoreProtocol): self.waiter = None if waiter is None: - if PG_DEBUG: + if GAUSSDB_DEBUG: raise apg_exc.InternalClientError('_on_result: waiter is None') if self.state == PROTOCOL_COPY_OUT_DATA or \ diff --git a/async_gaussdb/protocol/settings.pxd b/async_gaussdb/protocol/settings.pxd index 0a1a5f6f..985cec58 100644 --- a/async_gaussdb/protocol/settings.pxd +++ b/async_gaussdb/protocol/settings.pxd @@ -5,7 +5,7 @@ # the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0 -cdef class ConnectionSettings(pgproto.CodecContext): +cdef class ConnectionSettings(gaussdbproto.CodecContext): cdef: str _encoding object _codec diff --git a/async_gaussdb/protocol/settings.pyx b/async_gaussdb/protocol/settings.pyx index 47c72f27..e5dee9bd 100644 --- a/async_gaussdb/protocol/settings.pyx +++ b/async_gaussdb/protocol/settings.pyx @@ -9,7 +9,7 @@ from async_gaussdb import exceptions @cython.final -cdef class ConnectionSettings(pgproto.CodecContext): +cdef class ConnectionSettings(gaussdbproto.CodecContext): def __cinit__(self): self._encoding = 'utf-8' @@ -43,14 +43,14 @@ cdef class ConnectionSettings(pgproto.CodecContext): ClientExchangeFormat xformat if format == 'binary': - _format = PG_FORMAT_BINARY - xformat = PG_XFORMAT_OBJECT + _format = GAUSSDB_FORMAT_BINARY + xformat = GAUSSDB_XFORMAT_OBJECT elif format == 'text': - _format = PG_FORMAT_TEXT - xformat = PG_XFORMAT_OBJECT + _format = GAUSSDB_FORMAT_TEXT + xformat = GAUSSDB_XFORMAT_OBJECT elif format == 'tuple': - _format = PG_FORMAT_ANY - xformat = PG_XFORMAT_TUPLE + _format = GAUSSDB_FORMAT_ANY + xformat = GAUSSDB_XFORMAT_TUPLE else: raise exceptions.InterfaceError( 'invalid `format` argument, expected {}, got {!r}'.format( @@ -74,11 +74,11 @@ cdef class ConnectionSettings(pgproto.CodecContext): ServerDataFormat _format if format is None: - _format = PG_FORMAT_ANY + _format = GAUSSDB_FORMAT_ANY elif format == 'binary': - _format = PG_FORMAT_BINARY + _format = GAUSSDB_FORMAT_BINARY elif format == 'text': - _format = PG_FORMAT_TEXT + _format = GAUSSDB_FORMAT_TEXT else: raise exceptions.InterfaceError( 'invalid `format` argument, expected {}, got {!r}'.format( @@ -89,7 +89,7 @@ cdef class ConnectionSettings(pgproto.CodecContext): typekind, alias_to, _format) cpdef inline Codec get_data_codec(self, uint32_t oid, - ServerDataFormat format=PG_FORMAT_ANY, + ServerDataFormat format=GAUSSDB_FORMAT_ANY, bint ignore_custom_codec=False): return self._data_codecs.get_codec(oid, format, ignore_custom_codec) diff --git a/async_gaussdb/types.py b/async_gaussdb/types.py index 8565209e..acedb638 100644 --- a/async_gaussdb/types.py +++ b/async_gaussdb/types.py @@ -8,7 +8,7 @@ import typing -from async_gaussdb.pgproto.types import ( +from async_gaussdb.gaussdbproto.types import ( BitString, Point, Path, Polygon, Box, Line, LineSegment, Circle, ) diff --git a/setup.py b/setup.py index 985ea71e..1c6497b2 100644 --- a/setup.py +++ b/setup.py @@ -235,8 +235,8 @@ def finalize_options(self): version=VERSION, ext_modules=[ setuptools.extension.Extension( - "async_gaussdb.pgproto.pgproto", - ["async_gaussdb/pgproto/pgproto.pyx"], + "async_gaussdb.gaussdbproto.gaussdbproto", + ["async_gaussdb/gaussdbproto/gaussdbproto.pyx"], extra_compile_args=CFLAGS, extra_link_args=LDFLAGS), @@ -244,7 +244,7 @@ def finalize_options(self): "async_gaussdb.protocol.protocol", ["async_gaussdb/protocol/record/recordobj.c", "async_gaussdb/protocol/protocol.pyx"], - include_dirs=['async_gaussdb/pgproto/'], + include_dirs=['async_gaussdb/gaussdbproto/'], extra_compile_args=CFLAGS, extra_link_args=LDFLAGS), ], diff --git a/tests/test_codecs.py b/tests/test_codecs.py index 0cc0a918..83504537 100644 --- a/tests/test_codecs.py +++ b/tests/test_codecs.py @@ -392,7 +392,7 @@ def _system_timezone(): ('txid_snapshot', 'txid_snapshot', [ "100:1000:100,200,300,400" ]), - ('pg_snapshot', 'pg_snapshot', [ + ('gaussdb_snapshot', 'gaussdb_snapshot', [ (100, 1000, (100, 200, 300, 400)) ], (13, 0)), ('xid', 'xid', ( diff --git a/tools/generate_type_map.py b/tools/generate_type_map.py index 16ecb08b..93ed9a6c 100755 --- a/tools/generate_type_map.py +++ b/tools/generate_type_map.py @@ -113,7 +113,7 @@ async def runner(args): def main(): parser = argparse.ArgumentParser( - description='generate protocol/pgtypes.pxi from pg_catalog.pg_types') + description='generate protocol/gaussdbtypes.pxi from pg_catalog.pg_types') parser.add_argument( '--gaussdbhost', type=str, default='127.0.0.1', help='GaussDBSQL server host')