]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
chore: declare Copy.read to return a buffer object
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Wed, 7 Dec 2022 20:33:46 +0000 (20:33 +0000)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sat, 10 Dec 2022 13:21:15 +0000 (13:21 +0000)
We still return memoryview, but leave the possibility open to return
something different, such as bytes.

psycopg/psycopg/copy.py

index 274b200833e72026ec241a01c82a8935986414b3..751430664d3933e623cb307c2b8499eabdffa3e1 100644 (file)
@@ -148,7 +148,7 @@ class BaseCopy(Generic[ConnectionType]):
 
     # High level copy protocol generators (state change of the Copy object)
 
-    def _read_gen(self) -> PQGen[memoryview]:
+    def _read_gen(self) -> PQGen[Buffer]:
         if self._finished:
             return memoryview(b"")
 
@@ -250,7 +250,7 @@ class Copy(BaseCopy["Connection[Any]"]):
 
     # End user sync interface
 
-    def __iter__(self) -> Iterator[memoryview]:
+    def __iter__(self) -> Iterator[Buffer]:
         """Implement block-by-block iteration on :sql:`COPY TO`."""
         while True:
             data = self.read()
@@ -258,7 +258,7 @@ class Copy(BaseCopy["Connection[Any]"]):
                 break
             yield data
 
-    def read(self) -> memoryview:
+    def read(self) -> Buffer:
         """
         Read an unparsed row after a :sql:`COPY TO` operation.
 
@@ -498,14 +498,14 @@ class AsyncCopy(BaseCopy["AsyncConnection[Any]"]):
     ) -> None:
         await self.finish(exc_val)
 
-    async def __aiter__(self) -> AsyncIterator[memoryview]:
+    async def __aiter__(self) -> AsyncIterator[Buffer]:
         while True:
             data = await self.read()
             if not data:
                 break
             yield data
 
-    async def read(self) -> memoryview:
+    async def read(self) -> Buffer:
         return await self.connection.wait(self._read_gen())
 
     async def rows(self) -> AsyncIterator[Tuple[Any, ...]]: