def text()

in google/generativeai/types/generation_types.py [0:0]


    def text(self):
        """A quick accessor equivalent to `self.candidates[0].content.parts[0].text`

        Raises:
            ValueError: If the candidate list or parts list does not contain exactly one entry.
        """
        parts = self.parts
        if not parts:
            candidate = self.candidates[0]

            fr = candidate.finish_reason
            FinishReason = protos.Candidate.FinishReason

            msg = (
                "Invalid operation: The `response.text` quick accessor requires the response to contain a valid "
                "`Part`, but none were returned. The candidate's "
                f"[finish_reason](https://ai.google.dev/api/generate-content#finishreason) is {fr}."
            )

            if fr is FinishReason.FINISH_REASON_UNSPECIFIED:
                raise ValueError(msg)
            elif fr is FinishReason.STOP:
                raise ValueError(msg)
            elif fr is FinishReason.MAX_TOKENS:
                raise ValueError(msg)
            elif fr is FinishReason.SAFETY:
                raise ValueError(
                    msg + f" The candidate's safety_ratings are: {candidate.safety_ratings}.",
                    candidate.safety_ratings,
                )
            elif fr is FinishReason.RECITATION:
                raise ValueError(
                    msg + " Meaning that the model was reciting from copyrighted material."
                )
            elif fr is FinishReason.LANGUAGE:
                raise ValueError(msg + " Meaning the response was using an unsupported language.")
            elif fr is FinishReason.OTHER:
                raise ValueError(msg)
            elif fr is FinishReason.BLOCKLIST:
                raise ValueError(msg)
            elif fr is FinishReason.PROHIBITED_CONTENT:
                raise ValueError(msg)
            elif fr is FinishReason.SPII:
                raise ValueError(msg + " SPII - Sensitive Personally Identifiable Information.")
            elif fr is FinishReason.MALFORMED_FUNCTION_CALL:
                raise ValueError(
                    msg + " Meaning that model generated a `FunctionCall` that was invalid. "
                    "Setting the "
                    "[Function calling mode](https://ai.google.dev/gemini-api/docs/function-calling#function_calling_mode) "
                    "to `ANY` can fix this because it enables constrained decoding."
                )
            else:
                raise ValueError(msg)

        texts = []
        for part in parts:
            if "text" in part:
                texts.append(part.text)
                continue
            if "executable_code" in part:
                language = part.executable_code.language.name.lower()
                if language == "language_unspecified":
                    language = ""
                else:
                    language = f" {language}"
                texts.extend([f"```{language}", part.executable_code.code.lstrip("\n"), "```"])
                continue
            if "code_execution_result" in part:
                outcome_result = part.code_execution_result.outcome.name.lower().replace(
                    "outcome_", ""
                )
                if outcome_result == "ok" or outcome_result == "unspecified":
                    outcome_result = ""
                else:
                    outcome_result = f" {outcome_result}"
                texts.extend([f"```{outcome_result}", part.code_execution_result.output, "```"])
                continue

            part_type = protos.Part.pb(part).WhichOneof("data")
            raise ValueError(f"Could not convert `part.{part_type}` to text.")

        return "\n".join(texts)