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

Assume StoreRoster.add() takes a list in the form [item number, name,
quantity] where item number is an int.

Context: an store inventory system.
A story tracks items that are for sale, each one at its own price. Items are
identified by the item numer, and they also have a name such as "Soda". Each
item also has a quantity representing how many of that item are in the
store. We must be able to display a list of all items where each line of
the list has the following format:
Item Number: <item number>, Name: <name>, Quantity: <quantity>
"""

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 StoreRoster(Roster):
    """
    Represents a roster of inventory items.
    """

    def __str__(self) -> str:
        """
        Return a string representation of the members of InventoryRoster self.

        @param InventoryRoster self: this InventoryRoster
        @rtype str
        """
        ret_str = ""
        for number in self.members:
            (name, quantity) = self.members[number]
            ret_str += ("Item Number: {}, Name: {}, " +
                        "Quantity: {}\n").format(str(number), name, quantity)

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