@@ -935,6 +935,8 @@ class _BufferedWriter(BytesIO, ABC): # type: ignore[misc]
935
935
This wrapper writes to the underlying buffer on close.
936
936
"""
937
937
938
+ buffer = BytesIO ()
939
+
938
940
@abstractmethod
939
941
def write_to_buffer (self ) -> None :
940
942
...
@@ -943,15 +945,13 @@ def close(self) -> None:
943
945
if self .closed :
944
946
# already closed
945
947
return
946
- if self .getvalue () :
948
+ if self .getbuffer (). nbytes :
947
949
# write to buffer
948
950
self .seek (0 )
949
- # error: "_BufferedWriter" has no attribute "buffer"
950
- with self .buffer : # type: ignore[attr-defined]
951
+ with self .buffer :
951
952
self .write_to_buffer ()
952
953
else :
953
- # error: "_BufferedWriter" has no attribute "buffer"
954
- self .buffer .close () # type: ignore[attr-defined]
954
+ self .buffer .close ()
955
955
super ().close ()
956
956
957
957
@@ -967,13 +967,12 @@ def __init__(
967
967
super ().__init__ ()
968
968
self .archive_name = archive_name
969
969
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]
974
973
name = name ,
975
974
mode = self .extend_mode (mode ),
976
- fileobj = fileobj , # type: ignore[arg-type]
975
+ fileobj = fileobj ,
977
976
** kwargs ,
978
977
)
979
978
@@ -1023,10 +1022,9 @@ def __init__(
1023
1022
self .archive_name = archive_name
1024
1023
1025
1024
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]
1030
1028
file , mode , ** kwargs
1031
1029
)
1032
1030
0 commit comments