11"""Contains class that saves and loads spreadsheet data."""
2+
23import csv
34import random
45import re
56from collections import Counter
67from io import StringIO
7- from typing import Dict , List , Optional , Tuple , Union , cast
8+ from typing import Optional , Union , cast
89
910import numpy as np
1011import pandas as pd
@@ -26,7 +27,7 @@ def __init__(
2627 self ,
2728 input_file_path : Optional [str ] = None ,
2829 data : Optional [pd .DataFrame ] = None ,
29- options : Optional [Dict ] = None ,
30+ options : Optional [dict ] = None ,
3031 ):
3132 """
3233 Initialize Data class for loading datasets of type CSV.
@@ -82,7 +83,7 @@ def __init__(
8283 self ._selected_data_format : str = options .get ("data_format" , "dataframe" )
8384 self ._delimiter : Optional [str ] = options .get ("delimiter" , None )
8485 self ._quotechar : Optional [str ] = options .get ("quotechar" , None )
85- self ._selected_columns : List [str ] = options .get ("selected_columns" , list ())
86+ self ._selected_columns : list [str ] = options .get ("selected_columns" , list ())
8687 self ._header : Optional [Union [str , int ]] = options .get ("header" , "auto" )
8788 self ._checked_header : bool = "header" in options and self ._header != "auto"
8889 self ._default_delimiter : str = ","
@@ -97,7 +98,7 @@ def __init__(
9798 self ._quotechar = self ._default_quotechar
9899
99100 @property
100- def selected_columns (self ) -> List [str ]:
101+ def selected_columns (self ) -> list [str ]:
101102 """Return selected columns."""
102103 return self ._selected_columns
103104
@@ -127,7 +128,7 @@ def is_structured(self) -> bool:
127128 return self .data_format == "dataframe"
128129
129130 @staticmethod
130- def _check_and_return_options (options : Optional [Dict ]) -> Dict :
131+ def _check_and_return_options (options : Optional [dict ]) -> dict :
131132 """
132133 Ensure options are valid inputs to the data reader.
133134
@@ -184,9 +185,9 @@ def _check_and_return_options(options: Optional[Dict]) -> Dict:
184185 def _guess_delimiter_and_quotechar (
185186 data_as_str : str ,
186187 quotechar : Optional [str ] = None ,
187- preferred : List [str ] = ["," , "\t " ],
188- omitted : List [str ] = ['"' , "'" ],
189- ) -> Tuple [Optional [str ], Optional [str ]]:
188+ preferred : list [str ] = ["," , "\t " ],
189+ omitted : list [str ] = ['"' , "'" ],
190+ ) -> tuple [Optional [str ], Optional [str ]]:
190191 r"""
191192 Automatically check for what delimiter exists in a text document.
192193
@@ -207,7 +208,7 @@ def _guess_delimiter_and_quotechar(
207208 vocab = Counter (data_as_str )
208209 if "\n " in vocab :
209210 vocab .pop ("\n " )
210- omitted_list : List [str ] = omitted
211+ omitted_list : list [str ] = omitted
211212 if quotechar is not None :
212213 omitted_list = omitted + [quotechar ]
213214 for char in omitted_list :
@@ -384,7 +385,7 @@ def _guess_header_row(
384385 quotechar = '"'
385386
386387 # Determine type for every cell
387- header_check_list : List [ List [str ]] = []
388+ header_check_list : list [ list [str ]] = []
388389 only_string_flag = True # Requires additional checks
389390 for row in data_as_str .split ("\n " ):
390391
@@ -403,7 +404,7 @@ def _guess_header_row(
403404
404405 # Flags differences in types between each row (true/false)
405406 potential_header = header_check_list [0 ]
406- differences : List [ List [bool ]] = []
407+ differences : list [ list [bool ]] = []
407408 for i in range (0 , len (header_check_list )):
408409 differences .append ([])
409410
@@ -612,7 +613,7 @@ def _load_data_from_file(self, input_file_path: str) -> pd.DataFrame:
612613 encoding = self .file_encoding ,
613614 )
614615
615- def _get_data_as_records (self , data : pd .DataFrame ) -> List [str ]:
616+ def _get_data_as_records (self , data : pd .DataFrame ) -> list [str ]:
616617 """Return data as records."""
617618 sep = self .delimiter if self .delimiter else self ._default_delimiter
618619 quote = self .quotechar if self .quotechar else self ._default_quotechar
@@ -621,7 +622,7 @@ def _get_data_as_records(self, data: pd.DataFrame) -> List[str]:
621622 return super ()._get_data_as_records (data )
622623
623624 @classmethod
624- def is_match (cls , file_path : str , options : Optional [Dict ] = None ) -> bool :
625+ def is_match (cls , file_path : str , options : Optional [dict ] = None ) -> bool :
625626 """
626627 Check if first 1000 lines of given file has valid delimited format.
627628
@@ -745,7 +746,7 @@ def reload(
745746 self ,
746747 input_file_path : Optional [str ] = None ,
747748 data : Optional [pd .DataFrame ] = None ,
748- options : Optional [Dict ] = None ,
749+ options : Optional [dict ] = None ,
749750 ):
750751 """
751752 Reload the data class with a new dataset.
0 commit comments