Author: bugman Date: Sat May 5 22:13:04 2012 New Revision: 16009 URL: http://svn.gna.org/viewcvs/relax?rev=16009&view=rev Log: The user function intro is now printed out before the argument checking. This is for better user feedback. Modified: branches/uf_redesign/prompt/objects.py Modified: branches/uf_redesign/prompt/objects.py URL: http://svn.gna.org/viewcvs/relax/branches/uf_redesign/prompt/objects.py?rev=16009&r1=16008&r2=16009&view=diff ============================================================================== --- branches/uf_redesign/prompt/objects.py (original) +++ branches/uf_redesign/prompt/objects.py Sat May 5 22:13:04 2012 @@ -90,70 +90,13 @@ # Set the argument defaults. values = [] - keys = uf_kargs.keys() for i in range(self._karg_num): + # The keyword. + name = self._kargs[i]['name'] + # The user supplied value. - if self._kargs[i]['name'] in keys: - # Aliases. - value = uf_kargs[self._kargs[i]['name']] - arg = self._kargs[i] - py_type = arg['py_type'] - desc_short = arg['desc_short'] - size = arg['size'] - dim = arg['dim'] - can_be_none = arg['can_be_none'] - can_be_empty = arg['can_be_empty'] - none_elements = arg['none_elements'] - list_of_lists = arg['list_of_lists'] - - # Check if the correct Python object type has been supplied. - if py_type == 'bool': - arg_check.is_bool(value, desc_short) - elif py_type == 'float': - arg_check.is_float(value, desc_short, can_be_none=can_be_none) - elif py_type == 'float_array': - arg_check.is_float_array(value, desc_short, size=size, can_be_none=can_be_none) - elif py_type == 'float_matrix': - arg_check.is_float_matrix(value, desc_short, dim=dim, can_be_none=can_be_none) - elif py_type == 'func': - arg_check.is_func(value, desc_short, can_be_none=can_be_none) - elif py_type == 'int': - arg_check.is_int(value, desc_short, can_be_none=can_be_none) - elif py_type == 'int_list': - arg_check.is_int(value, desc_short, size=size, can_be_none=can_be_none) - elif py_type == 'int_or_int_list': - arg_check.is_int_or_int_list(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty, none_elements=none_elements) - elif py_type == 'list': - arg_check.is_list(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty, list_of_lists=list_of_lists) - elif py_type == 'none': - arg_check.is_none(value, desc_short) - elif py_type == 'num': - arg_check.is_num(value, desc_short, can_be_none=can_be_none) - elif py_type == 'num_list': - arg_check.is_num_list(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty) - elif py_type == 'num_or_num_tuple': - arg_check.is_num_or_num_tuple(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty) - elif py_type == 'num_tuple': - arg_check.is_num_tuple(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty) - elif py_type == 'str': - arg_check.is_str(value, desc_short, can_be_none=can_be_none) - elif py_type == 'str_list': - arg_check.is_str_list(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty, list_of_lists=list_of_lists) - elif py_type == 'str_or_inst': - arg_check.is_str_or_inst(value, desc_short, can_be_none=can_be_none) - elif py_type == 'str_or_num_or_str_num_list': - arg_check.is_str_or_num_or_str_num_list(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty) - elif py_type == 'str_or_num_list': - arg_check.is_str_or_num_list(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty) - elif py_type == 'str_or_str_list': - arg_check.is_str_or_str_list(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty) - elif py_type == 'tuple': - arg_check.is_tuple(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty) - else: - raise RelaxError("The Python object type '%s' is unknown." % py_type) - - # Store the value. - values.append(value) + if name in keys: + values.append(uf_kargs[name]) # The default. else: @@ -178,6 +121,66 @@ # Print out. print(text) + + # Check the argument values. + for i in range(self._karg_num): + # Aliases. + value = uf_kargs[self._kargs[i]['name']] + arg = self._kargs[i] + py_type = arg['py_type'] + desc_short = arg['desc_short'] + size = arg['size'] + dim = arg['dim'] + can_be_none = arg['can_be_none'] + can_be_empty = arg['can_be_empty'] + none_elements = arg['none_elements'] + list_of_lists = arg['list_of_lists'] + + # Check if the correct Python object type has been supplied. + if py_type == 'bool': + arg_check.is_bool(value, desc_short) + elif py_type == 'float': + arg_check.is_float(value, desc_short, can_be_none=can_be_none) + elif py_type == 'float_array': + arg_check.is_float_array(value, desc_short, size=size, can_be_none=can_be_none) + elif py_type == 'float_matrix': + arg_check.is_float_matrix(value, desc_short, dim=dim, can_be_none=can_be_none) + elif py_type == 'func': + arg_check.is_func(value, desc_short, can_be_none=can_be_none) + elif py_type == 'int': + arg_check.is_int(value, desc_short, can_be_none=can_be_none) + elif py_type == 'int_list': + arg_check.is_int(value, desc_short, size=size, can_be_none=can_be_none) + elif py_type == 'int_or_int_list': + arg_check.is_int_or_int_list(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty, none_elements=none_elements) + elif py_type == 'list': + arg_check.is_list(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty, list_of_lists=list_of_lists) + elif py_type == 'none': + arg_check.is_none(value, desc_short) + elif py_type == 'num': + arg_check.is_num(value, desc_short, can_be_none=can_be_none) + elif py_type == 'num_list': + arg_check.is_num_list(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty) + elif py_type == 'num_or_num_tuple': + arg_check.is_num_or_num_tuple(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty) + elif py_type == 'num_tuple': + arg_check.is_num_tuple(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty) + elif py_type == 'str': + arg_check.is_str(value, desc_short, can_be_none=can_be_none) + elif py_type == 'str_list': + arg_check.is_str_list(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty, list_of_lists=list_of_lists) + elif py_type == 'str_or_inst': + arg_check.is_str_or_inst(value, desc_short, can_be_none=can_be_none) + elif py_type == 'str_or_num_or_str_num_list': + arg_check.is_str_or_num_or_str_num_list(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty) + elif py_type == 'str_or_num_list': + arg_check.is_str_or_num_list(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty) + elif py_type == 'str_or_str_list': + arg_check.is_str_or_str_list(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty) + elif py_type == 'tuple': + arg_check.is_tuple(value, desc_short, size=size, can_be_none=can_be_none, can_be_empty=can_be_empty) + else: + raise RelaxError("The Python object type '%s' is unknown." % py_type) # Execute the functional code. self._backend(*new_args, **uf_kargs)