def __init__(self, name, age=None, gender=None, email=None, length_unit='mile'): """ Constructor :param name: :type name: str :param age: years only :type age: int :param gender: for now anything :type gender: str :param email: Should be a valid email address :type email: str :param length_unit: preferred and valid length unit :type length_unit: str """ where_am_i = 'FirstRunner.__init__' if not isinstance(name, basestring): raise TypeError(where_am_i + ' - name must be a string') if age is not None: if not isinstance(age, int): raise TypeError(where_am_i + ' - age must be an integer') if age <= 0: raise ValueError(where_am_i + ' - age must be positive') if gender is not None: if not isinstance(gender, basestring): raise TypeError(where_am_i + ' - gender must be a string') # for now no limit on gender but if the plan has gender related instructions then we might post a warning # when a gender is not recognized by the plan if not isinstance(length_unit, basestring): raise TypeError(where_am_i + ' - length_unit is expected to be a string') if not FirstDistance.is_valid_unit(length_unit): raise ValueError(where_am_i + ' - length unit not recognized') if FirstUtils.is_internet_on(): from validate_email import validate_email if email is not None and not validate_email(email=email): raise ValueError(where_am_i + ' - invalid email address') self.name = name self.age = age self.gender = gender self.email = email self.length_unit = length_unit
def __init__(self, name, distance, unit): """ Constructor :param name: like Marathon :type name: str :param distance: distance value :type distance: float :param unit: length unit :type unit: str :return: instance of FirstRaceType :rtype: FirstRaceType """ where_am_i = 'FirstRace.__init__' if not FirstDistance.is_valid_unit(unit): raise ValueError(where_am_i + ' - "%1s" is not a valid length unit' % unit) self.name = name self.distance = FirstDistance(distance=distance, unit=unit)
def __init__(self, minutes=0, seconds=0, length_unit='mile'): """ Constructor :param minutes: :type minutes: int :param seconds: :type seconds: int :param length_unit: :type length_unit: str :return: instance of FirstPace :rtype: FirstPace """ where_am_i = 'FirstPace.__init__' if not FirstDistance.is_valid_unit(length_unit): raise ValueError(where_am_i + ' - "%1s" is not a valid length unit' % length_unit) self.time = FirstTime(minutes=minutes, seconds=seconds) self.length_unit = length_unit
def from_string(cls, str_input): """ Constructor: Instantiate FirstPace from a string input :param str_input: format - '0:MM:SS per unit' :type str_input: str :return: instance of FirstPace :rtype: FirstPace """ where_am_i = 'FirstPace.from_string' tokens = str_input.split() p_time = FirstTime.from_string(tokens[0]) # pass the exception on length_unit = tokens[-1] if not FirstDistance.is_valid_unit(unit=tokens[-1]): raise ValueError(where_am_i + ' - "%1s" is not a valid length unit' % length_unit) return cls(minutes=p_time.seconds//60, seconds=p_time.seconds % 60, length_unit=length_unit)
def __init__(self, minutes: int = 0, seconds: int = 0, length_unit: str = 'mile'): """ Constructor :param minutes: :type minutes: int :param seconds: :type seconds: int :param length_unit: :type length_unit: str :return: instance of FirstPace :rtype: FirstPace """ if not FirstDistance.is_valid_unit(unit=length_unit): raise ValueError( '"{}" is not a valid length unit'.format(length_unit)) self.time = FirstTime(minutes=minutes, seconds=seconds) self.length_unit = length_unit