Source code for script_options.options_parsing

'''
----------------
options_parsing.py

A module containing common-use subroutines for options parsing in scripts. 
These are designed to be used with the argparse module that should be used for
all argument parsing from this point on!

Basically these are a bunch of custom callables that takes a single string 
argument and return a converted value for use with the 'type' option.

.. moduleauthor:: Nick Schurch <nschurch@dundee.ac.uk>
.. createdon:: 2013-04-05
----------------
'''

__version__ = "1.0"

import argparse, os, warnings

[docs]def input_path(string): ''' Checks to see if the string is a valid input path Returns the full path of the string if true, otherwise raise a custom exception. ''' # try and cast string to a string if it isn't already! if type(string) is not str: raise TypeError("The value passed to input_path is not a string. " \ "value: %s, type: %s" % (str(string), type(string)) ) # resolve relative paths to a full path path = os.path.abspath(string) if os.path.exists(path): return(path) else: msg = "The path specified (%s) does not exist.\nPlease specify a " \ "valid path. See -h|--help for help with running this script." \ "" % path raise argparse.ArgumentTypeError(msg)
[docs]def input_file(string): ''' Checks to see if the string is a valid input file Returns the full path of the string if true, otherwise raise a custom exception. ''' # try and cast string to a string if it isn't already! if type(string) is not str: raise TypeError("The value passed to input_file is not a string. " \ "value: %s, type: %s" % (str(string), type(string)) ) # resolve relative paths to a full path path = os.path.abspath(string) if os.path.isfile(path): return(path) else: msg = "The file specified (%s) does not exist.\nPlease specify a " \ "valid file. See -h|--help for help with running this script." \ "" % path raise argparse.ArgumentTypeError(msg)
[docs]def output_path(string): ''' Checks to see if the string is a valid output path; makes it if not''' # try and cast string to a string if it isn't already! if type(string) is not str: raise TypeError("The value passed to output_path is not a string. " \ "value: %s, type: %s" % (str(string), type(string)) ) # resolve relative paths to a full path path = os.path.abspath(string) if not os.path.exists(path): msg = "The path specified (%s), does not exist... creating it." % path warnings.warn(msg, UserWarning) os.makedirs(path) return(path)
[docs]def output_file(string): ''' Checks to see if the the dir of the string is a valid output path If not, it makes it and then returns the absolute path for the file''' # try and cast string to a string if it isn't already! if type(string) is not str: raise TypeError("The value passed to output_file is not a string. " \ "value: %s, type: %s" % (str(string), type(string)) ) # resolve relative paths to a full path path = os.path.dirname(os.path.abspath(string)) if not os.path.exists(path): msg = "The path (%s) for the specified file (%s), does not exist... " \ "creating it." % (path, os.path.basename(string)) warnings.warn(msg, UserWarning) os.makedirs(path) filepath = os.path.join(path, os.path.basename(string)) return(filepath)