# This file was auto-generated by Fern from our API Definition.

import typing

from ..core import enum

T_Result = typing.TypeVar("T_Result")


class PatronusJudgeCriteria(enum.StrEnum):
    PATRONUS_ANSWER_REFUSAL = "patronus:answer-refusal"
    PATRONUS_NO_OPENAI_REFERENCE = "patronus:no-openai-reference"
    PATRONUS_IS_CONCISE = "patronus:is-concise"
    PATRONUS_NO_APOLOGIES = "patronus:no-apologies"
    PATRONUS_IS_POLITE = "patronus:is-polite"
    PATRONUS_IS_HELPFUL = "patronus:is-helpful"
    PATRONUS_CLINICALLY_INAPPROPRIATE_TONE = "patronus:clinically-inappropriate-tone"
    PATRONUS_NO_HARMFUL_THERAPEUTIC_GUIDANCE = "patronus:no-harmful-therapeutic-guidance"
    PATRONUS_IS_CODE = "patronus:is-code"
    PATRONUS_IS_CSV = "patronus:is-csv"
    PATRONUS_IS_JSON = "patronus:is-json"
    PATRONUS_NO_AGE_BIAS = "patronus:no-age-bias"
    PATRONUS_NO_GENDER_BIAS = "patronus:no-gender-bias"
    PATRONUS_NO_RACIAL_BIAS = "patronus:no-racial-bias"
    PATRONUS_PROMPT_INJECTION = "patronus:prompt-injection"

    def visit(
        self,
        patronus_answer_refusal: typing.Callable[[], T_Result],
        patronus_no_openai_reference: typing.Callable[[], T_Result],
        patronus_is_concise: typing.Callable[[], T_Result],
        patronus_no_apologies: typing.Callable[[], T_Result],
        patronus_is_polite: typing.Callable[[], T_Result],
        patronus_is_helpful: typing.Callable[[], T_Result],
        patronus_clinically_inappropriate_tone: typing.Callable[[], T_Result],
        patronus_no_harmful_therapeutic_guidance: typing.Callable[[], T_Result],
        patronus_is_code: typing.Callable[[], T_Result],
        patronus_is_csv: typing.Callable[[], T_Result],
        patronus_is_json: typing.Callable[[], T_Result],
        patronus_no_age_bias: typing.Callable[[], T_Result],
        patronus_no_gender_bias: typing.Callable[[], T_Result],
        patronus_no_racial_bias: typing.Callable[[], T_Result],
        patronus_prompt_injection: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is PatronusJudgeCriteria.PATRONUS_ANSWER_REFUSAL:
            return patronus_answer_refusal()
        if self is PatronusJudgeCriteria.PATRONUS_NO_OPENAI_REFERENCE:
            return patronus_no_openai_reference()
        if self is PatronusJudgeCriteria.PATRONUS_IS_CONCISE:
            return patronus_is_concise()
        if self is PatronusJudgeCriteria.PATRONUS_NO_APOLOGIES:
            return patronus_no_apologies()
        if self is PatronusJudgeCriteria.PATRONUS_IS_POLITE:
            return patronus_is_polite()
        if self is PatronusJudgeCriteria.PATRONUS_IS_HELPFUL:
            return patronus_is_helpful()
        if self is PatronusJudgeCriteria.PATRONUS_CLINICALLY_INAPPROPRIATE_TONE:
            return patronus_clinically_inappropriate_tone()
        if self is PatronusJudgeCriteria.PATRONUS_NO_HARMFUL_THERAPEUTIC_GUIDANCE:
            return patronus_no_harmful_therapeutic_guidance()
        if self is PatronusJudgeCriteria.PATRONUS_IS_CODE:
            return patronus_is_code()
        if self is PatronusJudgeCriteria.PATRONUS_IS_CSV:
            return patronus_is_csv()
        if self is PatronusJudgeCriteria.PATRONUS_IS_JSON:
            return patronus_is_json()
        if self is PatronusJudgeCriteria.PATRONUS_NO_AGE_BIAS:
            return patronus_no_age_bias()
        if self is PatronusJudgeCriteria.PATRONUS_NO_GENDER_BIAS:
            return patronus_no_gender_bias()
        if self is PatronusJudgeCriteria.PATRONUS_NO_RACIAL_BIAS:
            return patronus_no_racial_bias()
        if self is PatronusJudgeCriteria.PATRONUS_PROMPT_INJECTION:
            return patronus_prompt_injection()
