Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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