def props(obj, required, **kwargs): """ Return a dictionary built from the combination of defaults, kwargs, and the attributes of the given object. """ # Get the attributes of the template object pr = get_obj_attrs(obj) # Get the parameters to generate the waveform # Note that keyword arguments override values in the template object input_params = default_qnm_args.copy() input_params.update(pr) input_params.update(kwargs) # Check if the required arguments are given for arg in required: if arg not in input_params: raise ValueError('Please provide ' + str(arg)) return input_params