def add(self, item):
        """
        Add an item to the work queue.

        :param item: The work item to add.  An item may be of any
                     type; however, if it is not hashable, then the
                     work queue must either be initialized with
                     ``unique`` set to ``False``, or a ``key``
                     callable must have been provided.
        """

        # Are we to uniquify work items?
        if self._unique:
            key = self._key(item) if self._key else item

            # If it already has been added to the queue, do nothing
            if key in self._seen:
                return

            self._seen.add(key)

        # Add the item to the queue
        self._work.append(item)

        # We'll keep a count of the number of items that have been
        # through the queue
        self._count += 1
Add an item to the work queue.

        :param item: The work item to add.  An item may be of any
                     type; however, if it is not hashable, then the
                     work queue must either be initialized with
                     ``unique`` set to ``False``, or a ``key``
                     callable must have been provided.