55import csv as csvlib
66from io import StringIO
77import os
8- from typing import List
8+ from typing import List , Optional , Sequence , Union
99import warnings
1010from zipfile import ZipFile
1111
2121)
2222from pandas .core .dtypes .missing import notna
2323
24+ from pandas ._typing import FilePathOrBuffer
25+
2426from pandas .io .common import (
2527 get_compression_method ,
2628 get_filepath_or_buffer ,
@@ -33,27 +35,50 @@ class CSVFormatter:
3335 def __init__ (
3436 self ,
3537 obj ,
36- path_or_buf = None ,
37- sep = "," ,
38- na_rep = "" ,
38+ path_or_buf : Optional [ FilePathOrBuffer [ str ]] = None ,
39+ sep : str = "," ,
40+ na_rep : str = "" ,
3941 float_format = None ,
4042 cols = None ,
41- header = True ,
42- index = True ,
43+ header : Union [ bool , Sequence [ str ]] = True ,
44+ index : bool = True ,
4345 index_label = None ,
44- mode = "w" ,
45- encoding = None ,
46+ mode : str = "w" ,
47+ encoding : Optional [ str ] = None ,
4648 compression = "infer" ,
47- quoting = None ,
48- line_terminator = "\n " ,
49- chunksize = None ,
50- quotechar = '"' ,
51- date_format = None ,
52- doublequote = True ,
49+ quoting : Optional [ int ] = None ,
50+ line_terminator : Optional [ str ] = "\n " ,
51+ chunksize : Optional [ int ] = None ,
52+ quotechar : Optional [ str ] = '"' ,
53+ date_format : Optional [ str ] = None ,
54+ doublequote : bool = True ,
5355 escapechar = None ,
54- decimal = "." ,
56+ decimal : Optional [ str ] = "." ,
5557 ):
56-
58+ r"""
59+ Parameters
60+ ----------
61+ obj
62+ path_or_buf : FilePathOrBuffer[str], optional
63+ sep : str, default ','
64+ na_rep : str, default ''
65+ float_format : default None
66+ cols : default None
67+ header : Union[bool, Sequence[str]], default True
68+ index : bool, default True
69+ index_label : default None
70+ mode : str, default 'w'
71+ encoding : str, optional
72+ compression : default 'infer'
73+ quoting : int, optional
74+ line_terminator : str, optional, default '\n'
75+ chunksize : int, optional
76+ quotechar : str, optional, default '"'
77+ date_format : str, optional
78+ doublequote : bool, default True
79+ escapechar : default None
80+ decimal : str, optional, default '.'
81+ """
5782 self .obj = obj
5883
5984 if path_or_buf is None :
@@ -154,14 +179,17 @@ def __init__(
154179 if not index :
155180 self .nlevels = 0
156181
157- def save (self ):
182+ def save (self ) -> None :
158183 """
159- Create the writer & save
184+ Create the writer & save.
160185 """
161186 # GH21227 internal compression is not used when file-like passed.
162187 if self .compression and hasattr (self .path_or_buf , "write" ):
163- msg = "compression has no effect when passing file-like object as input."
164- warnings .warn (msg , RuntimeWarning , stacklevel = 2 )
188+ warnings .warn (
189+ "compression has no effect when passing file-like object as input." ,
190+ RuntimeWarning ,
191+ stacklevel = 2 ,
192+ )
165193
166194 # when zip compression is called.
167195 is_zip = isinstance (self .path_or_buf , ZipFile ) or (
@@ -223,7 +251,6 @@ def save(self):
223251 _fh .close ()
224252
225253 def _save_header (self ):
226-
227254 writer = self .writer
228255 obj = self .obj
229256 index_label = self .index_label
@@ -306,8 +333,7 @@ def _save_header(self):
306333 encoded_labels .extend (["" ] * len (columns ))
307334 writer .writerow (encoded_labels )
308335
309- def _save (self ):
310-
336+ def _save (self ) -> None :
311337 self ._save_header ()
312338
313339 nrows = len (self .data_index )
@@ -324,8 +350,13 @@ def _save(self):
324350
325351 self ._save_chunk (start_i , end_i )
326352
327- def _save_chunk (self , start_i : int , end_i : int ):
328-
353+ def _save_chunk (self , start_i : int , end_i : int ) -> None :
354+ """
355+ Parameters
356+ ----------
357+ start_i : int
358+ end_i : int
359+ """
329360 data_index = self .data_index
330361
331362 # create the data for a chunk
0 commit comments