From 6eadceb74d59d7ab52c8e4ff602a21ecd2672597 Mon Sep 17 00:00:00 2001 From: Daniele Varrazzo Date: Mon, 28 Dec 2020 00:20:47 +0100 Subject: [PATCH] Use the C api to create memoryview objects --- psycopg3_c/psycopg3_c/pq/escaping.pyx | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) 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)) -- 2.47.3