import enum import importlib import json import os from typing import Dict, List, Optional, Union import pytest from pydantic import BaseModel, Field from guardrails_ai.types import Guard as IGuard import guardrails as gd from guardrails.actions.reask import SkeletonReAsk from guardrails.classes.generic.stack import Stack from guardrails.classes.llm.llm_response import LLMResponse from guardrails.classes.validation_outcome import ValidationOutcome from guardrails_ai.types import FailResult from guardrails_ai.types import Validator as ValidatorReference from guardrails.guard import Guard from guardrails.actions.reask import FieldReAsk from tests.integration_tests.test_assets.validators import ( RegexMatch, ValidLength, ValidChoices, LowerCase, OneLine, ) from .mock_llm_outputs import ( MockLiteLLMCallableOther, entity_extraction, lists_object, ) from .test_assets import pydantic, string @pytest.fixture(scope="module") def rail_spec(): return """