From 481c9ede3c60094a524eb1d50ddc2313a41db85b Mon Sep 17 00:00:00 2001 From: Ali Hamdan Date: Sat, 28 Oct 2023 15:53:36 +0200 Subject: [PATCH] psycopg2: Fix missing `Protocol` base class in file protocols This is an error I introduced in #10630 because I didn't know protocols need to be explicitly inherited from in other protocol subclasses. The added test shows the change. Basically these protocols were unusable. --- stubs/psycopg2/@tests/test_cases/check_extensions.py | 6 ++++++ stubs/psycopg2/psycopg2/_psycopg.pyi | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/stubs/psycopg2/@tests/test_cases/check_extensions.py b/stubs/psycopg2/@tests/test_cases/check_extensions.py index 3252e9ace987..d8a2fb8d1d8e 100644 --- a/stubs/psycopg2/@tests/test_cases/check_extensions.py +++ b/stubs/psycopg2/@tests/test_cases/check_extensions.py @@ -1,5 +1,6 @@ from __future__ import annotations +import io from typing_extensions import assert_type import psycopg2.extensions @@ -54,3 +55,8 @@ class MyCursor(psycopg2.extensions.cursor): assert_type(dconn.cursor("test-dcur", None), psycopg2.extras.DictCursor) assert_type(dconn.cursor("test-dcur", cursor_factory=None), psycopg2.extras.DictCursor) assert_type(dconn.cursor("test-dcur", cursor_factory=MyCursor), MyCursor) + +# file protocols +# -------------- +cur = conn.cursor() +cur.copy_from(io.StringIO(), "table") diff --git a/stubs/psycopg2/psycopg2/_psycopg.pyi b/stubs/psycopg2/psycopg2/_psycopg.pyi index 1902f3fbbec6..45cdead90f7c 100644 --- a/stubs/psycopg2/psycopg2/_psycopg.pyi +++ b/stubs/psycopg2/psycopg2/_psycopg.pyi @@ -83,8 +83,8 @@ threadsafety: int __libpq_version__: int -class _SupportsReadAndReadline(SupportsRead[str], SupportsReadline[str]): ... -class _SupportsReadAndReadlineAndWrite(_SupportsReadAndReadline, SupportsWrite[str]): ... +class _SupportsReadAndReadline(SupportsRead[str], SupportsReadline[str], Protocol): ... +class _SupportsReadAndReadlineAndWrite(_SupportsReadAndReadline, SupportsWrite[str], Protocol): ... class cursor: arraysize: int