11import logging
22import warnings
3+ from collections .abc import Sequence
34from pathlib import Path
5+ from typing import Literal
46
57import numpy as np
68import pandas as pd
2426
2527
2628def run (
27- realization ,
28- xlsfilename ,
29- designsheetname = "DesignSheet01" ,
30- defaultssheetname = "DefaultValues" ,
31- parametersfilename = "parameters.txt" ,
32- log_level = None ,
33- ):
29+ realization : int ,
30+ xlsfilename : str ,
31+ designsheetname : str = "DesignSheet01" ,
32+ defaultssheetname : str = "DefaultValues" ,
33+ parametersfilename : str = "parameters.txt" ,
34+ log_level : int | str | None = None ,
35+ ) -> None :
3436 """
3537 Reads out all file content from different files and create dataframes
3638 """
@@ -68,8 +70,12 @@ def run(
6870
6971
7072def _complete_parameters_file (
71- realization , parameters , parametersfilename , design_matrix_sheet , default_sheet
72- ):
73+ realization : int ,
74+ parameters : pd .DataFrame ,
75+ parametersfilename : str ,
76+ design_matrix_sheet : pd .DataFrame ,
77+ default_sheet : pd .DataFrame ,
78+ ) -> None :
7379 """
7480 Pick key / values from chosen realization in design matrix
7581 Append those key / values if not present into parameters.txt
@@ -184,7 +190,13 @@ def _complete_parameters_file(
184190 )
185191
186192
187- def _read_excel (file_name , sheet_name , header = 0 , usecols = None , engine = None ):
193+ def _read_excel (
194+ file_name : str ,
195+ sheet_name : str ,
196+ header : int | Sequence [int ] | None = 0 ,
197+ usecols : list [int ] | None = None ,
198+ engine : Literal ["xlrd" , "openpyxl" , "odf" , "pyxlsb" , "calamine" ] | None = None ,
199+ ) -> pd .DataFrame :
188200 """
189201 Make dataframe from excel file
190202 :return: Dataframe
@@ -219,7 +231,7 @@ def _read_excel(file_name, sheet_name, header=0, usecols=None, engine=None):
219231 return dframe .dropna (axis = 1 , how = "all" )
220232
221233
222- def _validate_design_matrix_header (design_matrix ) :
234+ def _validate_design_matrix_header (design_matrix : pd . DataFrame ) -> None :
223235 """
224236 Validate header in user inputted design matrix
225237 :raises: ValueError if design matrix contains empty headers
@@ -239,7 +251,7 @@ def _validate_design_matrix_header(design_matrix):
239251 raise ValueError (f"Column headers not present in column { column_indexes } " )
240252
241253
242- def _invalid_design_realizations (design_matrix ) :
254+ def _invalid_design_realizations (design_matrix : pd . DataFrame ) -> set [ int ] :
243255 """
244256 Build a set of realization indices where something is wrong,
245257 f.ex empty cells
@@ -263,7 +275,7 @@ def _invalid_design_realizations(design_matrix):
263275
264276 # Look for initial or trailing whitespace in column headers. This
265277 # is disallowed as it can create user confusion and has no use-case.
266- for col_header in design_matrix :
278+ for col_header in design_matrix . columns :
267279 if col_header != col_header .strip ():
268280 raise SystemExit (
269281 f'Column header "{ col_header } " contains initial or trailing whitespace.'
@@ -292,7 +304,7 @@ def _invalid_design_realizations(design_matrix):
292304 return {cell_coord [0 ] for cell_coord in empty_cell_coords }
293305
294306
295- def _read_defaultssheet (xlsfilename , defaultssheetname ) :
307+ def _read_defaultssheet (xlsfilename : str , defaultssheetname : str ) -> pd . DataFrame :
296308 """
297309 Construct a dataframe of keys and values to be used as defaults from the
298310 first two columns in a spreadsheet.
@@ -304,7 +316,10 @@ def _read_defaultssheet(xlsfilename, defaultssheetname):
304316 """
305317 if defaultssheetname :
306318 default_df = _read_excel (
307- xlsfilename , defaultssheetname , usecols = [0 , 1 ], header = None
319+ xlsfilename ,
320+ defaultssheetname ,
321+ usecols = [0 , 1 ],
322+ header = None ,
308323 )
309324 if default_df .empty :
310325 logger .info ("Empty defaultssheet provided" )
0 commit comments