Files
browser-use__browser-use/browser_use/llm/tests/test_mistral_schema.py
2025-11-28 13:21:19 +05:30

29 lines
797 B
Python

from pydantic import BaseModel, Field
from browser_use.llm.mistral.schema import MistralSchemaOptimizer
class NestedExample(BaseModel):
code: str = Field(..., min_length=2, max_length=4, pattern='[A-Z]+')
description: str
class RootExample(BaseModel):
item: NestedExample
email: str = Field(..., json_schema_extra={'format': 'email'})
def test_mistral_schema_strips_unsupported_keywords():
schema = MistralSchemaOptimizer.create_mistral_compatible_schema(RootExample)
def _assert_no_banned_keys(obj):
if isinstance(obj, dict):
for key, value in obj.items():
assert key not in {'minLength', 'maxLength', 'pattern', 'format'}
_assert_no_banned_keys(value)
elif isinstance(obj, list):
for item in obj:
_assert_no_banned_keys(item)
_assert_no_banned_keys(schema)