"""
Read the description of subclass TeamRoster below, and then add a str
method, including a docstring, to subclass TeamRoster. You do not need
examples in this docstring. Your str method should be used to display a list of
all items.

Assume TeamRoster.add() takes a list in the form [player number, name, weight]
where player number and weight are ints.

Context: an sports team system.
A team roster tracks players on a sports team, each one having their own
name and player number. Players are identified by their player number, and
they also have a weight in lbs such as 120. We must be able to display a list of
all players where each line of the list has the following format:
Player Number: <player number>, Name: <name>, Weight: <weight>
"""

class Roster:
    """
    Represents a roster of members.
    @param dict members: represents this roster’s members
    """
    def __init__(self) -> None:
        """
        Initialize new roster self.
        @param Roster self: this Roster
        @rtype: None
        """
        self.members = {}

    def add(self, member: tuple) -> None:
        """
        Add member to roster self.
        @param Roster self: this Roster
        @param tuple member: member record to add
        @rtype: None
        Assume:
        -- member is a tuple with member[0] not in self.members,
        -- len(member) > 1
        """
        self.members[member[0]] = member[1:]

    def remove(self, member: tuple) -> None:
        """
        Remove member from roster self.
        @param Roster self: this Roster
        @param tuple member: member record to be removed
        @rtype: None
        Assume:
        --member is a tuple with member[0] in self.members
        --len(member) > 1
        """
        del(self.members[member[0]])

    def __str__(self) -> str:
        """
        Return a string representation of the members of roster self.
        @param Roster self: this Roster
        @rtype: str
        """
        raise NotImplementedError

class TeamRoster(Roster):
    """
    Represents a roster of team players.
    """

    def __str__(self) -> str:
        """
        Return a string representation of the members of roster self.
        @param Roster self: this Roster
        @rtype: str
        """
        ret_str = ""
        for number in self.members:
            (name, weight) = self.members[number]
            ret_str += ("Player Number: {}, Name: {}, " +
                        "Weight: {}\n").format(str(number), name, weight)

        return ret_str[:-1] # Remove the last newline
