def _process_parameters(self): parameters = [] has_schedule = self._cron() is not None seen = set() for var, param in self.flow._get_parameters(): # Throw an exception if the parameter is specified twice. norm = param.name.lower() if norm in seen: raise MetaflowException("Parameter *%s* is specified twice. " "Note that parameter names are " "case-insensitive." % param.name) seen.add(norm) is_required = param.kwargs.get('required', False) # Throw an exception if a schedule is set for a flow with required # parameters with no defaults. We currently don't have any notion # of data triggers in AWS Event Bridge. if 'default' not in param.kwargs and is_required and has_schedule: raise MetaflowException("The parameter *%s* does not have a " "default and is required. Scheduling " "such parameters via AWS Event Bridge " "is not currently supported." % param.name) value = deploy_time_eval(param.kwargs.get('default')) parameters.append(dict(name=param.name, value=value)) return parameters
def _process_parameters(self): parameters = [] has_schedule = self._cron() is not None for var, param in self.flow._get_parameters(): valuetype = param.kwargs.get('type', str) value = deploy_time_eval(param.kwargs.get('default')) required = param.kwargs.get('required', False) # Throw an exception if the flow has optional parameters # with no default value. if value is None and required is False: raise MetaflowException("The value of parameter *%s* is " "ambiguous. It does not have a " "default and it is not required." % param.name) # Throw an exception if a schedule is set for a flow with required # parameters with no defaults. We currently don't have any notion # of data triggers in AWS Event Bridge. if value is None and required and has_schedule: raise MetaflowException("The parameter *%s* does not have a " "default and is required. Scheduling " "such parameters via AWS Event Bridge " "is not currently supported." % param.name) parameters.append(dict(name=param.name, value=value)) return parameters
def _parameters(self): parameters = [] has_schedule = self._cron() is not None for _, param in self.flow._get_parameters(): # Throw an exception if a schedule is set for a flow with required # parameters with no defaults. is_required = param.kwargs.get('required', False) if 'default' not in param.kwargs and is_required and has_schedule: raise MetaflowException( "The parameter *%s* does not have a " "default and is required. Scheduling " "such parameters via Argo CronWorkflow " "is not currently supported." % param.name) p = {'name': param.name} if 'default' in param.kwargs: v = deploy_time_eval(param.kwargs.get('default')) p['value'] = json.dumps(v) parameters.append(p) return parameters