Argument class which contains all arguments from yaml config and constructs additional arguments
| 73 | |
| 74 | |
| 75 | class Arguments: |
| 76 | """Argument class which contains all arguments from yaml config and constructs additional arguments""" |
| 77 | |
| 78 | def __init__(self, cmd_args, training_type=None, comm_backend=None, override_cmd_args=True): |
| 79 | # set the command line arguments |
| 80 | cmd_args_dict = cmd_args.__dict__ |
| 81 | for arg_key, arg_val in cmd_args_dict.items(): |
| 82 | setattr(self, arg_key, arg_val) |
| 83 | |
| 84 | self.get_default_yaml_config(cmd_args, training_type, comm_backend) |
| 85 | if not override_cmd_args: |
| 86 | # reload cmd args again |
| 87 | for arg_key, arg_val in cmd_args_dict.items(): |
| 88 | setattr(self, arg_key, arg_val) |
| 89 | def load_yaml_config(self, yaml_path): |
| 90 | try: |
| 91 | with open(yaml_path, "r") as stream: |
| 92 | try: |
| 93 | return yaml.safe_load(stream) |
| 94 | except yaml.YAMLError as exc: |
| 95 | raise ValueError("Yaml error - check yaml file") |
| 96 | except Exception as e: |
| 97 | return None |
| 98 | |
| 99 | def get_default_yaml_config(self, cmd_args, training_type=None, comm_backend=None): |
| 100 | if cmd_args.yaml_config_file == "": |
| 101 | path_current_file = path.abspath(path.dirname(__file__)) |
| 102 | if ( |
| 103 | training_type == FEDML_TRAINING_PLATFORM_SIMULATION |
| 104 | and comm_backend == FEDML_SIMULATION_TYPE_SP |
| 105 | ): |
| 106 | config_file = path.join( |
| 107 | path_current_file, "config/simulation_sp/fedml_config.yaml" |
| 108 | ) |
| 109 | cmd_args.yaml_config_file = config_file |
| 110 | print( |
| 111 | "training_type == FEDML_TRAINING_PLATFORM_SIMULATION and comm_backend == FEDML_SIMULATION_TYPE_SP" |
| 112 | ) |
| 113 | elif ( |
| 114 | training_type == FEDML_TRAINING_PLATFORM_SIMULATION |
| 115 | and comm_backend == FEDML_SIMULATION_TYPE_MPI |
| 116 | ): |
| 117 | config_file = path.join( |
| 118 | path_current_file, "config/simulaton_mpi/fedml_config.yaml" |
| 119 | ) |
| 120 | cmd_args.yaml_config_file = config_file |
| 121 | print( |
| 122 | "training_type == FEDML_TRAINING_PLATFORM_SIMULATION and comm_backend == FEDML_SIMULATION_TYPE_MPI" |
| 123 | ) |
| 124 | elif training_type == FEDML_TRAINING_PLATFORM_CROSS_SILO: |
| 125 | print("training_type == FEDML_TRAINING_PLATFORM_CROSS_SILO") |
| 126 | elif training_type == FEDML_TRAINING_PLATFORM_CROSS_DEVICE: |
| 127 | print("training_type == FEDML_TRAINING_PLATFORM_CROSS_DEVICE") |
| 128 | elif training_type == FEDML_TRAINING_PLATFORM_CROSS_CLOUD: |
| 129 | print("training_type == FEDML_TRAINING_PLATFORM_CHEETAH") |
| 130 | elif training_type == FEDML_TRAINING_PLATFORM_SERVING: |
| 131 | print("training_type == FEDML_TRAINING_PLATFORM_SERVING") |
| 132 | else: |
no outgoing calls
no test coverage detected