37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
|
|
from typing import List, Optional
|
||
|
|
|
||
|
|
from guardrails_ai.types import Validator as ValidatorReference, JSONSchema
|
||
|
|
|
||
|
|
from guardrails.classes.output_type import OutputTypes
|
||
|
|
from guardrails.classes.schema.processed_schema import ProcessedSchema
|
||
|
|
from guardrails.types.simple import SimpleTypes
|
||
|
|
from guardrails.validator_base import Validator
|
||
|
|
|
||
|
|
|
||
|
|
def primitive_to_schema(
|
||
|
|
validators: List[Validator],
|
||
|
|
*,
|
||
|
|
type: SimpleTypes = SimpleTypes.STRING,
|
||
|
|
description: Optional[str] = None,
|
||
|
|
) -> ProcessedSchema:
|
||
|
|
processed_schema = ProcessedSchema(validators=[], validator_map={})
|
||
|
|
|
||
|
|
# TODO: Update when we support other primitive types
|
||
|
|
processed_schema.output_type = OutputTypes.STRING
|
||
|
|
|
||
|
|
processed_schema.validators = [
|
||
|
|
ValidatorReference(
|
||
|
|
id=v.rail_alias,
|
||
|
|
on="$",
|
||
|
|
on_fail=v.on_fail_descriptor, # type: ignore
|
||
|
|
kwargs=v.get_args(),
|
||
|
|
)
|
||
|
|
for v in validators
|
||
|
|
]
|
||
|
|
processed_schema.validator_map = {"$": validators}
|
||
|
|
processed_schema.json_schema = JSONSchema(
|
||
|
|
type=type, description=description
|
||
|
|
).model_dump(exclude_none=True, by_alias=True)
|
||
|
|
|
||
|
|
return processed_schema
|