@@ -935,6 +935,8 @@ class _BufferedWriter(BytesIO, ABC): # type: ignore[misc]
935935 This wrapper writes to the underlying buffer on close.
936936 """
937937
938+ buffer = BytesIO ()
939+
938940 @abstractmethod
939941 def write_to_buffer (self ) -> None :
940942 ...
@@ -943,15 +945,13 @@ def close(self) -> None:
943945 if self .closed :
944946 # already closed
945947 return
946- if self .getvalue () :
948+ if self .getbuffer (). nbytes :
947949 # write to buffer
948950 self .seek (0 )
949- # error: "_BufferedWriter" has no attribute "buffer"
950- with self .buffer : # type: ignore[attr-defined]
951+ with self .buffer :
951952 self .write_to_buffer ()
952953 else :
953- # error: "_BufferedWriter" has no attribute "buffer"
954- self .buffer .close () # type: ignore[attr-defined]
954+ self .buffer .close ()
955955 super ().close ()
956956
957957
@@ -967,13 +967,12 @@ def __init__(
967967 super ().__init__ ()
968968 self .archive_name = archive_name
969969 self .name = name
970- # error: Argument "fileobj" to "open" of "TarFile" has incompatible
971- # type "Union[ReadBuffer[bytes], WriteBuffer[bytes], None]"; expected
972- # "Optional[IO[bytes]]"
973- self .buffer = tarfile .TarFile .open (
970+ # error: Incompatible types in assignment (expression has type "TarFile",
971+ # base class "_BufferedWriter" defined the type as "BytesIO")
972+ self .buffer : tarfile .TarFile = tarfile .TarFile .open ( # type: ignore[assignment]
974973 name = name ,
975974 mode = self .extend_mode (mode ),
976- fileobj = fileobj , # type: ignore[arg-type]
975+ fileobj = fileobj ,
977976 ** kwargs ,
978977 )
979978
@@ -1023,10 +1022,9 @@ def __init__(
10231022 self .archive_name = archive_name
10241023
10251024 kwargs .setdefault ("compression" , zipfile .ZIP_DEFLATED )
1026- # error: No overload variant of "ZipFile" matches argument types "str |
1027- # PathLike[str] | ReadBuffer[bytes] | WriteBuffer[bytes]", "str", "dict[str,
1028- # Any]"
1029- self .buffer = zipfile .ZipFile ( # type: ignore[call-overload]
1025+ # error: Incompatible types in assignment (expression has type "ZipFile",
1026+ # base class "_BufferedWriter" defined the type as "BytesIO")
1027+ self .buffer : zipfile .ZipFile = zipfile .ZipFile ( # type: ignore[assignment]
10301028 file , mode , ** kwargs
10311029 )
10321030
0 commit comments