|  | #!/usr/bin/env python | 
|  |  | 
|  | r""" | 
|  | This module provides valuable argument processing functions like | 
|  | gen_get_options and sprint_args. | 
|  | """ | 
|  |  | 
|  | import sys | 
|  | import os | 
|  |  | 
|  | import gen_print as gp | 
|  |  | 
|  |  | 
|  | ############################################################################### | 
|  | def svalid_value(var_value, | 
|  | invalid_values=[], | 
|  | valid_values=[], | 
|  | var_name=""): | 
|  |  | 
|  | r""" | 
|  | Return an empty string if var_value is a valid value.  Otherwise, return | 
|  | an error string. | 
|  |  | 
|  | Description of arguments: | 
|  | var_value                       The value being validated. | 
|  | invalid_values                  A list of invalid values.  If var_value is | 
|  | equal to any of these, it is invalid. | 
|  | Note that if you specify anything for | 
|  | invalid_values (below), the valid_values | 
|  | list is not even processed. | 
|  | valid_values                    A list of invalid values.  var_value must | 
|  | be equal to one of these values to be | 
|  | considered valid. | 
|  | var_name                        The name of the variable whose value is | 
|  | passed in var_value.  This parameter is | 
|  | normally unnecessary as this function can | 
|  | figure out the var_name.  This is provided | 
|  | for Robot callers.  In this scenario, we | 
|  | are unable to get the variable name | 
|  | ourselves. | 
|  | """ | 
|  |  | 
|  | success_message = "" | 
|  | error_message = "" | 
|  | stack_frame_ix = 3 | 
|  |  | 
|  | len_valid_values = len(valid_values) | 
|  | len_invalid_values = len(invalid_values) | 
|  | if len_valid_values > 0 and len_invalid_values > 0: | 
|  | error_message += "Programmer error - You must provide either an" +\ | 
|  | " invalid_values list or a valid_values" +\ | 
|  | " list but NOT both.\n" +\ | 
|  | gp.sprint_var(invalid_values) +\ | 
|  | gp.sprint_var(valid_values) | 
|  | return error_message | 
|  |  | 
|  | show_blanks = 1 | 
|  | if len_valid_values > 0: | 
|  | # Processing the valid_values list. | 
|  | if var_value in valid_values: | 
|  | return success_message | 
|  | if var_name == "": | 
|  | var_name = gp.get_arg_name(0, 1, stack_frame_ix) | 
|  | error_message += "The following variable has an invalid" +\ | 
|  | " value:\n" +\ | 
|  | gp.sprint_varx(var_name, var_value, show_blanks) +\ | 
|  | "\nIt must be one of the following values:\n" +\ | 
|  | gp.sprint_varx("valid_values", valid_values, | 
|  | show_blanks) | 
|  | return error_message | 
|  |  | 
|  | if len_invalid_values == 0: | 
|  | # Assign default value. | 
|  | invalid_values = [""] | 
|  |  | 
|  | # Assertion: We have an invalid_values list.  Processing it now. | 
|  | if var_value not in invalid_values: | 
|  | return success_message | 
|  |  | 
|  | if var_name == "": | 
|  | var_name = gp.get_arg_name(0, 1, stack_frame_ix) | 
|  | error_message += "The following variable has an invalid value:\n" +\ | 
|  | gp.sprint_varx(var_name, var_value, show_blanks) +\ | 
|  | "\nIt must NOT be one of the following values:\n" +\ | 
|  | gp.sprint_varx("invalid_values", invalid_values, | 
|  | show_blanks) | 
|  | return error_message | 
|  |  | 
|  | ############################################################################### | 
|  |  | 
|  |  | 
|  | ############################################################################### | 
|  | def valid_value(var_value, | 
|  | invalid_values=[], | 
|  | valid_values=[], | 
|  | var_name=""): | 
|  |  | 
|  | r""" | 
|  | Return True if var_value is a valid value.  Otherwise, return False and | 
|  | print an error message to stderr. | 
|  |  | 
|  | Description of arguments: | 
|  | (See description of arguments for svalid_value (above)). | 
|  | """ | 
|  |  | 
|  | error_message = svalid_value(var_value, invalid_values, valid_values, | 
|  | var_name) | 
|  |  | 
|  | if not error_message == "": | 
|  | gp.print_error_report(error_message) | 
|  | return False | 
|  | return True | 
|  |  | 
|  | ############################################################################### | 
|  |  | 
|  |  | 
|  | ############################################################################### | 
|  | def svalid_integer(var_value, | 
|  | var_name=""): | 
|  |  | 
|  | r""" | 
|  | Return an empty string if var_value is a valid integer.  Otherwise, return | 
|  | an error string. | 
|  |  | 
|  | Description of arguments: | 
|  | var_value                       The value being validated. | 
|  | var_name                        The name of the variable whose value is | 
|  | passed in var_value.  This parameter is | 
|  | normally unnecessary as this function can | 
|  | figure out the var_name.  This is provided | 
|  | for Robot callers.  In this scenario, we | 
|  | are unable to get the variable name | 
|  | ourselves. | 
|  | """ | 
|  |  | 
|  | success_message = "" | 
|  | error_message = "" | 
|  | try: | 
|  | if type(int(str(var_value), 0)) is int: | 
|  | return success_message | 
|  | except ValueError: | 
|  | pass | 
|  |  | 
|  | # If we get to this point, the validation has failed. | 
|  | if var_name is "": | 
|  | stack_index = 3 | 
|  | var_name = gp.get_arg_name(0, 1, stack_index) | 
|  |  | 
|  | show_blanks = 1 | 
|  | error_message += "Invalid integer value:\n" +\ | 
|  | gp.sprint_varx(var_name, var_value, show_blanks) | 
|  |  | 
|  | return error_message | 
|  |  | 
|  | ############################################################################### | 
|  |  | 
|  |  | 
|  | ############################################################################### | 
|  | def valid_integer(var_value, | 
|  | var_name=""): | 
|  |  | 
|  | r""" | 
|  | Return True if var_value is a valid integer.  Otherwise, return False and | 
|  | print an error message to stderr. | 
|  |  | 
|  | Description of arguments: | 
|  | (See description of arguments for svalid_value (above)). | 
|  | """ | 
|  |  | 
|  | error_message = svalid_integer(var_value, var_name) | 
|  |  | 
|  | if not error_message == "": | 
|  | gp.print_error_report(error_message) | 
|  | return False | 
|  | return True | 
|  |  | 
|  | ############################################################################### | 
|  |  | 
|  |  | 
|  | ############################################################################### | 
|  | def svalid_dir_path(var_value, | 
|  | var_name=""): | 
|  |  | 
|  | r""" | 
|  | Return an empty string if var_value is a valid directory path.  Otherwise, | 
|  | return an error string. | 
|  |  | 
|  | Description of arguments: | 
|  | var_value                       The value being validated. | 
|  | var_name                        The name of the variable whose value is | 
|  | passed in var_value.  This parameter is | 
|  | normally unnecessary as this function can | 
|  | figure out the var_name.  This is provided | 
|  | for Robot callers.  In this scenario, we | 
|  | are unable to get the variable name | 
|  | ourselves. | 
|  | """ | 
|  |  | 
|  | error_message = "" | 
|  | if not os.path.isdir(str(var_value)): | 
|  | if var_name is "": | 
|  | stack_index = 3 | 
|  | var_name = gp.get_arg_name(0, 1, stack_index) | 
|  | error_message += "The following directory does not exist:\n" +\ | 
|  | gp.sprint_varx(var_name, var_value) | 
|  |  | 
|  | return error_message | 
|  |  | 
|  | ############################################################################### | 
|  |  | 
|  |  | 
|  | ############################################################################### | 
|  | def valid_dir_path(var_value, | 
|  | var_name=""): | 
|  |  | 
|  | r""" | 
|  | Return True if var_value is a valid integer.  Otherwise, return False and | 
|  | print an error message to stderr. | 
|  |  | 
|  | Description of arguments: | 
|  | (See description of arguments for svalid_value (above)). | 
|  | """ | 
|  |  | 
|  | error_message = svalid_dir_path(var_value, var_name) | 
|  |  | 
|  | if not error_message == "": | 
|  | gp.print_error_report(error_message) | 
|  | return False | 
|  |  | 
|  | return True | 
|  |  | 
|  | ############################################################################### | 
|  |  | 
|  |  | 
|  | ############################################################################### | 
|  | def svalid_file_path(var_value, | 
|  | var_name=""): | 
|  |  | 
|  | r""" | 
|  | Return an empty string if var_value is a valid file path.  Otherwise, | 
|  | return an error string. | 
|  |  | 
|  | Description of arguments: | 
|  | var_value                       The value being validated. | 
|  | var_name                        The name of the variable whose value is | 
|  | passed in var_value.  This parameter is | 
|  | normally unnecessary as this function can | 
|  | figure out the var_name.  This is provided | 
|  | for Robot callers.  In this scenario, we | 
|  | are unable to get the variable name | 
|  | ourselves. | 
|  | """ | 
|  |  | 
|  | error_message = "" | 
|  | if not os.path.isfile(str(var_value)): | 
|  | if var_name is "": | 
|  | stack_index = 3 | 
|  | var_name = gp.get_arg_name(0, 1, stack_index) | 
|  | error_message += "Invalid file (does not exist):\n" +\ | 
|  | gp.sprint_varx(var_name, var_value) | 
|  |  | 
|  | return error_message | 
|  |  | 
|  | ############################################################################### | 
|  |  | 
|  |  | 
|  | ############################################################################### | 
|  | def valid_file_path(var_value, | 
|  | var_name=""): | 
|  |  | 
|  | r""" | 
|  | Return True if var_value is a valid integer.  Otherwise, return False and | 
|  | print an error message to stderr. | 
|  |  | 
|  | Description of arguments: | 
|  | (See description of arguments for svalid_value (above)). | 
|  | """ | 
|  |  | 
|  | error_message = svalid_file_path(var_value, var_name) | 
|  |  | 
|  | if not error_message == "": | 
|  | gp.print_error_report(error_message) | 
|  | return False | 
|  |  | 
|  | return True | 
|  |  | 
|  | ############################################################################### |