From 1d1e2e45d7e7266fdca163785ccf1e167d7f2d74 Mon Sep 17 00:00:00 2001 From: Matthew Roeschke <10647082+mroeschke@users.noreply.github.com> Date: Mon, 24 Apr 2023 18:51:38 -0700 Subject: [PATCH] TYP: Use Protocol for ReaderBase --- pandas/io/sas/sasreader.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/pandas/io/sas/sasreader.py b/pandas/io/sas/sasreader.py index d56f4c7ebc695..2a395f790a5b5 100644 --- a/pandas/io/sas/sasreader.py +++ b/pandas/io/sas/sasreader.py @@ -3,13 +3,10 @@ """ from __future__ import annotations -from abc import ( - ABCMeta, - abstractmethod, -) from typing import ( TYPE_CHECKING, Hashable, + Protocol, overload, ) @@ -31,19 +28,16 @@ from pandas import DataFrame -# TODO(PY38): replace with Protocol in Python 3.8 -class ReaderBase(metaclass=ABCMeta): +class ReaderBase(Protocol): """ Protocol for XportReader and SAS7BDATReader classes. """ - @abstractmethod def read(self, nrows: int | None = None) -> DataFrame: - pass + ... - @abstractmethod def close(self) -> None: - pass + ... def __enter__(self) -> ReaderBase: return self