From cebbb3d2b8c42870cae66bfef4feede127d9a8bf Mon Sep 17 00:00:00 2001 From: Simon Hawkins Date: Wed, 10 Jun 2020 15:59:28 +0100 Subject: [PATCH 1/2] TYP: type annotations for read_sas --- pandas/io/sas/sasreader.py | 45 +++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/pandas/io/sas/sasreader.py b/pandas/io/sas/sasreader.py index bd8c3be271505..029bc16142e5a 100644 --- a/pandas/io/sas/sasreader.py +++ b/pandas/io/sas/sasreader.py @@ -1,11 +1,16 @@ """ Read SAS sas7bdat or xport files. """ - from abc import ABCMeta, abstractmethod +from typing import TYPE_CHECKING, Optional, Union, overload + +from pandas._typing import FilePathOrBuffer, Label from pandas.io.common import stringify_path +if TYPE_CHECKING: + from pandas import DataFrame + # TODO(PY38): replace with Protocol in Python 3.8 class ReaderBase(metaclass=ABCMeta): @@ -22,14 +27,38 @@ def close(self): pass +@overload +def read_sas( + filepath_or_buffer: FilePathOrBuffer, + format: Optional[str] = ..., + index: Optional[Label] = ..., + encoding: Optional[str] = ..., + chunksize: int = ..., + iterator: bool = ..., +) -> ReaderBase: + ... + + +@overload +def read_sas( + filepath_or_buffer: FilePathOrBuffer, + format: Optional[str] = ..., + index: Optional[Label] = ..., + encoding: Optional[str] = ..., + chunksize: None = ..., + iterator: bool = ..., +) -> Union[DataFrame, ReaderBase]: + ... + + def read_sas( - filepath_or_buffer, - format=None, - index=None, - encoding=None, - chunksize=None, - iterator=False, -): + filepath_or_buffer: FilePathOrBuffer, + format: Optional[str] = None, + index: Optional[Label] = None, + encoding: Optional[str] = None, + chunksize: Optional[int] = None, + iterator: bool = False, +) -> Union[DataFrame, ReaderBase]: """ Read SAS files stored as either XPORT or SAS7BDAT format files. From 029bb2e4461b55a0ad5459f60d0d3522e572e654 Mon Sep 17 00:00:00 2001 From: Simon Hawkins Date: Wed, 10 Jun 2020 16:24:16 +0100 Subject: [PATCH 2/2] DataFrame in quotes --- pandas/io/sas/sasreader.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/io/sas/sasreader.py b/pandas/io/sas/sasreader.py index 029bc16142e5a..291c9d1ee7f0c 100644 --- a/pandas/io/sas/sasreader.py +++ b/pandas/io/sas/sasreader.py @@ -9,7 +9,7 @@ from pandas.io.common import stringify_path if TYPE_CHECKING: - from pandas import DataFrame + from pandas import DataFrame # noqa: F401 # TODO(PY38): replace with Protocol in Python 3.8 @@ -47,7 +47,7 @@ def read_sas( encoding: Optional[str] = ..., chunksize: None = ..., iterator: bool = ..., -) -> Union[DataFrame, ReaderBase]: +) -> Union["DataFrame", ReaderBase]: ... @@ -58,7 +58,7 @@ def read_sas( encoding: Optional[str] = None, chunksize: Optional[int] = None, iterator: bool = False, -) -> Union[DataFrame, ReaderBase]: +) -> Union["DataFrame", ReaderBase]: """ Read SAS files stored as either XPORT or SAS7BDAT format files.