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 ,
3032
3133
3234class CSVFormatter :
35+ r"""
36+ Parameters
37+ ----------
38+ obj
39+ path_or_buf : FilePathOrBuffer[str], optional
40+ sep : str, default ','
41+ na_rep : str, default ''
42+ float_format : default None
43+ cols : default None
44+ header : Union[bool, Sequence[str]], default True
45+ index : bool, default True
46+ index_label : default None
47+ mode : str, default 'w'
48+ encoding : str, optional
49+ compression : default 'infer'
50+ quoting : int, optional
51+ line_terminator : str, optional, default '\n'
52+ chunksize : int, optional
53+ quotechar : str, optional, default '"'
54+ date_format : str, optional
55+ doublequote : bool, default True
56+ escapechar : default None
57+ decimal : str, optional, default '.'
58+ """
59+
3360 def __init__ (
3461 self ,
3562 obj ,
36- path_or_buf = None ,
37- sep = "," ,
38- na_rep = "" ,
63+ path_or_buf : Optional [ FilePathOrBuffer [ str ]] = None ,
64+ sep : str = "," ,
65+ na_rep : str = "" ,
3966 float_format = None ,
4067 cols = None ,
41- header = True ,
42- index = True ,
68+ header : Union [ bool , Sequence [ str ]] = True ,
69+ index : bool = True ,
4370 index_label = None ,
44- mode = "w" ,
45- encoding = None ,
71+ mode : str = "w" ,
72+ encoding : Optional [ str ] = None ,
4673 compression = "infer" ,
47- quoting = None ,
48- line_terminator = "\n " ,
49- chunksize = None ,
50- quotechar = '"' ,
51- date_format = None ,
52- doublequote = True ,
74+ quoting : Optional [ int ] = None ,
75+ line_terminator : Optional [ str ] = "\n " ,
76+ chunksize : Optional [ int ] = None ,
77+ quotechar : Optional [ str ] = '"' ,
78+ date_format : Optional [ str ] = None ,
79+ doublequote : bool = True ,
5380 escapechar = None ,
54- decimal = "." ,
81+ decimal : Optional [ str ] = "." ,
5582 ):
56-
5783 self .obj = obj
5884
5985 if path_or_buf is None :
@@ -154,14 +180,17 @@ def __init__(
154180 if not index :
155181 self .nlevels = 0
156182
157- def save (self ):
183+ def save (self ) -> None :
158184 """
159- Create the writer & save
185+ Create the writer & save.
160186 """
161187 # GH21227 internal compression is not used when file-like passed.
162188 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 )
189+ warnings .warn (
190+ "compression has no effect when passing file-like object as input." ,
191+ RuntimeWarning ,
192+ stacklevel = 2 ,
193+ )
165194
166195 # when zip compression is called.
167196 is_zip = isinstance (self .path_or_buf , ZipFile ) or (
@@ -223,7 +252,6 @@ def save(self):
223252 _fh .close ()
224253
225254 def _save_header (self ):
226-
227255 writer = self .writer
228256 obj = self .obj
229257 index_label = self .index_label
@@ -306,8 +334,7 @@ def _save_header(self):
306334 encoded_labels .extend (["" ] * len (columns ))
307335 writer .writerow (encoded_labels )
308336
309- def _save (self ):
310-
337+ def _save (self ) -> None :
311338 self ._save_header ()
312339
313340 nrows = len (self .data_index )
@@ -324,8 +351,13 @@ def _save(self):
324351
325352 self ._save_chunk (start_i , end_i )
326353
327- def _save_chunk (self , start_i : int , end_i : int ):
328-
354+ def _save_chunk (self , start_i : int , end_i : int ) -> None :
355+ """
356+ Parameters
357+ ----------
358+ start_i : int
359+ end_i : int
360+ """
329361 data_index = self .data_index
330362
331363 # create the data for a chunk
0 commit comments