def getvalues(self):
idx = <NUM_LIT:0><EOL>generator = self._generator_func()<EOL>first_value = next(generator)<EOL>self._value_type = type(first_value)<EOL>yield first_value<EOL>for idx, value in enumerate(generator):<EOL><INDENT>if not isinstance(value, self._value_type):<EOL><INDENT>raise TypeError(<EOL>"<STR_LIT>"<EOL>"<STR_LIT>"<EOL>"<STR_LIT>" %<EOL>(self._value_type, value, repeated.value_type(value)))<EOL><DEDENT>self._watermark = max(self._watermark, idx + <NUM_LIT:1>)<EOL>yield value<EOL><DEDENT>if idx + <NUM_LIT:1> < self._watermark:<EOL><INDENT>raise ValueError(<EOL>"<STR_LIT>"<EOL>"<STR_LIT>"<EOL>"<STR_LIT>" %<EOL>(self, self._watermark, idx + <NUM_LIT:1>, self._generator_func))<EOL><DEDENT>if self._count is not None and self._watermark >= self._count:<EOL><INDENT>raise ValueError(<EOL>"<STR_LIT>"<EOL>"<STR_LIT>"<EOL>"<STR_LIT>" %<EOL>(self, self._count - <NUM_LIT:1>, idx + <NUM_LIT:1>, self._generator_func))<EOL><DEDENT>self._count = self._watermark + <NUM_LIT:1><EOL>
Yields all the values from 'generator_func' and type-checks.

        Yields:
            Whatever 'generator_func' yields.

        Raises:
            TypeError: if subsequent values are of a different type than first
                value.

            ValueError: if subsequent iteration returns a different number of
                values than the first iteration over the generator. (This would
                mean 'generator_func' is not stable.)