|
12 | 12 | import csv as csvlib
|
13 | 13 | import os
|
14 | 14 | from typing import (
|
| 15 | + IO, |
15 | 16 | TYPE_CHECKING,
|
16 | 17 | Any,
|
| 18 | + AnyStr, |
17 | 19 | cast,
|
18 | 20 | )
|
19 | 21 |
|
20 | 22 | import numpy as np
|
21 | 23 |
|
22 | 24 | from pandas._libs import writers as libwriters
|
23 |
| -from pandas.compat import pa_version_under11p0 |
| 25 | +from pandas.compat import ( |
| 26 | + pa_version_under8p0, |
| 27 | + pa_version_under11p0, |
| 28 | +) |
24 | 29 | from pandas.compat._optional import import_optional_dependency
|
25 | 30 | from pandas.util._decorators import cache_readonly
|
26 | 31 |
|
@@ -258,9 +263,12 @@ def save(self) -> None:
|
258 | 263 | is_text=self.engine == "python",
|
259 | 264 | ) as handles:
|
260 | 265 | # Note: self.encoding is irrelevant here
|
261 |
| - self._save(handles.handle) |
262 | 266 |
|
263 |
| - def _save_pyarrow(self, handle) -> None: |
| 267 | + # This is a mypy bug? |
| 268 | + # error: Cannot infer type argument 1 of "_save" of "CSVFormatter" [misc] |
| 269 | + self._save(handles.handle) # type: ignore[misc] |
| 270 | + |
| 271 | + def _save_pyarrow(self, handle: IO[AnyStr]) -> None: |
264 | 272 | pa = import_optional_dependency("pyarrow")
|
265 | 273 | pa_csv = import_optional_dependency("pyarrow.csv")
|
266 | 274 | # Convert index to column and rename name to empty string
|
@@ -289,19 +297,21 @@ def _save_pyarrow(self, handle) -> None:
|
289 | 297 | f"Quoting option {self.quoting} is not supported with engine='pyarrow'"
|
290 | 298 | )
|
291 | 299 |
|
292 |
| - kwargs = { |
| 300 | + kwargs: dict[str, Any] = { |
293 | 301 | "include_header": self._need_to_save_header,
|
294 | 302 | "batch_size": self.chunksize,
|
295 |
| - "delimiter": self.sep, |
296 | 303 | }
|
297 | 304 |
|
| 305 | + if not pa_version_under8p0: |
| 306 | + kwargs["delimiter"] = self.sep |
| 307 | + |
298 | 308 | if not pa_version_under11p0:
|
299 | 309 | kwargs["quoting_style"] = pa_quoting
|
300 | 310 |
|
301 | 311 | write_options = pa_csv.WriteOptions(**kwargs)
|
302 | 312 | pa_csv.write_csv(table, handle, write_options)
|
303 | 313 |
|
304 |
| - def _save(self, handle) -> None: |
| 314 | + def _save(self, handle: IO[AnyStr]) -> None: |
305 | 315 | if self.engine == "pyarrow":
|
306 | 316 | self._save_pyarrow(handle)
|
307 | 317 | else:
|
|
0 commit comments