From: Daniele Varrazzo Date: Sun, 27 Dec 2020 23:20:47 +0000 (+0100) Subject: Use the C api to create memoryview objects X-Git-Tag: 3.0.dev0~228^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6eadceb74d59d7ab52c8e4ff602a21ecd2672597;p=thirdparty%2Fpsycopg.git Use the C api to create memoryview objects --- diff --git a/psycopg3_c/psycopg3_c/pq/escaping.pyx b/psycopg3_c/psycopg3_c/pq/escaping.pyx index 97a73db87..1f83cd1fe 100644 --- a/psycopg3_c/psycopg3_c/pq/escaping.pyx +++ b/psycopg3_c/psycopg3_c/pq/escaping.pyx @@ -7,6 +7,7 @@ psycopg3_c.pq.Escaping object implementation. from libc.string cimport strlen from cpython.bytearray cimport PyByteArray_FromStringAndSize, PyByteArray_Resize from cpython.bytearray cimport PyByteArray_AS_STRING +from cpython.memoryview cimport PyMemoryView_FromObject cdef class Escaping: @@ -32,7 +33,9 @@ cdef class Escaping: f"escape_literal failed: {error_message(self.conn)}" ) - return memoryview(PQBuffer._from_buffer(out, strlen(out))) + return PyMemoryView_FromObject( + PQBuffer._from_buffer(out, strlen(out)) + ) def escape_identifier(self, data: "Buffer") -> memoryview: cdef char *out @@ -52,7 +55,9 @@ cdef class Escaping: f"escape_identifier failed: {error_message(self.conn)}" ) - return memoryview(PQBuffer._from_buffer(out, strlen(out))) + return PyMemoryView_FromObject( + PQBuffer._from_buffer(out, strlen(out)) + ) def escape_string(self, data: "Buffer") -> memoryview: cdef int error @@ -84,7 +89,7 @@ cdef class Escaping: # shrink back or the length will be reported different PyByteArray_Resize(rv, len_out) - return memoryview(rv) + return PyMemoryView_FromObject(rv) def escape_bytea(self, data: "Buffer") -> memoryview: cdef size_t len_out @@ -108,7 +113,7 @@ cdef class Escaping: f"couldn't allocate for escape_bytea of {len(data)} bytes" ) - return memoryview( + return PyMemoryView_FromObject( PQBuffer._from_buffer(out, len_out - 1) # out includes final 0 ) @@ -126,4 +131,4 @@ cdef class Escaping: f"couldn't allocate for unescape_bytea of {len(data)} bytes" ) - return memoryview(PQBuffer._from_buffer(out, len_out)) + return PyMemoryView_FromObject(PQBuffer._from_buffer(out, len_out))