in backend/bms_app/source_db/parsers.py [0:0]
def _read_database_sheet_to_df(cls, wb):
"""Read and validate 'Database Servers' sheet."""
if cls.DATABASE_SERVERS_SHEET not in wb.sheet_names:
raise MigvisorFileDataError(
f'No {cls.DATABASE_SERVERS_SHEET} sheet found'
)
df = wb.parse(cls.DATABASE_SERVERS_SHEET, header=None)
header_row_index = cls._find_header_row_index(df)
if header_row_index is None: # might be 0 which is OK
raise MigvisorFileDataError('Headers row not found')
# set correct headers
df.columns = df.iloc[header_row_index]
df.columns.name = None
# drop empty rows before headers
df = df[header_row_index + 1:]
# drop completely empty rows if present
df.dropna(how='all', inplace=True)
if df.empty:
raise MigvisorFileDataError('No database found')
return df