Unverified Commit 21f1fc9d authored by mvdbeek's avatar mvdbeek
Browse files

Use safe field names and alias to handle `_` parameter names

parent ad1591eb
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -145,10 +145,16 @@ class ParamModel(Protocol):
        ...


def safe_field_name(name: str) -> str:
    if name.startswith("_"):
        return f"X{name}"
    return name


def dynamic_model_information_from_py_type(
    param_model: ParamModel, py_type: Type, requires_value: Optional[bool] = None, validators=None
):
    name = param_model.name
    name = safe_field_name(param_model.name)
    if requires_value is None:
        requires_value = param_model.request_requires_value
    initialize = ... if requires_value else None
@@ -159,7 +165,7 @@ def dynamic_model_information_from_py_type(

    return DynamicModelInformation(
        name,
        (py_type, initialize),
        (py_type, Field(initialize, alias=param_model.name if param_model.name != name else None)),
        validators,
    )

@@ -1520,8 +1526,8 @@ def create_field_model(

    for input_model in tool_parameter_models:
        input_model = to_simple_model(input_model)
        input_name = input_model.name
        pydantic_request_template = input_model.pydantic_template(state_representation)
        input_name = pydantic_request_template.name
        kwd[input_name] = pydantic_request_template.definition
        input_validators = pydantic_request_template.validators
        for validator_name, validator_callable in input_validators.items():