Source code for NGPIris.parse_credentials.parse_credentials


from json import load
from typing import TypeAlias

Credentials : TypeAlias = dict[str, dict[str, str]]
[docs] class CredentialsHandler: def __init__(self, credentials_path : str) -> None: """ Class for handling credentials to HCP and HCI :param credentials_path: Path to the credentials JSON file :type credentials_path: str """ self.hcp : dict[str, str] = {} self.hci : dict[str, str] = {} credentials : Credentials = parse_credentials(credentials_path) for key, value in credentials.items(): setattr(self, key, value)
[docs] def all_fields_empty(key : str, credentials : Credentials) -> bool: return all([v == "" for v in credentials[key].values()])
[docs] def check_empty_field(credentials : Credentials): if all([all_fields_empty(k, credentials) for k in credentials.keys()]): raise RuntimeError( "Missing entries in all fields in the credentials file. " + "Please enter your credentials in the credentials file" ) empty_fields_per_entry : dict[str, list[str]] = {} for k1, d in credentials.items(): # If all fields in *either* hci or hcp is empty then continue if all_fields_empty(k1, credentials): continue empty_fields : list[str] = [] for k2, v in d.items(): if v == "": empty_fields.append("\t- " + k2 + "\n") if empty_fields: empty_fields_per_entry[k1] = empty_fields all_empty_fields = [] for entry, l in empty_fields_per_entry.items(): l.insert(0, "- " + entry + ":\n") all_empty_fields.append("".join(l)) if all_empty_fields: raise RuntimeError( "Missing fields for the following entries in the credentials file: \n" + "".join(all_empty_fields) )
[docs] def parse_credentials(credentials_path : str) -> Credentials: credentials : Credentials = {} with open(credentials_path, 'r') as inp: credentials : Credentials = load(inp) check_empty_field(credentials) return credentials