Source code for pyrk.inp.validation

from utilities.ur import units
import sys
if sys.version_info > (3,):
    long = int

[docs]def validate_ge(valname, val, llim): """Raises errors if the value is less than the lower limit (llim) or if it is of the wrong type :param valname: the name of the value being validated :type valname: string :param val: the value to be validated :type val: should be a number (or pint.Quantity) :param llim: the lower limit of acceptable value for val :type llim: the same type as val """ if validate_num(valname, val) < llim: msg = valname + " must be greater than or equal to " msg += str(llim) + ".\n" msg += "The value provided was : " msg += str(val) raise ValueError(msg) else: return val
[docs]def validate_g(valname, val, llim): """Raises errors if the value is less than the lower limit (llim) or if it is of the wrong type :param valname: the name of the value being validated :type valname: string :param val: the value to be validated :type val: should be a number (or pint.Quantity) :param llim: the lower limit of acceptable value for val :type llim: the same type as val """ if not validate_num(valname, val) > llim: msg = valname + " must be greater than" msg += str(llim) + ".\n" msg += "The value provided was : " msg += str(val) raise ValueError(msg) else: return val
[docs]def validate_le(valname, val, ulim): """Raises errors if the value is greater than the upper limit (ulim) or if it is of the wrong type :param valname: the name of the value being validated :type valname: string :param val: the value to be validated :type val: should be a number (or pint.Quantity) :param ulim: the upper limit of acceptable value for val :type ulim: the same type as val """ if validate_num(valname, val) > ulim: msg = valname + " must be less than or equal to " msg += str(ulim) + ".\n" msg += "The value provided was : " msg += str(val) raise ValueError(msg) return val
[docs]def validate_num(valname, val): """Checks that val is a number :param valname: the name of the value being validated :type valname: string :param val: the value to be validated :type val: should be a number (or pint.Quantity) """ if isinstance(val, (int, long, float, units.Quantity)): return val else: try: if isinstance(val.magnitude, (int, long, float, units.Quantity)): return val except AttributeError: pass msg = valname + " must be an integer, long, float, or Quantity.\n" msg += "The value provided was of type " + str(type(val)) msg += " and value " msg += str(val) raise TypeError(msg)
[docs]def validate_not_none(valname, val): """Checks that val is not None :param valname: the name of the value being validated :type valname: string :param val: the value to be validated :type val: any """ if val is not None: return val else: msg = valname + " must be instantiated with a non null value.\n" msg += "The value provided was None" raise TypeError(msg)
[docs]def validate_supported(valname, val, supported): """Checks that val is not None :param valname: the name of the value being validated :type valname: string :param val: the value to be validated :type val: any :param supported: a list or tuple of allowed values for val :type supported: list, tuple, anything with "in" functionality """ if val in supported: return val else: msg = valname + " must be instantiated with a value in the list:\n" msg += str(supported) msg += "\nThe value provided was " msg += str(val) raise ValueError(msg)